diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/ecom/implementationinformation.h --- 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 +#include + +// ____________________________________________________________________________________ +// +/** +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 RImplInfoArray; + +/** +Simplifies the definition of functions which return registry information + +@publishedAll +@released +*/ +typedef RPointerArray RImplInfoPtrArray; + + +#include + +#endif // __IMPLEMENTATIONINFORMATION_H__