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 202 of file class_loader.h.
| typedef std::map<std::string, ClassDesc>::iterator pluginlib::ClassLoader< T >::ClassMapIterator |
Definition at line 208 of file class_loader.h.
typedef std::map<std::string, unsigned int> pluginlib::ClassLoader< T >::LibraryCountMap [private] |
Definition at line 205 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" |
| pluginlib::LibraryLoadException | Thrown if package manifest cannot be found |
Definition at line 49 of file class_loader_imp.h.
| pluginlib::ClassLoader< T >::~ClassLoader | ( | ) | [inline] |
Destructor for ClassLoader.
Definition at line 104 of file class_loader_imp.h.
| T * pluginlib::ClassLoader< T >::createUnmanagedInstance | ( | const std::string & | lookup_name | ) | [inline] |
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 | ( | ) | [inline, 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 | |||
| ) | [inline, 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 [inline, 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 | ) | [inline, 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 | ) | [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 352 of file class_loader_imp.h.
| std::string pluginlib::ClassLoader< T >::getClassLibraryPath | ( | const std::string & | lookup_name | ) | [inline, 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 | ) | [inline, 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 | ) | [inline, 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 | ( | ) | [inline, 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 | ) | [inline, 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 | ( | ) | [inline, 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 | ) | [inline, 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 | ) | [inline, 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 | ( | ) | [inline, 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 | ) | [inline, 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 | ) | [inline, 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 | ) | [inline, 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("") | |||
| ) | [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 322 of file class_loader_imp.h.
| void pluginlib::ClassLoader< T >::loadLibraryForClass | ( | const std::string & | lookup_name | ) | [inline, 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 | ( | ) | [inline, 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 | ) | [inline, 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 | ) | [inline, 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 | ) | [inline, 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 421 of file class_loader.h.
std::string pluginlib::ClassLoader< T >::base_class_ [private] |
Definition at line 420 of file class_loader.h.
std::map<std::string, ClassDesc> pluginlib::ClassLoader< T >::classes_available_ [private] |
Definition at line 418 of file class_loader.h.
LibraryCountMap pluginlib::ClassLoader< T >::loaded_libraries_ [private] |
Definition at line 414 of file class_loader.h.
std::string pluginlib::ClassLoader< T >::package_ [private] |
Definition at line 419 of file class_loader.h.
Poco::ClassLoader<T> pluginlib::ClassLoader< T >::poco_class_loader_ [private] |
Definition at line 423 of file class_loader.h.