A class to help manage and load classes. More...
#include <class_loader.h>
Public Types | |||
typedef std::map< std::string, ClassDesc >::iterator | ClassMapIterator | ||
Public Member Functions | |||
ClassLoader (std::string package, std::string base_class, std::string attrib_name=std::string("plugin")) | |||
Constructor for a ClassLoader. | |||
T * | createUnmanagedInstance (const std::string &lookup_name) | ||
Creates an instance of a desired class (which implicitly calls loadLibraryForClass() to increment the library counter). | |||
std::string | getBaseClassType () const | ||
Given the lookup name of a class, returns the type of the associated base class. | |||
std::string | getClassDescription (const std::string &lookup_name) | ||
Given the lookup name of a class, returns its description. | |||
std::string | getClassLibraryPath (const std::string &lookup_name) | ||
Given the name of a class, returns the path to its associated library. | |||
std::string | getClassPackage (const std::string &lookup_name) | ||
Given the name of a class, returns name of the containing package. | |||
std::string | getClassType (const std::string &lookup_name) | ||
Given the lookup name of a class, returns the type of the derived class associated with it. | |||
std::vector< std::string > | getDeclaredClasses () | ||
Returns a list of all available classes for this ClassLoader's base class type. | |||
std::string | getName (const std::string &lookup_name) | ||
Strips the package name off of a lookup name. | |||
std::string | getPluginManifestPath (const std::string &lookup_name) | ||
Given the name of a class, returns the path of the associated plugin manifest. | |||
std::vector< std::string > | getRegisteredLibraries () | ||
Returns the libraries that are registered and can be loaded. | |||
bool | isClassAvailable (const std::string &lookup_name) | ||
Checks if the class associated with a plugin name is available to be loaded. | |||
bool | isClassLoaded (const std::string &lookup_name) | ||
Checks if a given class is currently loaded. | |||
void | loadLibraryForClass (const std::string &lookup_name) | ||
Attempts to load the library containing a class with a given name and increments a counter for the library. | |||
void | refreshDeclaredClasses () | ||
Refreshs the list of all available classes for this ClassLoader's base class type
| |||
int | unloadLibraryForClass (const std::string &lookup_name) | ||
Decrements the counter for the library containing a class with a given name and attempts to unload it if the counter reaches zero. | |||
~ClassLoader () | |||
Destructor for ClassLoader. | |||
Private Types | |||
typedef std::map< std::string, unsigned int > | LibraryCountMap | ||
Private Member Functions | |||
std::map< std::string, ClassDesc > | determineAvailableClasses () | ||
Returns the available classes
| |||
void | garbageInstance (T *p, const std::string &lookup_name) | ||
std::vector< std::string > | getClassesInLibrary (const std::string &library_path) | ||
Returns the names of the classes that are available in a given library. | |||
std::string | getErrorStringForUnknownClass (const std::string &lookup_name) | ||
Returns an error message for an unknown class. | |||
std::vector< std::string > | getLoadedLibraries () | ||
Returns the libraries that are currently loaded. | |||
bool | loadClassLibrary (const std::string &library_path) | ||
Dynamicaly loads a library. | |||
void | loadClassLibraryInternal (const std::string &library_path, const std::string &list_name_arg=std::string("")) | ||
Helper function for loading a shared library. | |||
bool | unloadClassLibrary (const std::string &library_path) | ||
Unloads a previously dynamically loaded lobrary. | |||
int | unloadClassLibraryInternal (const std::string &library_path) | ||
Helper function for unloading a shared library. | |||
Private Attributes | |||
std::string | attrib_name_ | ||
std::string | base_class_ | ||
std::map< std::string, ClassDesc > | classes_available_ | ||
LibraryCountMap | loaded_libraries_ | ||
std::string | package_ | ||
Poco::ClassLoader< T > | poco_class_loader_ |
A class to help manage and load classes.
Definition at line 204 of file class_loader.h.
typedef std::map<std::string, ClassDesc>::iterator pluginlib::ClassLoader< T >::ClassMapIterator |
Definition at line 210 of file class_loader.h.
typedef std::map<std::string, unsigned int> pluginlib::ClassLoader< T >::LibraryCountMap [private] |
Definition at line 207 of file class_loader.h.
pluginlib::ClassLoader< T >::ClassLoader | ( | std::string | package, |
std::string | base_class, | ||
std::string | attrib_name = std::string("plugin") |
||
) |
Constructor for a ClassLoader.
package | The package containing the base class |
base_class | The type of the base class for classes to be loaded |
attrib_name | The attribute to search for in manifext.xml files, defaults to "plugin" |
pluginlib::LibraryLoadException | Thrown if package manifest cannot be found |
Definition at line 49 of file class_loader_imp.h.
pluginlib::ClassLoader< T >::~ClassLoader | ( | ) |
Destructor for ClassLoader.
Definition at line 104 of file class_loader_imp.h.
T * pluginlib::ClassLoader< T >::createUnmanagedInstance | ( | const std::string & | lookup_name | ) |
Creates an instance of a desired class (which implicitly calls loadLibraryForClass() to increment the library counter).
lookup_name | The name of the class to load |
pluginlib::LibraryLoadException | Thrown when the library associated with the class cannot be loaded |
pluginlib::CreateClassException | Thrown when the class cannot be instantiated |
Definition at line 258 of file class_loader_imp.h.
std::map< std::string, ClassDesc > pluginlib::ClassLoader< T >::determineAvailableClasses | ( | ) | [private] |
Returns the available classes
pluginlib::LibraryLoadException | Thrown if package manifest cannot be found. |
Definition at line 409 of file class_loader_imp.h.
void pluginlib::ClassLoader< T >::garbageInstance | ( | T * | p, |
const std::string & | lookup_name | ||
) | [private] |
Deleter for boost shared pointer.
p | The instance |
lookup_name | The name of the class |
Definition at line 276 of file class_loader_imp.h.
std::string pluginlib::ClassLoader< T >::getBaseClassType | ( | ) | const [virtual] |
Given the lookup name of a class, returns the type of the associated base class.
Implements pluginlib::ClassLoaderBase.
Definition at line 203 of file class_loader_imp.h.
std::string pluginlib::ClassLoader< T >::getClassDescription | ( | const std::string & | lookup_name | ) | [virtual] |
Given the lookup name of a class, returns its description.
lookup_name | The lookup name of the class |
Implements pluginlib::ClassLoaderBase.
Definition at line 194 of file class_loader_imp.h.
std::vector< std::string > pluginlib::ClassLoader< T >::getClassesInLibrary | ( | const std::string & | library_path | ) | [private] |
Returns the names of the classes that are available in a given library.
library_path | The path to the library |
Definition at line 352 of file class_loader_imp.h.
std::string pluginlib::ClassLoader< T >::getClassLibraryPath | ( | const std::string & | lookup_name | ) | [virtual] |
Given the name of a class, returns the path to its associated library.
lookup_name | The name of the class |
Implements pluginlib::ClassLoaderBase.
Definition at line 209 of file class_loader_imp.h.
std::string pluginlib::ClassLoader< T >::getClassPackage | ( | const std::string & | lookup_name | ) | [virtual] |
Given the name of a class, returns name of the containing package.
lookup_name | The name of the class |
Implements pluginlib::ClassLoaderBase.
Definition at line 218 of file class_loader_imp.h.
std::string pluginlib::ClassLoader< T >::getClassType | ( | const std::string & | lookup_name | ) | [virtual] |
Given the lookup name of a class, returns the type of the derived class associated with it.
lookup_name | The name of the class |
Implements pluginlib::ClassLoaderBase.
Definition at line 185 of file class_loader_imp.h.
std::vector< std::string > pluginlib::ClassLoader< T >::getDeclaredClasses | ( | ) | [virtual] |
Returns a list of all available classes for this ClassLoader's base class type.
Implements pluginlib::ClassLoaderBase.
Definition at line 128 of file class_loader_imp.h.
std::string pluginlib::ClassLoader< T >::getErrorStringForUnknownClass | ( | const std::string & | lookup_name | ) | [private] |
Returns an error message for an unknown class.
lookup_name | The name of the class |
Definition at line 500 of file class_loader_imp.h.
std::vector< std::string > pluginlib::ClassLoader< T >::getLoadedLibraries | ( | ) | [private] |
Returns the libraries that are currently loaded.
Definition at line 387 of file class_loader_imp.h.
std::string pluginlib::ClassLoader< T >::getName | ( | const std::string & | lookup_name | ) | [virtual] |
Strips the package name off of a lookup name.
lookup_name | The name of the plugin |
Implements pluginlib::ClassLoaderBase.
Definition at line 170 of file class_loader_imp.h.
std::string pluginlib::ClassLoader< T >::getPluginManifestPath | ( | const std::string & | lookup_name | ) | [virtual] |
Given the name of a class, returns the path of the associated plugin manifest.
lookup_name | The name of the class |
Implements pluginlib::ClassLoaderBase.
Definition at line 227 of file class_loader_imp.h.
std::vector< std::string > pluginlib::ClassLoader< T >::getRegisteredLibraries | ( | ) | [virtual] |
Returns the libraries that are registered and can be loaded.
Implements pluginlib::ClassLoaderBase.
Definition at line 371 of file class_loader_imp.h.
bool pluginlib::ClassLoader< T >::isClassAvailable | ( | const std::string & | lookup_name | ) | [virtual] |
Checks if the class associated with a plugin name is available to be loaded.
lookup_name | The name of the plugin |
Implements pluginlib::ClassLoaderBase.
Definition at line 179 of file class_loader_imp.h.
bool pluginlib::ClassLoader< T >::isClassLoaded | ( | const std::string & | lookup_name | ) | [virtual] |
Checks if a given class is currently loaded.
lookup_name | The lookup name of the class to query |
Implements pluginlib::ClassLoaderBase.
Definition at line 115 of file class_loader_imp.h.
bool pluginlib::ClassLoader< T >::loadClassLibrary | ( | const std::string & | library_path | ) | [private] |
Dynamicaly loads a library.
library_path | The library to unload |
Definition at line 305 of file class_loader_imp.h.
void pluginlib::ClassLoader< T >::loadClassLibraryInternal | ( | const std::string & | library_path, |
const std::string & | list_name_arg = std::string("") |
||
) | [private] |
Helper function for loading a shared library.
library_path | The path to the library to load |
list_name | The name of the class list to load |
Definition at line 322 of file class_loader_imp.h.
void pluginlib::ClassLoader< T >::loadLibraryForClass | ( | const std::string & | lookup_name | ) | [virtual] |
Attempts to load the library containing a class with a given name and increments a counter for the library.
lookup_name | The lookup name of the class to load |
pluginlib::LibraryLoadException | Thrown if the library for the class cannot be loaded |
Implements pluginlib::ClassLoaderBase.
Definition at line 55 of file class_loader_imp.h.
void pluginlib::ClassLoader< T >::refreshDeclaredClasses | ( | ) | [virtual] |
Refreshs the list of all available classes for this ClassLoader's base class type
pluginlib::LibraryLoadException | Thrown if package manifest cannot be found. |
Implements pluginlib::ClassLoaderBase.
Definition at line 139 of file class_loader_imp.h.
bool pluginlib::ClassLoader< T >::unloadClassLibrary | ( | const std::string & | library_path | ) | [private] |
Unloads a previously dynamically loaded lobrary.
library_path | The library to unload |
Definition at line 287 of file class_loader_imp.h.
int pluginlib::ClassLoader< T >::unloadClassLibraryInternal | ( | const std::string & | library_path | ) | [private] |
Helper function for unloading a shared library.
library_path | The path to the library to unload |
Definition at line 335 of file class_loader_imp.h.
int pluginlib::ClassLoader< T >::unloadLibraryForClass | ( | const std::string & | lookup_name | ) | [virtual] |
Decrements the counter for the library containing a class with a given name and attempts to unload it if the counter reaches zero.
lookup_name | The lookup name of the class to unload |
pluginlib::LibraryUnloadException | Thrown if the library for the class cannot be unloaded |
Implements pluginlib::ClassLoaderBase.
Definition at line 87 of file class_loader_imp.h.
std::string pluginlib::ClassLoader< T >::attrib_name_ [private] |
Definition at line 423 of file class_loader.h.
std::string pluginlib::ClassLoader< T >::base_class_ [private] |
Definition at line 422 of file class_loader.h.
std::map<std::string, ClassDesc> pluginlib::ClassLoader< T >::classes_available_ [private] |
Definition at line 420 of file class_loader.h.
LibraryCountMap pluginlib::ClassLoader< T >::loaded_libraries_ [private] |
Definition at line 416 of file class_loader.h.
std::string pluginlib::ClassLoader< T >::package_ [private] |
Definition at line 421 of file class_loader.h.
Poco::ClassLoader<T> pluginlib::ClassLoader< T >::poco_class_loader_ [private] |
Definition at line 425 of file class_loader.h.