CLAW Library (a C++ Library Absolutely Wonderful) 1.5.5
|
Unix interface for using dynamic libraries. More...
#include <dynamic_library_traits_unix.hpp>
Public Types | |
typedef void * | handle |
Type of the system handle to the library. | |
Static Public Member Functions | |
static handle | open (const std::string &name) |
Open a library. | |
static handle | auto_open (const std::string &name) |
Open the current program. | |
static void | close (handle h) |
Close a library. | |
template<class T > | |
static T | get_symbol (handle h, const std::string &name) |
Get a symbol from a library. | |
static bool | have_symbol (handle h, const std::string &name) |
Tell if a symbol is in the library. | |
static bool | valid_handle (handle h) |
Tell if an handle is a valid library handle. |
Unix interface for using dynamic libraries.
Definition at line 43 of file dynamic_library_traits_unix.hpp.
typedef void* claw::dynamic_library_traits_unix::handle |
Type of the system handle to the library.
Definition at line 47 of file dynamic_library_traits_unix.hpp.
static handle claw::dynamic_library_traits_unix::auto_open | ( | const std::string & | name | ) | [inline, static] |
Open the current program.
name | (not used) The name of the current program. |
Definition at line 72 of file dynamic_library_traits_unix.hpp.
References valid_handle().
{ handle h = dlopen( NULL, RTLD_LAZY ); if ( !valid_handle(h) ) throw claw::exception( dlerror() ); return h; } // dynamic_library_traits_unix::auto_open()
static void claw::dynamic_library_traits_unix::close | ( | handle | h | ) | [inline, static] |
Close a library.
h | The handle of the library to close. |
Definition at line 87 of file dynamic_library_traits_unix.hpp.
{
dlclose(h);
} // dynamic_library_traits_unix::close()
static T claw::dynamic_library_traits_unix::get_symbol | ( | handle | h, |
const std::string & | name | ||
) | [inline, static] |
Get a symbol from a library.
h | Handle of the library. |
name | The name of the symbol to load. |
Definition at line 99 of file dynamic_library_traits_unix.hpp.
{ /* HACK : ISO standard doesn't allow to cast from a pointer to an object to a pointer to a function. */ T result; *(void**)(&result) = dlsym( h, name.c_str() ); return result; } // dynamic_library_traits_unix::get_symbol()
static bool claw::dynamic_library_traits_unix::have_symbol | ( | handle | h, |
const std::string & | name | ||
) | [inline, static] |
Tell if a symbol is in the library.
h | Handle of the library. |
name | The name of the symbol to find. |
Definition at line 115 of file dynamic_library_traits_unix.hpp.
{ return dlsym( h, name.c_str() ) != NULL; } // dynamic_library_traits_unix::have_symbol()
static handle claw::dynamic_library_traits_unix::open | ( | const std::string & | name | ) | [inline, static] |
Open a library.
name | The name of the library to open. |
Definition at line 56 of file dynamic_library_traits_unix.hpp.
References valid_handle().
{ handle h = dlopen( name.c_str(), RTLD_LAZY ); if ( !valid_handle(h) ) throw claw::exception( dlerror() ); return h; } // dynamic_library_traits_unix::open()
static bool claw::dynamic_library_traits_unix::valid_handle | ( | handle | h | ) | [inline, static] |
Tell if an handle is a valid library handle.
h | The handle to test. |
Definition at line 125 of file dynamic_library_traits_unix.hpp.
Referenced by auto_open(), and open().
{ return h != NULL; } // dynamic_library_traits_unix::valid_handle()