installationservices/swi/source/sisfile/swtypereginfo.cpp
branchRCL_3
changeset 65 7333d7932ef7
parent 34 741e5bba2bd1
child 66 8b7f4e561641
--- a/installationservices/swi/source/sisfile/swtypereginfo.cpp	Thu Aug 19 10:02:49 2010 +0300
+++ b/installationservices/swi/source/sisfile/swtypereginfo.cpp	Tue Aug 31 15:21:33 2010 +0300
@@ -17,239 +17,49 @@
 
 
 #include "swtypereginfo.h"
-
+#include "arrayutils.h"
+#include "ipcutil.h"
 using namespace Swi;
 
-CLocalizedSoftwareTypeName::CLocalizedSoftwareTypeName()
-	{
-	}
-
-CLocalizedSoftwareTypeName::CLocalizedSoftwareTypeName(TLanguage aLocale)
-	:	iLocale(aLocale)
-	{
-	}
-
-EXPORT_C CLocalizedSoftwareTypeName::~CLocalizedSoftwareTypeName()
-	{
-	delete iName;
-	}
-
-EXPORT_C CLocalizedSoftwareTypeName* CLocalizedSoftwareTypeName::NewL(const TDesC& aName, TLanguage aLocale)
-	{
-	CLocalizedSoftwareTypeName *self = CLocalizedSoftwareTypeName::NewLC(aName, aLocale);
-	CleanupStack::Pop(self);
-	return self;
-	}
-
-EXPORT_C CLocalizedSoftwareTypeName* CLocalizedSoftwareTypeName::NewLC(const TDesC& aName, TLanguage aLocale)
-	{
-	CLocalizedSoftwareTypeName *self = new(ELeave) CLocalizedSoftwareTypeName(aLocale);
-	CleanupStack::PushL(self);
-	self->iName = aName.AllocL();
-	return self;
-	}
-
-EXPORT_C CLocalizedSoftwareTypeName* CLocalizedSoftwareTypeName::NewL(RReadStream& aStream)
-	{
-	CLocalizedSoftwareTypeName* self = new(ELeave) CLocalizedSoftwareTypeName();
-	CleanupStack::PushL(self);
-	self->InternalizeL(aStream);
-	CleanupStack::Pop(self);
-	return self;
-	}
-
-EXPORT_C void CLocalizedSoftwareTypeName::ExternalizeL(RWriteStream& aStream) const
-	{
-	aStream.WriteInt32L(iLocale);
-	aStream << *iName;
-	}
-
-void CLocalizedSoftwareTypeName::InternalizeL(RReadStream& aStream)
-	{
-	TLanguage locale = static_cast<TLanguage>(aStream.ReadInt32L());
-	iLocale = locale;
-
-	delete iName;
-	iName = HBufC::NewL(aStream, KMaxTInt); // No restriction on length
-	}
-
-// ##########################################################################################
-
-EXPORT_C CSoftwareTypeRegInfo* CSoftwareTypeRegInfo::NewL(const TDesC& aUniqueSoftwareTypeName)
-	{
-	CSoftwareTypeRegInfo* self = new (ELeave) CSoftwareTypeRegInfo();
-	CleanupStack::PushL(self);
-	self->iUniqueSoftwareTypeName = HBufC::NewL(aUniqueSoftwareTypeName.Length());
-	self->iUniqueSoftwareTypeName->Des().Copy(aUniqueSoftwareTypeName);
-	CleanupStack::Pop(self);
-	return self;
-	}
-
-EXPORT_C CSoftwareTypeRegInfo* CSoftwareTypeRegInfo::NewL(RReadStream& aStream)
-	{
-	CSoftwareTypeRegInfo* self = new (ELeave) CSoftwareTypeRegInfo();
-	CleanupStack::PushL(self);
-	self->InternalizeL(aStream);
-	CleanupStack::Pop(self);
-	return self;
-	}
-
-CSoftwareTypeRegInfo::CSoftwareTypeRegInfo()
-	{
-	}
-
-EXPORT_C CSoftwareTypeRegInfo::~CSoftwareTypeRegInfo()
-	{
-	delete iUniqueSoftwareTypeName;
-	iMimeTypes.Close();
-	iLocalizedSoftwareTypeNames.Close();
-	}
-
-EXPORT_C void CSoftwareTypeRegInfo::ExternalizeL(RWriteStream& aStream) const
-	{
-	aStream << *iUniqueSoftwareTypeName;
-	aStream << iSifPluginUid.iUid;
-	
-	TUid installerUid = iInstallerSecureId;
-	aStream << installerUid.iUid;
-	
-	TUid executionLayerUid = iExecutionLayerSecureId;
-	aStream << executionLayerUid.iUid;
-	
-	// MIME types
-	const TInt numMimeTypes = iMimeTypes.Count();
-	aStream.WriteInt32L(numMimeTypes);
-	for (TInt i=0; i<numMimeTypes; ++i)
-		{
-		aStream << *iMimeTypes[i];
-		}
-	 
-	// Localized names
-	const TInt numLocalizedNames = iLocalizedSoftwareTypeNames.Count();
-	aStream.WriteInt32L(numLocalizedNames);
-	for (TInt i=0; i<numLocalizedNames; ++i)
-		{
-		aStream << *iLocalizedSoftwareTypeNames[i];
-		}
-	}
-
-EXPORT_C TInt CSoftwareTypeRegInfo::ExternalizedSize() const
-	{
-	TInt size = sizeof(TUid) + sizeof(TSecureId) + sizeof(TSecureId);
-	size += sizeof(TInt) + iUniqueSoftwareTypeName->Size();
-	
-	// MIME types
-	const TInt numMimeTypes = iMimeTypes.Count();
-	size += sizeof(TInt);
-	for (TInt i=0; i<numMimeTypes; ++i)
-		{
-		size += sizeof(TInt) + iMimeTypes[i]->Size();
-		}
-	 
-	// Localized names
-	const TInt numLocalizedNames = iLocalizedSoftwareTypeNames.Count();
-	size += sizeof(TInt);
-	for (TInt i=0; i<numLocalizedNames; ++i)
-		{
-		size += sizeof(TInt) + sizeof(TInt) + iLocalizedSoftwareTypeNames[i]->Name().Size();
-		}
-
-	return size;
-	}
-
-void CSoftwareTypeRegInfo::InternalizeL(RReadStream& aStream)
-	{
-	ASSERT(iUniqueSoftwareTypeName == NULL);
-	
-	iUniqueSoftwareTypeName = HBufC::NewL(aStream, EUniqueSwTypeNameMaxLength);
-	
-	iSifPluginUid = TUid::Uid(aStream.ReadInt32L());
-	iInstallerSecureId = TUid::Uid(aStream.ReadInt32L());
-	iExecutionLayerSecureId = TUid::Uid(aStream.ReadInt32L());
-	
-	// MIME types
-	const TInt numMimeTypes = aStream.ReadInt32L();
-	for (TInt i=0; i<numMimeTypes; ++i)
-		{
-		HBufC* mimeType = HBufC::NewLC(aStream, EUniqueSwTypeNameMaxLength);
-		iMimeTypes.AppendL(mimeType);
-		CleanupStack::Pop(mimeType);
-		}
-	
-	// Localized names
-	const TInt numLocalizedNames = aStream.ReadInt32L();
-	for (TInt i=0; i<numLocalizedNames; ++i)
-		{
-		CLocalizedSoftwareTypeName* name = CLocalizedSoftwareTypeName::NewL(aStream);
-		CleanupStack::PushL(name);
-		iLocalizedSoftwareTypeNames.AppendL(name);
-		CleanupStack::Pop(name);
-		}
-	}
-
-EXPORT_C void CSoftwareTypeRegInfo::SetMimeTypeL(const TDesC& aMimeType)
-	{
-	HBufC* mimeType = HBufC::NewLC(aMimeType.Length());
-	mimeType->Des().Copy(aMimeType);
-	iMimeTypes.AppendL(mimeType);
-	CleanupStack::Pop(mimeType);
-	}
-
-EXPORT_C void CSoftwareTypeRegInfo::SetLocalizedSoftwareTypeNameL(TLanguage aLanguage, const TDesC& aName)
-	{
-	CLocalizedSoftwareTypeName* name = CLocalizedSoftwareTypeName::NewLC(aName, aLanguage);
-	iLocalizedSoftwareTypeNames.AppendL(name);
-	CleanupStack::Pop(name);
-	}
-
-// ##########################################################################################
-
-EXPORT_C void SoftwareTypeRegInfoUtils::SerializeArrayL(const RPointerArray<CSoftwareTypeRegInfo>& aSwTypeRegInfoArray, RBuf8& aSerializedArray)
+EXPORT_C void SoftwareTypeRegInfoUtils::SerializeArrayL(const RPointerArray<Usif::CSoftwareTypeRegInfo>& aSwTypeRegInfoArray, RBuf8& aSerializedArray)
 	{
 	TInt bufLen = sizeof(TInt);
 	const TInt count = aSwTypeRegInfoArray.Count();
 	for (TInt i=0; i<count; ++i)
-		{
-		bufLen += aSwTypeRegInfoArray[i]->ExternalizedSize();
-		}
+	    {
+	    bufLen += GetObjectSizeL(aSwTypeRegInfoArray[i]);
+	    }
 
 	aSerializedArray.ReAllocL(aSerializedArray.Length()+bufLen);
 	RDesWriteStream ws(aSerializedArray);
 	CleanupClosePushL(ws);
 
-	ws.WriteInt32L(count);
-	for (TInt i=0; i<count; ++i)
-		{
-		const CSoftwareTypeRegInfo& info = *aSwTypeRegInfoArray[i];
-		ws << info;
-		}
+	ExternalizePointerArrayL(aSwTypeRegInfoArray, ws);
 
 	ws.CommitL();
 	CleanupStack::PopAndDestroy(&ws);
 	}
 
-EXPORT_C void SoftwareTypeRegInfoUtils::UnserializeArrayL(RReadStream& aStream, RPointerArray<CSoftwareTypeRegInfo>& aSwTypeRegInfoArray)
+EXPORT_C void SoftwareTypeRegInfoUtils::UnserializeArrayL(RReadStream& aStream, RPointerArray<Usif::CSoftwareTypeRegInfo>& aSwTypeRegInfoArray)
 	{
-	CleanupResetAndDestroyPushL(aSwTypeRegInfoArray);
 	const TInt numElems = aStream.ReadInt32L();
 	for (TInt i=0; i<numElems; ++i)
 		{
-		CSoftwareTypeRegInfo* info = CSoftwareTypeRegInfo::NewL(aStream);
+		Usif::CSoftwareTypeRegInfo* info = Usif::CSoftwareTypeRegInfo::NewL(aStream);
 		CleanupStack::PushL(info);
 		aSwTypeRegInfoArray.AppendL(info);
 		CleanupStack::Pop(info);
 		}
-	CleanupStack::Pop(&aSwTypeRegInfoArray);
 	}
 
-EXPORT_C void SoftwareTypeRegInfoUtils::SerializeUniqueSwTypeNamesL(const RPointerArray<CSoftwareTypeRegInfo>& aSwTypeRegInfoArray, RBuf& aSerializedNames)
+EXPORT_C void SoftwareTypeRegInfoUtils::SerializeUniqueSwTypeNamesL(const RPointerArray<Usif::CSoftwareTypeRegInfo>& aSwTypeRegInfoArray, RBuf& aSerializedNames)
 	{
 	const TInt numNames = aSwTypeRegInfoArray.Count();
 	
 	TInt bufLen = 0;
 	for (TInt i=0; i<numNames; ++i)
 		{
-		const CSoftwareTypeRegInfo& info = *aSwTypeRegInfoArray[i];
+		const Usif::CSoftwareTypeRegInfo& info = *aSwTypeRegInfoArray[i];
 		bufLen += info.UniqueSoftwareTypeName().Length() + sizeof(TChar);
 		}
 	
@@ -257,7 +67,7 @@
 	
 	for (TInt i=0; i<numNames; ++i)
 		{
-		const CSoftwareTypeRegInfo& info = *aSwTypeRegInfoArray[i];
+		const Usif::CSoftwareTypeRegInfo& info = *aSwTypeRegInfoArray[i];
 		aSerializedNames.Append(info.UniqueSoftwareTypeName());
 		aSerializedNames.Append(static_cast<TChar>(KUniqueNameSeparator));
 		}
@@ -265,7 +75,6 @@
 
 EXPORT_C void SoftwareTypeRegInfoUtils::UnserializeUniqueSwTypeNamesL(const TDesC& aSerializedNames, RArray<TPtrC>& aUniqueSwTypeNames)
 	{
-	CleanupClosePushL(aUniqueSwTypeNames);
 	TPtrC buf(aSerializedNames);
 	for (;;)
 		{
@@ -284,10 +93,9 @@
 			break;
 			}
 		}
-	CleanupStack::Pop(&aUniqueSwTypeNames);
 	}
 
-EXPORT_C void SoftwareTypeRegInfoUtils::ExtractMimeTypesL(const RPointerArray<CSoftwareTypeRegInfo>& aSwTypeRegInfoArray, RPointerArray<HBufC8>& aMimeTypes)
+EXPORT_C void SoftwareTypeRegInfoUtils::ExtractMimeTypesL(const RPointerArray<Usif::CSoftwareTypeRegInfo>& aSwTypeRegInfoArray, RPointerArray<HBufC8>& aMimeTypes)
 	{
 	for (TInt i=0; i<aSwTypeRegInfoArray.Count(); ++i)
 		{