//C++ header - Open Scene Graph - Copyright (C) 1998-2002 Robert Osfield //Distributed under the terms of the GNU Library General Public License (LGPL) //as published by the Free Software Foundation. #ifndef OSG_DYNAMICLIBRARY #define OSG_DYNAMICLIBRARY 1 #include #include #include namespace osgDB { /** DynamicLibrary - encapsulates the loading and unloading of dynamic libraries, typically used for loading ReaderWriter plug-ins. */ class OSGDB_EXPORT DynamicLibrary : public osg::Referenced { public: typedef void* HANDLE; typedef void* PROC_ADDRESS; /** returns a pointer to a DynamicLibrary object on successfully * opening of library returns NULL on failure. */ static DynamicLibrary* loadLibrary(const std::string& libraryName); /** return name of library stripped of path.*/ const std::string& getName() const { return _name; } /** return name of library including full path to it.*/ const std::string& getFullName() const { return _fullName; } /** return handle to .dso/.dll dynamic library itself.*/ HANDLE getHandle() const { return _handle; } /** return address of function located in library.*/ PROC_ADDRESS getProcAddress(const std::string& procName); protected: /** disallow default constructor.*/ DynamicLibrary():osg::Referenced() {} /** disallow copy constructor.*/ DynamicLibrary(const DynamicLibrary&):osg::Referenced() {} /** disallow copy operator.*/ DynamicLibrary& operator == (const DynamicLibrary&) { return *this; } /** Disallow public construction so that users have to go * through loadLibrary() above which returns NULL on * failure, a valid DynamicLibrary object on success. */ DynamicLibrary(const std::string& name,HANDLE handle); ~DynamicLibrary(); HANDLE _handle; std::string _name; std::string _fullName; }; } #endif // __DYNAMIC_LIBRARY_H