williamr@2: // Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@2: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #ifndef __MMF_HW_DEVICE_INL__ williamr@2: #define __MMF_HW_DEVICE_INL__ williamr@2: williamr@2: #include williamr@2: williamr@2: williamr@2: /** williamr@2: Create a CMMFHwDevice object from .dll. williamr@2: Will leave if dll cannot be loaded (KErrNotFound). williamr@2: williamr@2: @param dll Implementation .dll williamr@2: williamr@2: @return an instantiated CMMFHwDevice derived object from a DLL. williamr@2: */ williamr@4: // modification to pass by reference would cause a BC break williamr@4: // coverity[pass_by_value] williamr@2: inline CMMFHwDevice* CMMFHwDevice::NewL(TFileName dll) williamr@2: { williamr@2: RLibrary library; williamr@2: User::LeaveIfError(library.Load(dll)); williamr@2: TLibraryFunction entry=library.Lookup(2); // 1 ponits to implementation table williamr@2: CMMFHwDevice* mmfHwDevice = (CMMFHwDevice*)entry(); williamr@2: return mmfHwDevice; williamr@2: } williamr@2: williamr@2: /** williamr@2: * williamr@2: * Destructor williamr@2: * williamr@2: */ williamr@2: williamr@2: CMMFHwDevice::~CMMFHwDevice() williamr@2: { williamr@2: // Destroy any instance variables and then williamr@2: // inform ecom that this specific williamr@2: // instance of the interface has been destroyed. williamr@2: REComSession::DestroyedImplementation(iDtor_ID_Key); williamr@2: } williamr@2: williamr@2: /** williamr@2: * williamr@2: * Create a CMMFHwDevice object with a known implementation Uid. williamr@2: * Will leave if it is not found (KErrNotFound). williamr@2: * williamr@2: * @param aUid - The Uid of a plugin implementation williamr@2: * williamr@2: * @return An instantiated CMMFHwDevice derived object from ECom. williamr@2: * williamr@2: */ williamr@2: inline CMMFHwDevice* CMMFHwDevice::NewL(TUid aUid) williamr@2: { williamr@2: CMMFHwDevice* device = REINTERPRET_CAST(CMMFHwDevice*, williamr@2: REComSession::CreateImplementationL(aUid, _FOFF(CMMFHwDevice,iDtor_ID_Key))); williamr@2: return device; williamr@2: } williamr@2: williamr@2: #endif