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 "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
14 // This file contains the definition for the TImplementationProxy structure.
24 #ifndef __IMPLEMENTATIONPROXY_H__
25 #define __IMPLEMENTATIONPROXY_H__
27 // ____________________________________________________________________________
34 // ____________________________________________________________________________
35 // TYPES - TImplementationProxy
38 Pre-defined function pointer type used in TImplementationProxy
40 @leave Or any of the System Wide error codes
41 @return TAny* A pointer to the instantiated interface implementation.
43 typedef TAny* (*TFuncPtr)();
46 Typedef used to cover the difference between EABI and older handling
47 of the instantiation method pointer.
49 #if defined(__EABI__) || defined(__GCCXML__) || defined(__X86GCC__) || defined(__GCCE__)
50 typedef TFuncPtr TProxyNewLPtr;
52 typedef TAny* TProxyNewLPtr;
57 The structure that defines the pairing required by the ECOM framework
58 to correctly identify the instantiation method pointer to provide
59 to a client's resolution request.
63 /** The unique UID for an Interface Implementation */
64 TUid iImplementationUid;
65 /** The pointer to the instantiation method for the Interface Implementation identified by the UID.*/
66 TProxyNewLPtr iNewLFuncPtr;
67 } TImplementationProxy;
70 Macro to initialise an element of a static array of TImplementationProxy objects.
71 This macro deals with casting the function pointer to the type used in the structure.
73 #define IMPLEMENTATION_PROXY_ENTRY(aUid, aFuncPtr) {{aUid},(TProxyNewLPtr)(aFuncPtr)}
75 #ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
76 #include <ecom/extendedinterfaceimplementationproxy.h>
80 #endif // __IMPLEMENTATIONPROXY_H__