author | Gareth Stockwell <gareth.stockwell@accenture.com> |
Fri, 22 Oct 2010 11:38:29 +0100 | |
branch | bug235_bringup_0 |
changeset 206 | c170e304623f |
parent 0 | 5d03bc08d59c |
permissions | -rw-r--r-- |
// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" // which accompanies this distribution, and is available // at the URL "http://www.eclipse.org/legal/epl-v10.html". // // Initial Contributors: // Nokia Corporation - initial contribution. // // Contributors: // // Description: // #ifndef EXTENSIONCONTAINER_H_ #define EXTENSIONCONTAINER_H_ class CExtensionContainer:public CBase { public: /** Get Extension Interface. * Implemented using the CBase::Extension_() mechanism * Note that the pointer returned is only good for the lifetime of the called CBase derived object. * @param aExtensionId The GUID/ Well-known ID of the interface * @return pointer to the interface or NULL if not available **/ inline TAny* GetInterface(TUint aExtensionId); /** Get Extension Interface - templated helper. * Resolves the ID and returned pointer based on the class name. * Note that the pointer returned is only good for the lifetime of the called CBase derived object. * Class name should support ETypeId intergral value, else use non-template version. * @param MClass The class of the interface with embedded GUID / Well known ID * @return pointer to the interface or NULL if not available **/ template <class MClass> MClass* GetInterface() { return static_cast<MClass*>(GetInterface(MClass::ETypeId)); } }; inline TAny* CExtensionContainer::GetInterface(TUint aExtensionId) { TAny* retVal=NULL; //Note that extension is intentionally not overloaded in CExtensionContainer if (this->Extension_(aExtensionId,retVal,NULL)<KErrNone) { return NULL; } else { return retVal; } } #endif /* EXTENSIONCONTAINER_H_ */