--- a/epoc32/include/ecom/implementationinformation.h Wed Mar 31 12:27:01 2010 +0100
+++ b/epoc32/include/ecom/implementationinformation.h Wed Mar 31 12:33:34 2010 +0100
@@ -1,9 +1,9 @@
// 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
+// under the terms of "Eclipse Public License v1.0"
// which accompanies this distribution, and is available
-// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
//
// Initial Contributors:
// Nokia Corporation - initial contribution.
@@ -11,175 +11,204 @@
// Contributors:
//
// Description:
-// This file contains the definition of
-// the CImplementationInformation class.
+// This file contains the definition of the CImplementationInformation API class.
//
//
-
+/**
+ @file
+ @publishedAll
+ @released
+*/
#ifndef __IMPLEMENTATIONINFORMATION_H__
#define __IMPLEMENTATIONINFORMATION_H__
+// ____________________________________________________________________________
+// INCLUDES
+
#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.
+// ____________________________________________________________________________
+// TYPES
-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
+/**
+Simplifies the definition of extended interfaces array
+@publishedPartner
@released
*/
+// To be used internally by ECOM and by Phone Manufacturers
+typedef RArray<TUid> RExtendedInterfacesArray;
+
+
+// ____________________________________________________________________________
+// CLASSES
+
+/**
+The CimplementationInformation 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 hence the
+mixed API classification seen below. For the client side only the API used to
+extract the registration data should be used.
+*/
NONSHARABLE_CLASS(CImplementationInformation) : public CBase
{
-public:
-
- static CImplementationInformation* NewLC(TBool aClientSide,RReadStream& aStream);
-
- static CImplementationInformation* NewL(TUid aUid,
- TInt aVersion,
+public: // internalComponent APIs
+ // Internal methods used only inside ECOM , not for client use.
+
+ 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);
+ static CImplementationInformation* NewL(TUid aUid,
+ TInt aVersion,
+ HBufC* aName,
+ HBufC8* aDataType,
+ HBufC8* aOpaqueData,
+ TDriveUnit aDrive,
+ TBool aRomOnly,
+ TBool aRomBased,
+ RExtendedInterfacesArray* aExtendedInterfaces);
~CImplementationInformation();
-
+
+public: // publishedAll APIs
+ // Available for use by all clients
+
inline const TDesC& DisplayName() const;
-
+
inline const TDesC8& DataType() const;
+ inline const TDesC8& OpaqueData() const;
+
+ inline TUid ImplementationUid() const;
+ inline TInt Version() const;
+
+ inline TDriveUnit Drive() const;
- inline const TDesC8& OpaqueData() const;
+ inline TBool RomOnly() const;
+ inline TBool RomBased() const;
- inline TUid ImplementationUid() const;
-
- inline TInt Version() const;
+ inline TVendorId VendorId() 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.
+ // 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);
-
+
+ IMPORT_C void GetExtendedInterfaceListL(RExtendedInterfacesArray& aList);
+
+public: // internalComponent APIs
+ // Internal methods used inside ECOM, not for client use.
+
void ExternalizeL(TBool aClientSide,RWriteStream& aStream) const;
+ void InternalizeL(TBool aClientSide,RReadStream& aStream);
- 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:
+
+ void AddExtendedInterfaceL(const TUid& aExtendedInterface);
+ RExtendedInterfacesArray* GetExtendedInterfaceList();
+private: // internalComponent APIs
+ // Internal methods used inside ECOM, not for client use.
+
CImplementationInformation();
-
- CImplementationInformation(TUid aUid,
- TInt aVersion,
- HBufC* aName,
+
+ CImplementationInformation(TUid aUid,
+ TInt aVersion,
+ HBufC* aName,
HBufC8* aDataType,
HBufC8* aOpaqueData,
TDriveUnit aDrive,
TBool aRomOnly,
TBool aRomBased);
-
+
+ CImplementationInformation(TUid aUid,
+ TInt aVersion,
+ HBufC* aName,
+ HBufC8* aDataType,
+ HBufC8* aOpaqueData,
+ TDriveUnit aDrive,
+ TBool aRomOnly,
+ TBool aRomBased,
+ RExtendedInterfacesArray* aExtendedInterfaces);
+
private:
/** The implementation UID */
-
TUid iImplementationUid;
- /** The implementation version */
-
- TInt iVersion;
- /** This implementations human readable name intended for display in UI implementations */
+ /** 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.
- */
+ /** 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.
+
+ /** 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 */
+ /** The flag recording if this implementation is disabled or enabled */
TBool iDisabled;
- /** The drive that this plug-in resides on */
+
+ /** The drive that this plug-in resides on */
TDriveUnit iDrive;
- /** The flag recording whether this implementation may only be loaded
+
+ /** 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
+
+ /** 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;
+
+ /** Array of extended interfaces.*/
+ RExtendedInterfacesArray* iExtendedInterfaceList;
+
}; // End CImplementationInformation
-/**
-Simplifies the definition of functions which return registry information
-@publishedAll
-@released
+// ____________________________________________________________________________
+// TYPES
+
+/**
+Simplifies the definition of functions which return registry information
*/
typedef RArray<CImplementationInformation*> RImplInfoArray;
-/**
-Simplifies the definition of functions which return registry information
-
-@publishedAll
-@released
+/**
+Simplifies the definition of functions which return registry information
*/
typedef RPointerArray<CImplementationInformation> RImplInfoPtrArray;
+// ____________________________________________________________________________
+// INLINES
+
#include <ecom/implementationinformation.inl>
+
#endif // __IMPLEMENTATIONINFORMATION_H__