epoc32/include/ecom/implementationinformation.h
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
child 4 837f303aceeb
--- a/epoc32/include/ecom/implementationinformation.h	Tue Nov 24 13:55:44 2009 +0000
+++ b/epoc32/include/ecom/implementationinformation.h	Tue Mar 16 16:12:26 2010 +0000
@@ -1,1 +1,185 @@
-implementationinformation.h
+// Copyright (c) 1997-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 "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This file contains the definition of
+// the CImplementationInformation class.
+// 
+//
+
+
+
+#ifndef __IMPLEMENTATIONINFORMATION_H__
+#define __IMPLEMENTATIONINFORMATION_H__
+
+#include <s32std.h>
+#include <f32file.h>
+
+// ____________________________________________________________________________________
+// 
+/**
+CImplementationInformation
+
+This class acts as the container for the registration data 
+relating to a particular Interface Implementation.
+Note that this class is used in both the ECOM client and server side,
+For the client side only the API used to extract the registration data
+should be used.
+	
+It is available to the client to allow access to the
+registered characteristics of the implementation.
+These characteristics are:
+
+ImplementationUid() The Uid of this implementation.
+
+Version()			The version number of this implementation.
+
+DisplayName()		The human readable name for this implementation returned 
+					as a 16 bit descriptor.
+
+DataType()			The data type which this implementation supports, returned
+					as an 8 bit descriptor.
+
+OpaqueData()		The opaque data which is registered for this implementation,
+					returned as an 8 bit descriptor.
+
+RomOnly()			The flag indicating whether this implementation is to be loaded
+					from ROM only.
+
+RomBased()			The flag recording whether this implementation is on ROM or is
+					a later version of one on ROM.
+					
+VendorId()  		The Vendor ID of the plug-in which this implementation belongs to
+
+@publishedAll
+@released
+*/
+
+NONSHARABLE_CLASS(CImplementationInformation) : public CBase
+	{
+public:
+	
+	static CImplementationInformation* NewLC(TBool aClientSide,RReadStream& aStream);
+	
+	static CImplementationInformation* NewL(TUid	aUid, 
+											TInt	aVersion, 
+											HBufC*  aName,
+											HBufC8* aDataType,
+											HBufC8* aOpaqueData,
+											TDriveUnit aDrive,
+											TBool aRomOnly,
+											TBool aRomBased);
+	
+	~CImplementationInformation();
+	
+	inline const TDesC& DisplayName() const;
+	
+	inline const TDesC8& DataType() const;
+	
+	inline const TDesC8& OpaqueData() const;
+	
+	inline TUid ImplementationUid() const;
+	
+	inline TInt Version() const;
+	
+	inline TBool Disabled() const;
+	
+	//This function should not be used by any ECOM client as it will have no effect 
+	//at all on the implementation information stored in the server side.
+	inline void SetDisabled(TBool aDisabled);
+	
+	void ExternalizeL(TBool aClientSide,RWriteStream& aStream) const;
+	
+	void InternalizeL(TBool aClientSide,RReadStream& aStream);
+	inline TDriveUnit Drive() const;
+	inline TBool RomOnly() const;
+	inline TBool RomBased() const;
+	void SetRomBased(TBool aRomBased);
+	inline TVendorId VendorId() const;
+	void SetDrive(TDriveUnit aDrive);
+	
+public:
+	// The following function is categorised as @internalComponent 
+	//and should not be used by ECOM clients.
+ 	inline void SetVendorId(const TVendorId aVid);
+ 	
+private:
+	
+	CImplementationInformation();
+	
+	CImplementationInformation(TUid aUid, 
+							   TInt aVersion, 
+							   HBufC*  aName, 
+							   HBufC8* aDataType,
+							   HBufC8* aOpaqueData,
+							   TDriveUnit aDrive,
+							   TBool aRomOnly,
+							   TBool aRomBased);
+
+private:
+	/** The implementation UID */
+	
+	TUid		iImplementationUid;
+	/** The implementation version */
+	
+	TInt		iVersion;
+	/** This implementations human readable name intended for display in UI implementations */
+	
+	HBufC*		iDisplayName;
+	/** 
+		The type of data this implementation is registered to handle : 
+		Used for matching against the run-time cue provided by the client
+		during default interface implementation resolution.
+	*/
+	
+	HBufC8*		iData;
+	/** 
+		Data registered for this implementation which can be used by the client
+		during non-default resolution operations but is ignored by the framework. 
+	*/
+	
+	HBufC8*		iOpaqueData;
+	/** The flag recording if this implementation is disabled or enabled */ 
+	
+	TBool		iDisabled;
+	/** The drive that this plug-in resides on */ 
+	TDriveUnit		iDrive;
+	/** The flag recording whether this implementation may only be loaded 
+	from read-only internal media */
+	TBool iRomOnly;
+	/** This flag records whether this implementation was discovered on 
+	read-only internal media or that it is a later version of one that was */
+	TBool iRomBased;
+	/** The Vendor ID of the plug-in which this implementation belongs to*/
+	TVendorId iVid;
+	};	// End CImplementationInformation
+
+/** 
+Simplifies the definition of functions which return registry information 
+
+@publishedAll
+@released
+*/
+typedef RArray<CImplementationInformation*> RImplInfoArray;
+
+/** 
+Simplifies the definition of functions which return registry information 
+
+@publishedAll
+@released
+*/
+typedef RPointerArray<CImplementationInformation> RImplInfoPtrArray;
+
+
+#include <ecom/implementationinformation.inl>
+
+#endif		// __IMPLEMENTATIONINFORMATION_H__