/** Copyright (c) 2007-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 DYNAMICLIBLOADER_H#define DYNAMICLIBLOADER_H#include <string>#include "javaosheaders.h"namespace java{namespace util{//Opening dynamic library failed.const int OPENING_LIBRARY_FAILED = -20000;//Getting function from dynamic library failed.const int CANNOT_FIND_FUNCTION_FAILURE = -20001;class DynamicLibLoader{public: //Constructor(s) & destructor /** * Creates object for loading the given library dynamically. * @param libName The name of the lib to be loaded. * @param closeWhenDestructed Wheter to unload the library when the * object is destroyed. If is false, will create a memory leak. */ OS_IMPORT DynamicLibLoader(const char* libName); /** * Creates object for loading the given library dynamically. * @param libName The name of the lib to be loaded. * @param closeWhenDestructed Wheter to unload the library when the * object is destroyed. If is false, will create a memory leak. */ OS_IMPORT DynamicLibLoader(const char* libName, bool closeWhenDestructed); OS_IMPORT virtual ~DynamicLibLoader(); /** * Opens the library * @param containsByteCode For some OS it is relevant to know if the dll * contains rommized byte code. * @throw LibraryLoaderException with error code OPENING_LIBRARY_FAILED * if loading a library failed. */ OS_IMPORT void openLib(); /** * @throw This operation does not throw exceptions. */ OS_IMPORT void closeLib(); /** * @throw LibraryLoaderException with following error codes: * OPENING_LIBRARY_FAILED => loading a library failed. * CANNOT_FIND_FUNCTION_FAILURE => function cannot be found from the library. */ OS_IMPORT void* getFunction(const char* functionName, bool containsByteCode = false); /** * @throw See exceptions from getFunction(const char*) operation. */ OS_IMPORT static DynamicLibLoader* loadAndGetFunction(void*& functionPtr, const char* libName, const char* functionName);private: //Methods DynamicLibLoader(); //No default constructor allowed DynamicLibLoader(const DynamicLibLoader&); //No copy constructor allowed DynamicLibLoader& operator= (const DynamicLibLoader&); //No Assignment operator allowedprivate: //Members std::string mLibName; void* mHandle; bool mCloseOnDestroy;};} //end namespace util} //end namespace java#endif // DYNAMICLIBLOADER_H