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 * | createClassInstance (const std::string &lookup_name, bool auto_load=true) |
Creates an instance of a desired class, optionally loading the associated library automatically if necessary. | |
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 | 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::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 a class with a given name. | |
~ClassLoader () | |
Destructor for ClassLoader. | |
Private Types | |
typedef std::map< std::string, unsigned int > | LibraryCountMap |
Private Member Functions | |
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 | getClassLibraryPath (const std::string &lookup_name) |
Given the name of a class, returns the path to its associated library. | |
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. | |
Private Attributes | |
std::string | base_class_ |
std::map< std::string, ClassDesc > | classes_available_ |
LibraryCountMap | loaded_libraries_ |
Poco::ClassLoader< T > | poco_class_loader_ |
A class to help manage and load classes.
Definition at line 81 of file class_loader.h.
typedef std::map<std::string, ClassDesc>::iterator pluginlib::ClassLoader< T >::ClassMapIterator |
Definition at line 87 of file class_loader.h.
typedef std::map<std::string, unsigned int> pluginlib::ClassLoader< T >::LibraryCountMap [private] |
Definition at line 84 of file class_loader.h.
pluginlib::ClassLoader< T >::ClassLoader | ( | std::string | package, | |
std::string | base_class, | |||
std::string | attrib_name = std::string("plugin") | |||
) | [inline] |
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" |
Definition at line 47 of file class_loader_imp.h.
pluginlib::ClassLoader< T >::~ClassLoader | ( | ) | [inline] |
Destructor for ClassLoader.
Definition at line 179 of file class_loader_imp.h.
T * pluginlib::ClassLoader< T >::createClassInstance | ( | const std::string & | lookup_name, | |
bool | auto_load = true | |||
) | [inline] |
Creates an instance of a desired class, optionally loading the associated library automatically if necessary.
lookup_name | The name of the class to load | |
auto_load | Specifies whether or not to automatically load the library containing the class, set to true by default |
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 271 of file class_loader_imp.h.
std::string pluginlib::ClassLoader< T >::getBaseClassType | ( | ) | const [inline] |
Given the lookup name of a class, returns the type of the associated base class.
Definition at line 247 of file class_loader_imp.h.
std::string pluginlib::ClassLoader< T >::getClassDescription | ( | const std::string & | lookup_name | ) | [inline] |
Given the lookup name of a class, returns its description.
lookup_name | The lookup name of the class |
Definition at line 238 of file class_loader_imp.h.
std::vector< std::string > pluginlib::ClassLoader< T >::getClassesInLibrary | ( | const std::string & | library_path | ) | [inline, private] |
Returns the names of the classes that are available in a given library.
library_path | The path to the library |
Definition at line 334 of file class_loader_imp.h.
std::string pluginlib::ClassLoader< T >::getClassLibraryPath | ( | const std::string & | lookup_name | ) | [inline, private] |
Given the name of a class, returns the path to its associated library.
lookup_name | The name of the class |
Definition at line 253 of file class_loader_imp.h.
std::string pluginlib::ClassLoader< T >::getClassPackage | ( | const std::string & | lookup_name | ) | [inline] |
Given the name of a class, returns name of the containing package.
lookup_name | The name of the class |
Definition at line 262 of file class_loader_imp.h.
std::string pluginlib::ClassLoader< T >::getClassType | ( | const std::string & | lookup_name | ) | [inline] |
Given the lookup name of a class, returns the type of the derived class associated with it.
lookup_name | The name of the class |
Definition at line 229 of file class_loader_imp.h.
std::vector< std::string > pluginlib::ClassLoader< T >::getDeclaredClasses | ( | ) | [inline] |
Returns a list of all available classes for this ClassLoader's base class type.
Definition at line 203 of file class_loader_imp.h.
std::vector< std::string > pluginlib::ClassLoader< T >::getLoadedLibraries | ( | ) | [inline, private] |
Returns the libraries that are currently loaded.
Definition at line 369 of file class_loader_imp.h.
std::string pluginlib::ClassLoader< T >::getName | ( | const std::string & | lookup_name | ) | [inline] |
Strips the package name off of a lookup name.
lookup_name | The name of the plugin |
Definition at line 214 of file class_loader_imp.h.
std::vector< std::string > pluginlib::ClassLoader< T >::getRegisteredLibraries | ( | ) | [inline] |
Returns the libraries that are registered and can be loaded.
Definition at line 353 of file class_loader_imp.h.
bool pluginlib::ClassLoader< T >::isClassAvailable | ( | const std::string & | lookup_name | ) | [inline] |
Checks if the class associated with a plugin name is available to be loaded.
lookup_name | The name of the plugin |
Definition at line 223 of file class_loader_imp.h.
bool pluginlib::ClassLoader< T >::isClassLoaded | ( | const std::string & | lookup_name | ) | [inline] |
Checks if a given class is currently loaded.
lookup_name | The lookup name of the class to query |
Definition at line 190 of file class_loader_imp.h.
bool pluginlib::ClassLoader< T >::loadClassLibrary | ( | const std::string & | library_path | ) | [inline, private] |
Dynamicaly loads a library.
library_path | The library to unload |
Definition at line 304 of file class_loader_imp.h.
void pluginlib::ClassLoader< T >::loadClassLibraryInternal | ( | const std::string & | library_path, | |
const std::string & | list_name_arg = std::string("") | |||
) | [inline, 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 321 of file class_loader_imp.h.
void pluginlib::ClassLoader< T >::loadLibraryForClass | ( | const std::string & | lookup_name | ) | [inline] |
Attempts to load a class with a given name.
lookup_name | The lookup name of the class to load |
pluginlib::LibraryLoadException | Thrown if the library for the class cannot be loaded |
Definition at line 138 of file class_loader_imp.h.
bool pluginlib::ClassLoader< T >::unloadClassLibrary | ( | const std::string & | library_path | ) | [inline, private] |
Unloads a previously dynamically loaded lobrary.
library_path | The library to unload |
Definition at line 286 of file class_loader_imp.h.
std::string pluginlib::ClassLoader< T >::base_class_ [private] |
Definition at line 228 of file class_loader.h.
std::map<std::string, ClassDesc> pluginlib::ClassLoader< T >::classes_available_ [private] |
Definition at line 227 of file class_loader.h.
LibraryCountMap pluginlib::ClassLoader< T >::loaded_libraries_ [private] |
Definition at line 223 of file class_loader.h.
Poco::ClassLoader<T> pluginlib::ClassLoader< T >::poco_class_loader_ [private] |
Definition at line 230 of file class_loader.h.