diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/ecom/implementationproxy.h --- a/epoc32/include/ecom/implementationproxy.h Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/ecom/implementationproxy.h Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,72 @@ -implementationproxy.h +// 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 +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// This file contains the definition for the +// TImplementationProxy structure. +// +// + + + +#ifndef __IMPLEMENTATIONPROXY_H__ +#define __IMPLEMENTATIONPROXY_H__ + +#include + +/** +Pre-defined function pointer type used in TImplementationProxy + +@publishedAll +@released +*/ +typedef TAny* (*TFuncPtr)(); + +/** +Typedef used to cover the difference between EABI and older handling +of the instantiation method pointer. + +@publishedAll +@released +*/ +#if defined(__EABI__) || defined(__GCCXML__) +typedef TFuncPtr TProxyNewLPtr; +#else +typedef TAny* TProxyNewLPtr; +#endif + +/** +The structure that defines the pairing required by the ECOM framework +to correctly identify the instantiation method pointer to provide +to a client's resolution request. + +@publishedAll +@released +*/ +typedef struct + { + /** The unique UID for an Interface Implementation */ + TUid iImplementationUid; + /** The pointer to the instantiation method for the Interface Implementation identified by the UID.*/ + TProxyNewLPtr iNewLFuncPtr; + } TImplementationProxy; + +/** +Macro to initialise an element of a static array of TImplementationProxy objects. +This macro deals with casting the function pointer to the type used in the structure. + +@publishedAll +@released +*/ +#define IMPLEMENTATION_PROXY_ENTRY(aUid, aFuncPtr) {{aUid},(TProxyNewLPtr)(aFuncPtr)} + +#endif // __IMPLEMENTATIONPROXY_H__