installationservices/swi/source/sisregistry/common/controllerinfo.h
changeset 0 ba25891c3a9e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/source/sisregistry/common/controllerinfo.h	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,137 @@
+/*
+* 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: 
+* CControllerInfo - a class associating a hash value and a version. 
+* It is used to contain the hash value  and the verion of a particular sis controller  
+*
+*/
+
+
+/**
+ @file 
+ @released
+ @internalComponent
+*/
+
+#ifndef __CONTROLLERINFO_H__
+#define __CONTROLLERINFO_H__
+
+#include <e32base.h>
+
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+#include "scrhelperutil.h"
+#endif
+
+class RReadStream;
+class RWriteStream;
+
+namespace Swi
+{
+class CHashContainer;
+
+class CControllerInfo : public CBase
+	{
+public:
+	IMPORT_C static CControllerInfo* NewL(TVersion aVersion, 
+		const CHashContainer& aHashContainer, TInt aOffset);
+	IMPORT_C static CControllerInfo* NewLC(TVersion aVersion, 
+		const CHashContainer& aHashContainer, TInt aOffset);
+
+	IMPORT_C static CControllerInfo* NewL(RReadStream& aStream);
+	IMPORT_C static CControllerInfo* NewLC(RReadStream& aStream);
+	
+	IMPORT_C static CControllerInfo* NewL(const CControllerInfo& aControllerInfo);
+	IMPORT_C static CControllerInfo* NewLC(const CControllerInfo& aControllerInfo);
+	
+ 	/* This set of contructors effectively deprecated */
+ 
+ 	IMPORT_C static CControllerInfo* NewL(TVersion aVersion, const CHashContainer& aHashContainer);
+ 	IMPORT_C static CControllerInfo* NewLC(TVersion aVersion, const CHashContainer& aHashContainer);
+ 
+	virtual ~CControllerInfo();
+	
+	/**
+	 * Write the object content to a stream 
+	 *
+	 * @param aStream The stream to write to
+	 */
+	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+	
+	/**
+	 * Read the object content from a stream - initialize from a stream
+	 *
+	 * @param aStream The stream to read from
+	 */
+	IMPORT_C void InternalizeL(RReadStream& aStream);
+	
+	/**
+	 * Provides the version of the controller object
+	 *
+	 * @return The version of the controller object
+	 */
+	TVersion Version() const;
+ 	
+ 	/**
+ 	 * Provides the offset in the registry entry this controller is stored at
+ 	 *
+ 	 *
+ 	 * @return The offset of the controller in the registry
+ 	 *
+ 	 */
+ 	TInt Offset() const;
+ 	
+	/**
+	 * Provides constant reference to the hash container of the controller object
+	 *
+	 * @return constant reference to the hash container of the controller object
+	 */
+	const CHashContainer& HashContainer() const;
+
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+public: // Friend Functions
+	friend void ScrHelperUtil::WriteToScrL(Usif::RSoftwareComponentRegistry& aScrSession, const Usif::TComponentId aCompId, CControllerInfo& aControllerInfo, TInt aIndex);
+	friend void ScrHelperUtil::ReadFromScrL(Usif::RSoftwareComponentRegistry& aScrSession, const Usif::TComponentId aCompId, CControllerInfo*& aControllerInfo, TInt aIndex);
+#endif
+	
+private:
+ 	CControllerInfo(TVersion aVersion, TInt aOffset);
+	CControllerInfo();
+	
+	void ConstructL(const CHashContainer& aHashContainer);
+	void ConstructL(RReadStream& aReadStream);
+	void ConstructL(const CControllerInfo& aControllerInfo);
+	
+private:
+	TVersion iVersion;
+ 	TInt iOffset;	
+	CHashContainer* iHashContainer;
+	};
+
+inline TVersion CControllerInfo::Version() const
+	{
+	return iVersion;
+	}
+
+inline TInt CControllerInfo::Offset() const
+ 	{
+ 	return iOffset;
+ 	}
+
+inline const CHashContainer& CControllerInfo::HashContainer() const
+	{
+	return *iHashContainer;
+	}
+
+} // namespace
+#endif //__CONTROLLERINFO_H__