epoc32/include/ecom/implementationinformation.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@2
     1
// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     2
// All rights reserved.
williamr@2
     3
// This component and the accompanying materials are made available
williamr@4
     4
// under the terms of "Eclipse Public License v1.0"
williamr@2
     5
// which accompanies this distribution, and is available
williamr@4
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
williamr@2
     7
//
williamr@2
     8
// Initial Contributors:
williamr@2
     9
// Nokia Corporation - initial contribution.
williamr@2
    10
//
williamr@2
    11
// Contributors:
williamr@2
    12
//
williamr@2
    13
// Description:
williamr@4
    14
// This file contains the definition of the CImplementationInformation API class.
williamr@2
    15
// 
williamr@2
    16
//
williamr@2
    17
williamr@4
    18
/**
williamr@4
    19
 @file
williamr@4
    20
 @publishedAll
williamr@4
    21
 @released
williamr@4
    22
*/
williamr@2
    23
williamr@2
    24
#ifndef __IMPLEMENTATIONINFORMATION_H__
williamr@2
    25
#define __IMPLEMENTATIONINFORMATION_H__
williamr@2
    26
williamr@4
    27
// ____________________________________________________________________________
williamr@4
    28
// INCLUDES
williamr@4
    29
williamr@2
    30
#include <s32std.h>
williamr@2
    31
#include <f32file.h>
williamr@2
    32
williamr@4
    33
williamr@4
    34
// ____________________________________________________________________________
williamr@4
    35
// TYPES
williamr@4
    36
williamr@2
    37
/**
williamr@4
    38
Simplifies the definition of extended interfaces array
williamr@4
    39
@publishedPartner
williamr@2
    40
@released
williamr@2
    41
*/
williamr@4
    42
// To be used internally by ECOM and by Phone Manufacturers
williamr@4
    43
typedef RArray<TUid> RExtendedInterfacesArray;
williamr@2
    44
williamr@4
    45
williamr@4
    46
williamr@4
    47
// ____________________________________________________________________________
williamr@4
    48
// CLASSES
williamr@4
    49
williamr@4
    50
/**
williamr@4
    51
The CimplementationInformation class acts as the container for the registration 
williamr@4
    52
data relating to a particular interface implementation.
williamr@4
    53
Note that this class is used in both the ECOM client and server side hence the 
williamr@4
    54
mixed API classification seen below. For the client side only the API used to 
williamr@4
    55
extract the registration data should be used.
williamr@4
    56
*/
williamr@2
    57
NONSHARABLE_CLASS(CImplementationInformation) : public CBase
williamr@2
    58
	{
williamr@4
    59
public: // internalComponent APIs
williamr@4
    60
    	// Internal methods used only inside ECOM , not for client use.
williamr@4
    61
williamr@4
    62
	static CImplementationInformation* NewLC(TBool aClientSide,
williamr@4
    63
                                             RReadStream& aStream);
williamr@4
    64
williamr@4
    65
	static CImplementationInformation* NewL(TUid	aUid,
williamr@4
    66
											TInt	aVersion,
williamr@2
    67
											HBufC*  aName,
williamr@2
    68
											HBufC8* aDataType,
williamr@2
    69
											HBufC8* aOpaqueData,
williamr@2
    70
											TDriveUnit aDrive,
williamr@2
    71
											TBool aRomOnly,
williamr@2
    72
											TBool aRomBased);
williamr@4
    73
	static CImplementationInformation* NewL(TUid	aUid,
williamr@4
    74
											TInt	aVersion,
williamr@4
    75
											HBufC*  aName,
williamr@4
    76
											HBufC8* aDataType,
williamr@4
    77
											HBufC8* aOpaqueData,
williamr@4
    78
											TDriveUnit aDrive,
williamr@4
    79
											TBool aRomOnly,
williamr@4
    80
											TBool aRomBased,
williamr@4
    81
											RExtendedInterfacesArray* aExtendedInterfaces);
williamr@2
    82
	
williamr@2
    83
	~CImplementationInformation();
williamr@4
    84
williamr@4
    85
public: // publishedAll APIs
williamr@4
    86
        // Available for use by all clients
williamr@4
    87
williamr@4
    88
	inline const TDesC& DisplayName() const;
williamr@4
    89
williamr@4
    90
	inline const TDesC8& DataType() const;
williamr@4
    91
	inline const TDesC8& OpaqueData() const;
williamr@4
    92
williamr@4
    93
	inline TUid ImplementationUid() const;
williamr@4
    94
	inline TInt Version() const;
williamr@4
    95
williamr@4
    96
	inline TDriveUnit Drive() const;
williamr@2
    97
	
williamr@4
    98
	inline TBool RomOnly() const;
williamr@4
    99
	inline TBool RomBased() const;
williamr@2
   100
	
williamr@4
   101
	inline TVendorId VendorId() const;
williamr@2
   102
	
williamr@2
   103
	inline TBool Disabled() const;
williamr@2
   104
	
williamr@4
   105
	// This function should not be used by any ECOM client as it will have no 
williamr@4
   106
    // effect at all on the implementation information stored in the server side
williamr@2
   107
	inline void SetDisabled(TBool aDisabled);
williamr@4
   108
williamr@4
   109
	IMPORT_C void GetExtendedInterfaceListL(RExtendedInterfacesArray& aList);
williamr@4
   110
williamr@4
   111
public: // internalComponent APIs
williamr@4
   112
    	// Internal methods used inside ECOM, not for client use.
williamr@4
   113
williamr@4
   114
	void ExternalizeL(TBool aClientSide,RWriteStream& aStream) const;
williamr@4
   115
	void InternalizeL(TBool aClientSide,RReadStream& aStream);
williamr@2
   116
	
williamr@2
   117
	void SetRomBased(TBool aRomBased);
williamr@2
   118
	void SetDrive(TDriveUnit aDrive);
williamr@2
   119
	
williamr@2
   120
 	inline void SetVendorId(const TVendorId aVid);
williamr@4
   121
williamr@4
   122
	void AddExtendedInterfaceL(const TUid& aExtendedInterface); 	
williamr@4
   123
	RExtendedInterfacesArray* GetExtendedInterfaceList();
williamr@2
   124
	
williamr@4
   125
private: // internalComponent APIs
williamr@4
   126
         // Internal methods used inside ECOM, not for client use.
williamr@4
   127
williamr@2
   128
	CImplementationInformation();
williamr@4
   129
williamr@4
   130
	CImplementationInformation(TUid aUid,
williamr@4
   131
							   TInt aVersion,
williamr@4
   132
							   HBufC*  aName,
williamr@2
   133
							   HBufC8* aDataType,
williamr@2
   134
							   HBufC8* aOpaqueData,
williamr@2
   135
							   TDriveUnit aDrive,
williamr@2
   136
							   TBool aRomOnly,
williamr@2
   137
							   TBool aRomBased);
williamr@4
   138
    
williamr@4
   139
    CImplementationInformation(TUid aUid,
williamr@4
   140
							   TInt aVersion,
williamr@4
   141
							   HBufC*  aName,
williamr@4
   142
							   HBufC8* aDataType,
williamr@4
   143
							   HBufC8* aOpaqueData,
williamr@4
   144
							   TDriveUnit aDrive,
williamr@4
   145
							   TBool aRomOnly,
williamr@4
   146
							   TBool aRomBased,
williamr@4
   147
							   RExtendedInterfacesArray* aExtendedInterfaces);
williamr@4
   148
							   	
williamr@2
   149
private:
williamr@2
   150
	/** The implementation UID */
williamr@4
   151
	TUid		iImplementationUid;
williamr@2
   152
	
williamr@2
   153
	/** The implementation version */
williamr@4
   154
	TInt		iVersion;
williamr@2
   155
	
williamr@4
   156
	/** This implementations human readable name intended for display in 
williamr@4
   157
	    UI implementations */
williamr@4
   158
	HBufC*		iDisplayName;
williamr@2
   159
	
williamr@4
   160
	/** The type of data this implementation is registered to handle :
williamr@4
   161
	Used for matching against the run-time cue provided by the client
williamr@4
   162
	during default interface implementation resolution.
williamr@2
   163
	*/
williamr@4
   164
	HBufC8*		iData;
williamr@2
   165
	
williamr@4
   166
	/** Data registered for this implementation which can be used by the client
williamr@4
   167
	during non-default resolution operations but is ignored by the framework.
williamr@2
   168
	*/
williamr@4
   169
	HBufC8*		iOpaqueData;
williamr@2
   170
	
williamr@4
   171
	/** The flag recording if this implementation is disabled or enabled */
williamr@4
   172
	TBool		iDisabled;
williamr@2
   173
	
williamr@4
   174
	/** The drive that this plug-in resides on */
williamr@2
   175
	TDriveUnit		iDrive;
williamr@4
   176
	
williamr@4
   177
	/** The flag recording whether this implementation may only be loaded
williamr@2
   178
	from read-only internal media */
williamr@2
   179
	TBool iRomOnly;
williamr@4
   180
	
williamr@4
   181
	/** This flag records whether this implementation was discovered on
williamr@2
   182
	read-only internal media or that it is a later version of one that was */
williamr@2
   183
	TBool iRomBased;
williamr@4
   184
	
williamr@2
   185
	/** The Vendor ID of the plug-in which this implementation belongs to*/
williamr@2
   186
	TVendorId iVid;
williamr@4
   187
	
williamr@4
   188
	/** Array of extended interfaces.*/
williamr@4
   189
	RExtendedInterfacesArray* iExtendedInterfaceList;
williamr@4
   190
	
williamr@2
   191
	};	// End CImplementationInformation
williamr@2
   192
williamr@2
   193
williamr@4
   194
// ____________________________________________________________________________
williamr@4
   195
// TYPES
williamr@4
   196
williamr@4
   197
/**
williamr@4
   198
Simplifies the definition of functions which return registry information
williamr@2
   199
*/
williamr@2
   200
typedef RArray<CImplementationInformation*> RImplInfoArray;
williamr@2
   201
williamr@4
   202
/**
williamr@4
   203
Simplifies the definition of functions which return registry information
williamr@2
   204
*/
williamr@2
   205
typedef RPointerArray<CImplementationInformation> RImplInfoPtrArray;
williamr@2
   206
williamr@2
   207
williamr@4
   208
// ____________________________________________________________________________
williamr@4
   209
// INLINES
williamr@4
   210
williamr@2
   211
#include <ecom/implementationinformation.inl>
williamr@2
   212
williamr@4
   213
williamr@2
   214
#endif		// __IMPLEMENTATIONINFORMATION_H__