Medical Imaging Interaction Toolkit  2022.04.99-3f7a773b
Medical Imaging Interaction Toolkit
us::SharedLibrary Class Reference

#include <usSharedLibrary.h>

Public Member Functions

 SharedLibrary ()
 
 SharedLibrary (const SharedLibrary &other)
 
 SharedLibrary (const std::string &libPath, const std::string &name)
 
 SharedLibrary (const std::string &absoluteFilePath)
 
 ~SharedLibrary ()
 
SharedLibraryoperator= (const SharedLibrary &other)
 
void Load ()
 
void Load (int flags)
 
void Unload ()
 
void SetName (const std::string &name)
 
std::string GetName () const
 
std::string GetFilePath (const std::string &name) const
 
void SetFilePath (const std::string &absoluteFilePath)
 
std::string GetFilePath () const
 
void SetLibraryPath (const std::string &path)
 
std::string GetLibraryPath () const
 
void SetSuffix (const std::string &suffix)
 
std::string GetSuffix () const
 
void SetPrefix (const std::string &prefix)
 
std::string GetPrefix () const
 
void * GetHandle () const
 
bool IsLoaded () const
 

Detailed Description

The SharedLibrary class loads shared libraries at runtime.

Definition at line 39 of file usSharedLibrary.h.

Constructor & Destructor Documentation

◆ SharedLibrary() [1/4]

us::SharedLibrary::SharedLibrary ( )

◆ SharedLibrary() [2/4]

us::SharedLibrary::SharedLibrary ( const SharedLibrary other)

◆ SharedLibrary() [3/4]

us::SharedLibrary::SharedLibrary ( const std::string &  libPath,
const std::string &  name 
)

Construct a SharedLibrary object using a library search path and a library base name.

Parameters
libPathAn absolute path containing the shared library
nameThe base name of the shared library, without prefix and suffix.

◆ SharedLibrary() [4/4]

us::SharedLibrary::SharedLibrary ( const std::string &  absoluteFilePath)

Construct a SharedLibrary object using an absolute file path to the shared library. Using this constructor effectively disables all setters except SetFilePath().

Parameters
absoluteFilePathThe absolute path to the shared library.

◆ ~SharedLibrary()

us::SharedLibrary::~SharedLibrary ( )

Destroys this object but does not unload the shared library.

Member Function Documentation

◆ GetFilePath() [1/2]

std::string us::SharedLibrary::GetFilePath ( const std::string &  name) const

Gets the absolute file path for the shared library with base name name, using the search path returned by GetLibraryPath().

Parameters
nameThe shared library base name.
Returns
The absolute file path of the shared library.

◆ GetFilePath() [2/2]

std::string us::SharedLibrary::GetFilePath ( ) const

Gets the absolute file path of this SharedLibrary object.

Returns
The absolute file path of the shared library.

◆ GetHandle()

void* us::SharedLibrary::GetHandle ( ) const

Gets the internal handle of this SharedLibrary object.

Returns
nullptr if the shared library is not loaded, the operating system specific handle otherwise.

◆ GetLibraryPath()

std::string us::SharedLibrary::GetLibraryPath ( ) const

Gets the library search path of this SharedLibrary object.

Returns
The library search path.

◆ GetName()

std::string us::SharedLibrary::GetName ( ) const

Gets the base name of the shared library.

Returns
The shared libraries base name.

◆ GetPrefix()

std::string us::SharedLibrary::GetPrefix ( ) const

Gets the file name prefix of this SharedLibrary object.

Returns
The file name prefix of the shared library.

◆ GetSuffix()

std::string us::SharedLibrary::GetSuffix ( ) const

Gets the file name suffix of this SharedLibrary object.

Returns
The file name suffix of the shared library.

◆ IsLoaded()

bool us::SharedLibrary::IsLoaded ( ) const

Gets the loaded/unloaded stated of this SharedLibrary object.

Returns
true if the shared library is loaded, false otherwise.

◆ Load() [1/2]

void us::SharedLibrary::Load ( )

Loads the shared library pointed to by this SharedLibrary object. On POSIX systems dlopen() is called with the RTLD_LAZY and RTLD_LOCAL flags unless the compiler is gcc 4.4.x or older. Then the RTLD_LAZY and RTLD_GLOBAL flags are used to load the shared library to work around RTTI problems across shared library boundaries.

Exceptions
std::logic_errorIf the library is already loaded.
std::runtime_errorIf loading the library failed.

◆ Load() [2/2]

void us::SharedLibrary::Load ( int  flags)

Loads the shared library pointed to by this SharedLibrary object, using the specified flags on POSIX systems.

Exceptions
std::logic_errorIf the library is already loaded.
std::runtime_errorIf loading the library failed.

◆ operator=()

SharedLibrary& us::SharedLibrary::operator= ( const SharedLibrary other)

◆ SetFilePath()

void us::SharedLibrary::SetFilePath ( const std::string &  absoluteFilePath)

Sets the absolute file path of this SharedLibrary object. Using this methods with a non-empty absoluteFilePath argument effectively disables all other setters.

Parameters
absoluteFilePathThe new absolute file path of this SharedLibrary object.

◆ SetLibraryPath()

void us::SharedLibrary::SetLibraryPath ( const std::string &  path)

Sets a new library search path. Does nothing if the shared library is already loaded or the SharedLibrary(const std::string&) constructor was used.

Parameters
pathThe new shared library search path.

◆ SetName()

void us::SharedLibrary::SetName ( const std::string &  name)

Sets the base name of the shared library. Does nothing if the shared library is already loaded or the SharedLibrary(const std::string&) constructor was used.

Parameters
nameThe base name of the shared library, without prefix and suffix.

◆ SetPrefix()

void us::SharedLibrary::SetPrefix ( const std::string &  prefix)

Sets the file name prefix for shared library names (e.g. .dll or .so). Does nothing if the shared library is already loaded or the SharedLibrary(const std::string&) constructor was used.

Parameters
prefixThe shared library name prefix.

◆ SetSuffix()

void us::SharedLibrary::SetSuffix ( const std::string &  suffix)

Sets the suffix for shared library names (e.g. lib). Does nothing if the shared library is already loaded or the SharedLibrary(const std::string&) constructor was used.

Parameters
suffixThe shared library name suffix.

◆ Unload()

void us::SharedLibrary::Unload ( )

Un-loads the shared library pointed to by this SharedLibrary object.

Exceptions
std::runtime_errorIf an error occurred while un-loading the shared library.

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