Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
BT::SharedLibrary Class Reference

#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)
 
bool isLoaded () const
 Returns true iff a library has been loaded. More...
 
void load (const std::string &path, int flags=0)
 
 SharedLibrary ()
 Creates a SharedLibrary object. More...
 
 SharedLibrary (const std::string &path, int flags=0)
 
void unload ()
 Unloads a shared library. More...
 
virtual ~SharedLibrary ()=default
 

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)
 
SharedLibraryoperator= (const SharedLibrary &)
 
 SharedLibrary (const SharedLibrary &)
 

Private Attributes

void * _handle = nullptr
 
std::mutex _mutex
 
std::string _path
 

Detailed Description

The SharedLibrary class dynamically loads shared libraries at run-time.

Definition at line 47 of file shared_library.h.

Member Enumeration Documentation

◆ Flags

Enumerator
SHLIB_GLOBAL 

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().

SHLIB_LOCAL 

On platforms that use dlopen(), use RTLD_LOCAL instead of RTLD_GLOBAL.

Note that if this flag is specified, RTTI (including dynamic_cast and throw) will
not work for types defined in the shared library with GCC and possibly other
compilers as well. See http://gcc.gnu.org/faq.html#dso for more information.

This flag is ignored on platforms that do not use dlopen(). 

Definition at line 52 of file shared_library.h.

Constructor & Destructor Documentation

◆ SharedLibrary() [1/3]

BT::SharedLibrary::SharedLibrary ( )

Creates a SharedLibrary object.

Definition at line 9 of file shared_library_UNIX.cpp.

◆ SharedLibrary() [2/3]

BT::SharedLibrary::SharedLibrary ( const std::string &  path,
int  flags = 0 
)

Creates a SharedLibrary object and loads a library from the given path, using the given flags. See the Flags enumeration for valid values.

Definition at line 4 of file shared_library.cpp.

◆ ~SharedLibrary()

virtual BT::SharedLibrary::~SharedLibrary ( )
virtualdefault

Destroys the SharedLibrary. The actual library remains loaded.

◆ SharedLibrary() [3/3]

BT::SharedLibrary::SharedLibrary ( const SharedLibrary )
private

Member Function Documentation

◆ findSymbol()

void * BT::SharedLibrary::findSymbol ( const std::string &  name)
private

Definition at line 48 of file shared_library_UNIX.cpp.

◆ getOSName()

std::string BT::SharedLibrary::getOSName ( const std::string &  name)
static

Returns the platform-specific filename for shared libraries by prefixing and suffixing name with prefix() and suffix()

Definition at line 23 of file shared_library.cpp.

◆ getPath()

const std::string & BT::SharedLibrary::getPath ( ) const

Returns the path of the library, as specified in a call to load() or the constructor.

Definition at line 60 of file shared_library_UNIX.cpp.

◆ getSymbol()

void * BT::SharedLibrary::getSymbol ( const std::string &  name)

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 9 of file shared_library.cpp.

◆ hasSymbol()

bool BT::SharedLibrary::hasSymbol ( const std::string &  name)

Returns true iff the loaded library contains a symbol with the given name.

Definition at line 18 of file shared_library.cpp.

◆ isLoaded()

bool BT::SharedLibrary::isLoaded ( ) const

Returns true iff a library has been loaded.

Definition at line 43 of file shared_library_UNIX.cpp.

◆ load()

void BT::SharedLibrary::load ( const std::string &  path,
int  flags = 0 
)

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 14 of file shared_library_UNIX.cpp.

◆ operator=()

SharedLibrary& BT::SharedLibrary::operator= ( const SharedLibrary )
private

◆ prefix()

std::string BT::SharedLibrary::prefix ( )
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 65 of file shared_library_UNIX.cpp.

◆ suffix()

std::string BT::SharedLibrary::suffix ( )
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 74 of file shared_library_UNIX.cpp.

◆ unload()

void BT::SharedLibrary::unload ( )

Unloads a shared library.

Definition at line 32 of file shared_library_UNIX.cpp.

Member Data Documentation

◆ _handle

void* BT::SharedLibrary::_handle = nullptr
private

Definition at line 137 of file shared_library.h.

◆ _mutex

std::mutex BT::SharedLibrary::_mutex
private

Definition at line 138 of file shared_library.h.

◆ _path

std::string BT::SharedLibrary::_path
private

Definition at line 136 of file shared_library.h.


The documentation for this class was generated from the following files:


behaviortree_cpp_v4
Author(s): Davide Faconti
autogenerated on Fri Jun 28 2024 02:20:09