Template Class ClassLoader

Inheritance Relationships

Base Type

Class Documentation

template<class T>
class ClassLoader : public pluginlib::ClassLoaderBase

A class to help manage and load classes.

Public Types

typedef std::map<std::string, ClassDesc>::iterator ClassMapIterator

Public Functions

ClassLoader(std::string package, std::string base_class, std::string attrib_name = std::string("plugin"), std::vector<std::string> plugin_xml_paths = std::vector<std::string>())
Parameters:
  • 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”

  • plugin_xml_paths – The list of paths of plugin.xml files, defaults to be crawled via ros::package::getPlugins()

Throws:

pluginlib::ClassLoaderException – if package manifest cannot be found

~ClassLoader()
T *createClassInstance(const std::string &lookup_name, bool auto_load = true)

Create an instance of a desired class, optionally loading the associated library too.

Deprecated:

use either createInstance() or createUnmanagedInstance()

Parameters:
  • 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.

Throws:
Returns:

An instance of the class

std::shared_ptr<T> createSharedInstance(const std::string &lookup_name)

Create an instance of a desired class.

Implicitly calls loadLibraryForClass() to increment the library counter.

Deleting the instance and calling unloadLibraryForClass() is automatically handled by the shared pointer.

Parameters:

lookup_name – The name of the class to load

Throws:
Returns:

An instance of the class

UniquePtr<T> createUniqueInstance(const std::string &lookup_name)

Create an instance of a desired class.

Implicitly calls loadLibraryForClass() to increment the library counter.

Deleting the instance and calling unloadLibraryForClass() is automatically handled by the unique pointer.

If you release the wrapped pointer you must manually call the original deleter when you want to destroy the released pointer.

Parameters:

lookup_name – The name of the class to load.

Throws:
Returns:

An instance of the class

T *createUnmanagedInstance(const std::string &lookup_name)

Create an instance of a desired class.

Implicitly calls loadLibraryForClass() to increment the library counter.

Attention

The ownership is transfered to the caller, which is responsible for deleting the instance and calling unloadLibraryForClass() (in order to decrement the associated library counter and unloading it if it is no more used).

Parameters:

lookup_name – The name of the class to load

Throws:
Returns:

An instance of the class

virtual std::vector<std::string> getPluginXmlPaths()

Return a list of all available plugin manifest paths for this ClassLoader’s base class type.

Returns:

A vector of strings corresponding to the paths of all available plugin manifests

virtual std::vector<std::string> getDeclaredClasses()

Return a list of all available classes for this ClassLoader’s base class type.

Returns:

A vector of strings corresponding to the names of all available classes

virtual std::string getName(const std::string &lookup_name)

Strip the package name off of a lookup name.

Parameters:

lookup_name – The name of the plugin

Returns:

The name of the plugin stripped of the package name

virtual std::string getBaseClassType() const

Given the lookup name of a class, return the type of the associated base class.

Returns:

The type of the associated base class

virtual std::string getClassType(const std::string &lookup_name)

Given the lookup name of a class, return the type of the derived class associated with it.

Parameters:

lookup_name – The name of the class

Returns:

The name of the associated derived class

virtual std::string getClassDescription(const std::string &lookup_name)

Given the lookup name of a class, return its description.

Parameters:

lookup_name – The lookup name of the class

Returns:

The description of the class

virtual std::string getClassLibraryPath(const std::string &lookup_name)

Given the name of a class, return the path to its associated library.

Parameters:

lookup_name – The name of the class

Returns:

The path to the associated library

virtual std::string getClassPackage(const std::string &lookup_name)

Given the name of a class, return name of the containing package.

Parameters:

lookup_name – The name of the class

Returns:

The name of the containing package

virtual std::string getPluginManifestPath(const std::string &lookup_name)

Given the name of a class, return the path of the associated plugin manifest.

Parameters:

lookup_name – The name of the class

Returns:

The path of the associated plugin manifest

virtual std::vector<std::string> getRegisteredLibraries()

Return the libraries that are registered and can be loaded.

Returns:

A vector of strings corresponding to the names of registered libraries

virtual bool isClassLoaded(const std::string &lookup_name)

Check if the library for a given class is currently loaded.

Parameters:

lookup_name – The lookup name of the class to query

Returns:

True if the class is loaded, false otherwise

virtual bool isClassAvailable(const std::string &lookup_name)

Check if the class associated with a plugin name is available to be loaded.

Parameters:

lookup_name – The name of the plugin

Returns:

true if the plugin is available, false otherwise

virtual void loadLibraryForClass(const std::string &lookup_name)

Attempt to load the library containing a class with a given name.

The counter for the library uses (refcount) is also incremented.

Parameters:

lookup_name – The lookup name of the class to load

Throws:

pluginlib::LibraryLoadException – if the library for the class cannot be loaded

virtual void refreshDeclaredClasses()

Refresh the list of all available classes for this ClassLoader’s base class type.

Throws:

pluginlib::LibraryLoadException – if package manifest cannot be found

virtual int unloadLibraryForClass(const std::string &lookup_name)

Decrement the counter for the library containing a class with a given name.

Also try to unload the library, If the counter reaches zero.

Parameters:

lookup_name – The lookup name of the class to unload

Throws:

pluginlib::LibraryUnloadException – if the library for the class cannot be unloaded

Returns:

The number of pending unloads until the library is removed from memory