1 // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // 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
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
14 // This file contains the definition of
15 // the CImplementationInformation class.
21 #ifndef __IMPLEMENTATIONINFORMATION_H__
22 #define __IMPLEMENTATIONINFORMATION_H__
27 // ____________________________________________________________________________________
30 CImplementationInformation
32 This class acts as the container for the registration data
33 relating to a particular Interface Implementation.
34 Note that this class is used in both the ECOM client and server side,
35 For the client side only the API used to extract the registration data
38 It is available to the client to allow access to the
39 registered characteristics of the implementation.
40 These characteristics are:
42 ImplementationUid() The Uid of this implementation.
44 Version() The version number of this implementation.
46 DisplayName() The human readable name for this implementation returned
47 as a 16 bit descriptor.
49 DataType() The data type which this implementation supports, returned
50 as an 8 bit descriptor.
52 OpaqueData() The opaque data which is registered for this implementation,
53 returned as an 8 bit descriptor.
55 RomOnly() The flag indicating whether this implementation is to be loaded
58 RomBased() The flag recording whether this implementation is on ROM or is
59 a later version of one on ROM.
61 VendorId() The Vendor ID of the plug-in which this implementation belongs to
67 NONSHARABLE_CLASS(CImplementationInformation) : public CBase
71 static CImplementationInformation* NewLC(TBool aClientSide,RReadStream& aStream);
73 static CImplementationInformation* NewL(TUid aUid,
82 ~CImplementationInformation();
84 inline const TDesC& DisplayName() const;
86 inline const TDesC8& DataType() const;
88 inline const TDesC8& OpaqueData() const;
90 inline TUid ImplementationUid() const;
92 inline TInt Version() const;
94 inline TBool Disabled() const;
96 //This function should not be used by any ECOM client as it will have no effect
97 //at all on the implementation information stored in the server side.
98 inline void SetDisabled(TBool aDisabled);
100 void ExternalizeL(TBool aClientSide,RWriteStream& aStream) const;
102 void InternalizeL(TBool aClientSide,RReadStream& aStream);
103 inline TDriveUnit Drive() const;
104 inline TBool RomOnly() const;
105 inline TBool RomBased() const;
106 void SetRomBased(TBool aRomBased);
107 inline TVendorId VendorId() const;
108 void SetDrive(TDriveUnit aDrive);
111 // The following function is categorised as @internalComponent
112 //and should not be used by ECOM clients.
113 inline void SetVendorId(const TVendorId aVid);
117 CImplementationInformation();
119 CImplementationInformation(TUid aUid,
129 /** The implementation UID */
131 TUid iImplementationUid;
132 /** The implementation version */
135 /** This implementations human readable name intended for display in UI implementations */
139 The type of data this implementation is registered to handle :
140 Used for matching against the run-time cue provided by the client
141 during default interface implementation resolution.
146 Data registered for this implementation which can be used by the client
147 during non-default resolution operations but is ignored by the framework.
151 /** The flag recording if this implementation is disabled or enabled */
154 /** The drive that this plug-in resides on */
156 /** The flag recording whether this implementation may only be loaded
157 from read-only internal media */
159 /** This flag records whether this implementation was discovered on
160 read-only internal media or that it is a later version of one that was */
162 /** The Vendor ID of the plug-in which this implementation belongs to*/
164 }; // End CImplementationInformation
167 Simplifies the definition of functions which return registry information
172 typedef RArray<CImplementationInformation*> RImplInfoArray;
175 Simplifies the definition of functions which return registry information
180 typedef RPointerArray<CImplementationInformation> RImplInfoPtrArray;
183 #include <ecom/implementationinformation.inl>
185 #endif // __IMPLEMENTATIONINFORMATION_H__