williamr@2: // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@2: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@4: // This file contains the definition of the CImplementationInformation API class. williamr@2: // williamr@2: // williamr@2: williamr@4: /** williamr@4: @file williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@2: williamr@2: #ifndef __IMPLEMENTATIONINFORMATION_H__ williamr@2: #define __IMPLEMENTATIONINFORMATION_H__ williamr@2: williamr@4: // ____________________________________________________________________________ williamr@4: // INCLUDES williamr@4: williamr@2: #include williamr@2: #include williamr@2: williamr@4: williamr@4: // ____________________________________________________________________________ williamr@4: // TYPES williamr@4: williamr@2: /** williamr@4: Simplifies the definition of extended interfaces array williamr@4: @publishedPartner williamr@2: @released williamr@2: */ williamr@4: // To be used internally by ECOM and by Phone Manufacturers williamr@4: typedef RArray RExtendedInterfacesArray; williamr@2: williamr@4: williamr@4: williamr@4: // ____________________________________________________________________________ williamr@4: // CLASSES williamr@4: williamr@4: /** williamr@4: The CimplementationInformation class acts as the container for the registration williamr@4: data relating to a particular interface implementation. williamr@4: Note that this class is used in both the ECOM client and server side hence the williamr@4: mixed API classification seen below. For the client side only the API used to williamr@4: extract the registration data should be used. williamr@4: */ williamr@2: NONSHARABLE_CLASS(CImplementationInformation) : public CBase williamr@2: { williamr@4: public: // internalComponent APIs williamr@4: // Internal methods used only inside ECOM , not for client use. williamr@4: williamr@4: static CImplementationInformation* NewLC(TBool aClientSide, williamr@4: RReadStream& aStream); williamr@4: williamr@4: static CImplementationInformation* NewL(TUid aUid, williamr@4: TInt aVersion, williamr@2: HBufC* aName, williamr@2: HBufC8* aDataType, williamr@2: HBufC8* aOpaqueData, williamr@2: TDriveUnit aDrive, williamr@2: TBool aRomOnly, williamr@2: TBool aRomBased); williamr@4: static CImplementationInformation* NewL(TUid aUid, williamr@4: TInt aVersion, williamr@4: HBufC* aName, williamr@4: HBufC8* aDataType, williamr@4: HBufC8* aOpaqueData, williamr@4: TDriveUnit aDrive, williamr@4: TBool aRomOnly, williamr@4: TBool aRomBased, williamr@4: RExtendedInterfacesArray* aExtendedInterfaces); williamr@2: williamr@2: ~CImplementationInformation(); williamr@4: williamr@4: public: // publishedAll APIs williamr@4: // Available for use by all clients williamr@4: williamr@4: inline const TDesC& DisplayName() const; williamr@4: williamr@4: inline const TDesC8& DataType() const; williamr@4: inline const TDesC8& OpaqueData() const; williamr@4: williamr@4: inline TUid ImplementationUid() const; williamr@4: inline TInt Version() const; williamr@4: williamr@4: inline TDriveUnit Drive() const; williamr@2: williamr@4: inline TBool RomOnly() const; williamr@4: inline TBool RomBased() const; williamr@2: williamr@4: inline TVendorId VendorId() const; williamr@2: williamr@2: inline TBool Disabled() const; williamr@2: williamr@4: // This function should not be used by any ECOM client as it will have no williamr@4: // effect at all on the implementation information stored in the server side williamr@2: inline void SetDisabled(TBool aDisabled); williamr@4: williamr@4: IMPORT_C void GetExtendedInterfaceListL(RExtendedInterfacesArray& aList); williamr@4: williamr@4: public: // internalComponent APIs williamr@4: // Internal methods used inside ECOM, not for client use. williamr@4: williamr@4: void ExternalizeL(TBool aClientSide,RWriteStream& aStream) const; williamr@4: void InternalizeL(TBool aClientSide,RReadStream& aStream); williamr@2: williamr@2: void SetRomBased(TBool aRomBased); williamr@2: void SetDrive(TDriveUnit aDrive); williamr@2: williamr@2: inline void SetVendorId(const TVendorId aVid); williamr@4: williamr@4: void AddExtendedInterfaceL(const TUid& aExtendedInterface); williamr@4: RExtendedInterfacesArray* GetExtendedInterfaceList(); williamr@2: williamr@4: private: // internalComponent APIs williamr@4: // Internal methods used inside ECOM, not for client use. williamr@4: williamr@2: CImplementationInformation(); williamr@4: williamr@4: CImplementationInformation(TUid aUid, williamr@4: TInt aVersion, williamr@4: HBufC* aName, williamr@2: HBufC8* aDataType, williamr@2: HBufC8* aOpaqueData, williamr@2: TDriveUnit aDrive, williamr@2: TBool aRomOnly, williamr@2: TBool aRomBased); williamr@4: williamr@4: CImplementationInformation(TUid aUid, williamr@4: TInt aVersion, williamr@4: HBufC* aName, williamr@4: HBufC8* aDataType, williamr@4: HBufC8* aOpaqueData, williamr@4: TDriveUnit aDrive, williamr@4: TBool aRomOnly, williamr@4: TBool aRomBased, williamr@4: RExtendedInterfacesArray* aExtendedInterfaces); williamr@4: williamr@2: private: williamr@2: /** The implementation UID */ williamr@4: TUid iImplementationUid; williamr@2: williamr@2: /** The implementation version */ williamr@4: TInt iVersion; williamr@2: williamr@4: /** This implementations human readable name intended for display in williamr@4: UI implementations */ williamr@4: HBufC* iDisplayName; williamr@2: williamr@4: /** The type of data this implementation is registered to handle : williamr@4: Used for matching against the run-time cue provided by the client williamr@4: during default interface implementation resolution. williamr@2: */ williamr@4: HBufC8* iData; williamr@2: williamr@4: /** Data registered for this implementation which can be used by the client williamr@4: during non-default resolution operations but is ignored by the framework. williamr@2: */ williamr@4: HBufC8* iOpaqueData; williamr@2: williamr@4: /** The flag recording if this implementation is disabled or enabled */ williamr@4: TBool iDisabled; williamr@2: williamr@4: /** The drive that this plug-in resides on */ williamr@2: TDriveUnit iDrive; williamr@4: williamr@4: /** The flag recording whether this implementation may only be loaded williamr@2: from read-only internal media */ williamr@2: TBool iRomOnly; williamr@4: williamr@4: /** This flag records whether this implementation was discovered on williamr@2: read-only internal media or that it is a later version of one that was */ williamr@2: TBool iRomBased; williamr@4: williamr@2: /** The Vendor ID of the plug-in which this implementation belongs to*/ williamr@2: TVendorId iVid; williamr@4: williamr@4: /** Array of extended interfaces.*/ williamr@4: RExtendedInterfacesArray* iExtendedInterfaceList; williamr@4: williamr@2: }; // End CImplementationInformation williamr@2: williamr@2: williamr@4: // ____________________________________________________________________________ williamr@4: // TYPES williamr@4: williamr@4: /** williamr@4: Simplifies the definition of functions which return registry information williamr@2: */ williamr@2: typedef RArray RImplInfoArray; williamr@2: williamr@4: /** williamr@4: Simplifies the definition of functions which return registry information williamr@2: */ williamr@2: typedef RPointerArray RImplInfoPtrArray; williamr@2: williamr@2: williamr@4: // ____________________________________________________________________________ williamr@4: // INLINES williamr@4: williamr@2: #include williamr@2: williamr@4: williamr@2: #endif // __IMPLEMENTATIONINFORMATION_H__