sysanadatacapture/piprofiler/piprofiler_api/inc/WriterPluginInterface.inl
author Matti Laitinen <matti.t.laitinen@nokia.com>
Thu, 11 Feb 2010 15:52:57 +0200
changeset 1 3ff3fecb12fe
permissions -rw-r--r--
Add initial version of PI Profiler under EPL

/*
* Copyright (c) 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:  
*
*/


inline CWriterPluginInterface::CWriterPluginInterface()
    : iOrder( KWriterPluginNotIndexed ) 
    {
        
    }

// -----------------------------------------------------------------------------
// CWriterPluginInterface::~CWriterPluginInterface()
// Destructor.
// -----------------------------------------------------------------------------
//
inline CWriterPluginInterface::~CWriterPluginInterface()
    {
    // We don't unload the plugin object here. The loader
    // has to do this for us. Without this kind of destruction idiom, 
    // the view framework can potentially unload an ECOM plugin dll whilst 
    // there are still child views (Created by the plugin) that are registered 
    // with the view framework. If this occurs, the plugin code segment isn't 
    // loaded anymore and so there is no way to run the subsequent destructor 
    // code => exception.
    
    // If in the NewL some memory is reserved for member data, it must be
    // released here. This interface does not have any instance variables so
    // no need to delete anything.

    // Inform the ECOM framework that this specific instance of the
    // interface has been destroyed.
    REComSession::DestroyedImplementation(iDtor_ID_Key);
    }

inline CWriterPluginInterface* CWriterPluginInterface::NewL(const TUid aImplementationUid, TAny* aInitParams)
    {
    // Define options, how the default resolver will find appropriate
    // implementation.
    return REINTERPRET_CAST(CWriterPluginInterface*, 
                            REComSession::CreateImplementationL(aImplementationUid,
                                                                _FOFF( CWriterPluginInterface, iDtor_ID_Key ),
                                                                aInitParams)); 
    }

inline void CWriterPluginInterface::ListAllImplementationsL(RImplInfoPtrArray& aImplInfoArray)
    {
    REComSession::ListImplementationsL(KWriterPluginInterfaceUid, aImplInfoArray);
    }

inline void CWriterPluginInterface::SetOrder( TInt aOrder )
    {
    iOrder = aOrder;
    }

// end of file