#include <shared_library.h>
Public Types | |
enum | Flags { SHLIB_GLOBAL = 1, SHLIB_LOCAL = 2 } |
Public Member Functions | |
const std::string & | getPath () const |
void * | getSymbol (const std::string &name) |
bool | hasSymbol (const std::string &name) |
Returns true iff a library has been loaded. | |
bool | isLoaded () const |
Unloads a shared library. | |
void | load (const std::string &path, int flags=0) |
SharedLibrary () | |
SharedLibrary (const std::string &path, int flags=0) | |
Creates a SharedLibrary object. | |
void | unload () |
virtual | ~SharedLibrary () |
Static Public Member Functions | |
static std::string | getOSName (const std::string &name) |
static std::string | prefix () |
static std::string | suffix () |
Private Member Functions | |
void * | findSymbol (const std::string &name) |
SharedLibrary & | operator= (const SharedLibrary &) |
SharedLibrary (const SharedLibrary &) | |
Private Attributes | |
void * | _handle |
std::mutex | _mutex |
std::string | _path |
The SharedLibrary class dynamically loads shared libraries at run-time.
Definition at line 47 of file shared_library.h.
SHLIB_GLOBAL | |
SHLIB_LOCAL |
On platforms that use dlopen(), use RTLD_GLOBAL. This is the default if no flags are given. This flag is ignored on platforms that do not use dlopen(). |
Definition at line 52 of file shared_library.h.
Definition at line 8 of file shared_library_UNIX.cpp.
BT::SharedLibrary::SharedLibrary | ( | const std::string & | path, |
int | flags = 0 |
||
) |
Creates a SharedLibrary object.
Definition at line 3 of file shared_library.cpp.
virtual BT::SharedLibrary::~SharedLibrary | ( | ) | [virtual] |
Creates a SharedLibrary object and loads a library from the given path, using the given flags. See the Flags enumeration for valid values.
BT::SharedLibrary::SharedLibrary | ( | const SharedLibrary & | ) | [private] |
void * BT::SharedLibrary::findSymbol | ( | const std::string & | name | ) | [private] |
Definition at line 47 of file shared_library_UNIX.cpp.
std::string BT::SharedLibrary::getOSName | ( | const std::string & | name | ) | [static] |
Returns the platform-specific filename suffix for shared libraries (including the period). In debug mode, the suffix also includes a "d" to specify the debug version of a library.
Definition at line 22 of file shared_library.cpp.
const std::string & BT::SharedLibrary::getPath | ( | ) | const |
Returns the address of the symbol with the given name. For functions, this is the entry point of the function. Throws a NotFoundException if the symbol does not exist.
Definition at line 59 of file shared_library_UNIX.cpp.
void * BT::SharedLibrary::getSymbol | ( | const std::string & | name | ) |
Returns true iff the loaded library contains a symbol with the given name.
Definition at line 8 of file shared_library.cpp.
bool BT::SharedLibrary::hasSymbol | ( | const std::string & | name | ) |
Returns true iff a library has been loaded.
Definition at line 17 of file shared_library.cpp.
bool BT::SharedLibrary::isLoaded | ( | ) | const |
Unloads a shared library.
Definition at line 42 of file shared_library_UNIX.cpp.
void BT::SharedLibrary::load | ( | const std::string & | path, |
int | flags = 0 |
||
) |
Destroys the SharedLibrary. The actual library remains loaded.
Definition at line 13 of file shared_library_UNIX.cpp.
SharedLibrary& BT::SharedLibrary::operator= | ( | const SharedLibrary & | ) | [private] |
std::string BT::SharedLibrary::prefix | ( | ) | [static] |
Returns the path of the library, as specified in a call to load() or the constructor.
Definition at line 64 of file shared_library_UNIX.cpp.
std::string BT::SharedLibrary::suffix | ( | ) | [static] |
Returns the platform-specific filename prefix for shared libraries. Most platforms would return "lib" as prefix, while on Cygwin, the "cyg" prefix will be returned.
Definition at line 73 of file shared_library_UNIX.cpp.
void BT::SharedLibrary::unload | ( | ) |
Loads a shared library from the given path, using the given flags. See the Flags enumeration for valid values. Throws a LibraryAlreadyLoadedException if a library has already been loaded. Throws a LibraryLoadException if the library cannot be loaded.
Definition at line 31 of file shared_library_UNIX.cpp.
void* BT::SharedLibrary::_handle [private] |
Definition at line 137 of file shared_library.h.
std::mutex BT::SharedLibrary::_mutex [private] |
Definition at line 138 of file shared_library.h.
std::string BT::SharedLibrary::_path [private] |
Definition at line 136 of file shared_library.h.