--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/source/sisregistry/common/sisregistrydependency.cpp Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,162 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* SisRegistry - class CSisRegistryDependency implementation
+*
+*/
+
+
+/**
+ @file
+ @released
+ @internalComponent
+*/
+#include <s32strm.h>
+#include "sisregistrydependency.h"
+#include "sisdependency.h"
+#include "sisuid.h"
+#include "sisversionrange.h"
+#include "sisversion.h"
+#include "versionutil.h"
+
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+#include "scrhelperutil.h"
+#endif
+
+using namespace Swi;
+
+
+EXPORT_C CSisRegistryDependency* CSisRegistryDependency::NewL(const Sis::CDependency& aDependency)
+ {
+ CSisRegistryDependency* self = NewLC(aDependency);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+EXPORT_C CSisRegistryDependency* CSisRegistryDependency::NewLC(const Sis::CDependency& aDependency)
+ {
+ CSisRegistryDependency* self = new(ELeave) CSisRegistryDependency();
+ CleanupStack::PushL(self);
+ self->ConstructL(aDependency);
+ return self;
+ }
+
+EXPORT_C CSisRegistryDependency* CSisRegistryDependency::NewL(const CSisRegistryDependency& aDependency)
+ {
+ CSisRegistryDependency* self = NewLC(aDependency);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+EXPORT_C CSisRegistryDependency* CSisRegistryDependency::NewLC(const CSisRegistryDependency& aDependency)
+ {
+ CSisRegistryDependency* self = new(ELeave) CSisRegistryDependency();
+ CleanupStack::PushL(self);
+ self->ConstructL(aDependency);
+ return self;
+ }
+
+EXPORT_C CSisRegistryDependency* CSisRegistryDependency::NewL(RReadStream& aStream)
+ {
+ CSisRegistryDependency* self = NewLC(aStream);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+EXPORT_C CSisRegistryDependency* CSisRegistryDependency::NewLC(RReadStream& aStream)
+ {
+ CSisRegistryDependency* self = new(ELeave) CSisRegistryDependency();
+ CleanupStack::PushL(self);
+ self->ConstructL(aStream);
+ return self;
+ }
+
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+EXPORT_C CSisRegistryDependency* CSisRegistryDependency::NewL(const TUid aUid, const TVersion aFromVersion, const TVersion aToVersion)
+ {
+ CSisRegistryDependency* self = NewLC(aUid, aFromVersion, aToVersion);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+EXPORT_C CSisRegistryDependency* CSisRegistryDependency::NewLC(const TUid aUid, const TVersion aFromVersion, const TVersion aToVersion)
+ {
+ CSisRegistryDependency* self = new(ELeave) CSisRegistryDependency();
+ CleanupStack::PushL(self);
+ self->ConstructL(aUid, aFromVersion, aToVersion);
+ return self;
+ }
+#endif
+
+CSisRegistryDependency::CSisRegistryDependency():
+ iFromVersion(KIrrelevant, KIrrelevant, KIrrelevant),
+ iToVersion(KIrrelevant, KIrrelevant, KIrrelevant)
+ {
+ }
+
+void CSisRegistryDependency::ConstructL(const Sis::CDependency& aDependency)
+ {
+ iUid = aDependency.Uid().Uid();
+
+ // from version
+ Set(iFromVersion, aDependency.VersionRange()->From());
+ // to version
+ // if there is to version; then get it; otherwise specify it as KIrrelevant
+ if (aDependency.VersionRange()->To()!=NULL)
+ {
+ Set(iToVersion, *(aDependency.VersionRange()->To()));
+ }
+ }
+
+void CSisRegistryDependency::ConstructL(const CSisRegistryDependency& aDependency)
+ {
+ iUid = aDependency.Uid();
+ iFromVersion = aDependency.iFromVersion;
+ iToVersion = aDependency.iToVersion;
+ }
+
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+void CSisRegistryDependency::ConstructL(const TUid aUid, const TVersion aFromVersion, const TVersion aToVersion)
+ {
+ iUid = aUid;
+ iFromVersion = aFromVersion;
+ iToVersion = aToVersion;
+ }
+#endif
+
+void CSisRegistryDependency::ConstructL(RReadStream& aStream)
+ {
+ InternalizeL(aStream);
+ }
+
+EXPORT_C void CSisRegistryDependency::InternalizeL(RReadStream& aStream)
+ {
+ iUid.iUid = aStream.ReadInt32L();
+
+ aStream >> iFromVersion;
+ aStream >> iToVersion;
+ }
+
+EXPORT_C void CSisRegistryDependency::ExternalizeL(RWriteStream& aStream) const
+ {
+ aStream.WriteInt32L(iUid.iUid);
+
+ aStream << iFromVersion;
+ aStream << iToVersion;
+ }
+
+EXPORT_C TBool CSisRegistryDependency::IsCompatible(const TVersion& aVersion) const
+ {
+ return ((aVersion >= iFromVersion)&&(aVersion <= iToVersion));
+ }