-
 

class_loader repository

Repository Summary

Checkout URI https://github.com/ros/class_loader.git
VCS Type git
VCS Version humble
Last Updated 2022-01-14
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
class_loader 2.2.0

README

class_loader

The class_loader package is a ROS-independent package for loading plugins during runtime and the foundation of the higher level ROS pluginlib library. class_loader utilizes the host operating system’s runtime loader to open runtime libraries (e.g. .so/.dll/dylib files), introspect the library for exported plugin classes, and allows users to instantiate objects of said exported classes without the explicit declaration (i.e. header file) for those classes.

class_loader VS pluginlib

class_loader is used in the implementation of the higher-level ROS package pluginlib which is the encouraged method for loading plugins in the ROS ecosystem. You should use class_loader when creating plugins intended for non-ROS packages and pluginlib when exporting plugins to ROS packages.

Quality Declaration

This package claims to be in the Quality Level 1 category, see the Quality Declaration for more details.

Usage

The interface is provided through two classes, class_loader::ClassLoader and class_loader::MultiLibraryClassLoader. Both provide similar interfaces but the former only binds to a single runtime library whereas the latter can associate with multiple libraries. The typical workflow is as follows:

  • Include class_loader/class_loader.h in your source code
  • Instantiate a class_loader::ClassLoader object passing the path and name of the library to open
class_loader::ClassLoader loader("libMyLibrary.so");

  • Query the class for exported classes which have an interface defined by some base class (MyBase in the example)
   std::vector<std::string> classes = loader.getAvailableClasses<MyBase>()

  • Create/destroy objects of said exported classes
 for(unsigned int c = 0; c < classes.size(); ++c)
 {
   boost::shared_ptr<MyBase> plugin = loader.createInstance<MyBase>(classes[c]);
   plugin->someMethod();
   //'plugin' will automatically be deleted when it goes out of scope
 }

  • Destroy the ClassLoader object to shutdown the library.

Example: Basic Workflow for ClassLoader

#include <class_loader/class_loader.h>
#include "MyBase.h" //Defines class MyBase

int main()
{
  class_loader::ClassLoader loader("libMyLibrary.so");
  std::vector<std::string> classes = loader.getAvailableClasses<MyBase>();
  for(unsigned int c = 0; c < classes.size(); ++c)
  {
    boost::shared_ptr<MyBase> plugin = loader.createInstance<MyBase>(classes[c]);
    plugin->someMethod();
  }
}

Visit the class_loader API documentation for a complete list of its main components.

CONTRIBUTING

Any contribution that you make to this repository will be under the BSD-3-Clause.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).


Repository Summary

Checkout URI https://github.com/ros/class_loader.git
VCS Type git
VCS Version iron
Last Updated 2023-02-13
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
class_loader 2.5.0

README

class_loader

The class_loader package is a ROS-independent package for loading plugins during runtime and the foundation of the higher level ROS pluginlib library. class_loader utilizes the host operating system’s runtime loader to open runtime libraries (e.g. .so/.dll/dylib files), introspect the library for exported plugin classes, and allows users to instantiate objects of said exported classes without the explicit declaration (i.e. header file) for those classes.

class_loader VS pluginlib

class_loader is used in the implementation of the higher-level ROS package pluginlib which is the encouraged method for loading plugins in the ROS ecosystem. You should use class_loader when creating plugins intended for non-ROS packages and pluginlib when exporting plugins to ROS packages.

Quality Declaration

This package claims to be in the Quality Level 1 category, see the Quality Declaration for more details.

Usage

The interface is provided through two classes, class_loader::ClassLoader and class_loader::MultiLibraryClassLoader. Both provide similar interfaces but the former only binds to a single runtime library whereas the latter can associate with multiple libraries. The typical workflow is as follows:

  • Include class_loader/class_loader.h in your source code
  • Instantiate a class_loader::ClassLoader object passing the path and name of the library to open
class_loader::ClassLoader loader("libMyLibrary.so");

  • Query the class for exported classes which have an interface defined by some base class (MyBase in the example)
   std::vector<std::string> classes = loader.getAvailableClasses<MyBase>()

  • Create/destroy objects of said exported classes
 for(unsigned int c = 0; c < classes.size(); ++c)
 {
   boost::shared_ptr<MyBase> plugin = loader.createInstance<MyBase>(classes[c]);
   plugin->someMethod();
   //'plugin' will automatically be deleted when it goes out of scope
 }

  • Destroy the ClassLoader object to shutdown the library.

Example: Basic Workflow for ClassLoader

#include <class_loader/class_loader.h>
#include "MyBase.h" //Defines class MyBase

int main()
{
  class_loader::ClassLoader loader("libMyLibrary.so");
  std::vector<std::string> classes = loader.getAvailableClasses<MyBase>();
  for(unsigned int c = 0; c < classes.size(); ++c)
  {
    boost::shared_ptr<MyBase> plugin = loader.createInstance<MyBase>(classes[c]);
    plugin->someMethod();
  }
}

Visit the class_loader API documentation for a complete list of its main components.

CONTRIBUTING

Any contribution that you make to this repository will be under the BSD-3-Clause.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).


Repository Summary

Checkout URI https://github.com/ros/class_loader.git
VCS Type git
VCS Version jazzy
Last Updated 2023-12-26
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
class_loader 2.7.0

README

class_loader

The class_loader package is a ROS-independent package for loading plugins during runtime and the foundation of the higher level ROS pluginlib library. class_loader utilizes the host operating system’s runtime loader to open runtime libraries (e.g. .so/.dll/dylib files), introspect the library for exported plugin classes, and allows users to instantiate objects of said exported classes without the explicit declaration (i.e. header file) for those classes.

class_loader VS pluginlib

class_loader is used in the implementation of the higher-level ROS package pluginlib which is the encouraged method for loading plugins in the ROS ecosystem. You should use class_loader when creating plugins intended for non-ROS packages and pluginlib when exporting plugins to ROS packages.

Quality Declaration

This package claims to be in the Quality Level 1 category, see the Quality Declaration for more details.

Usage

The interface is provided through two classes, class_loader::ClassLoader and class_loader::MultiLibraryClassLoader. Both provide similar interfaces but the former only binds to a single runtime library whereas the latter can associate with multiple libraries. The typical workflow is as follows:

  • Include class_loader/class_loader.h in your source code
  • Instantiate a class_loader::ClassLoader object passing the path and name of the library to open
class_loader::ClassLoader loader("libMyLibrary.so");

  • Query the class for exported classes which have an interface defined by some base class (MyBase in the example)
   std::vector<std::string> classes = loader.getAvailableClasses<MyBase>()

  • Create/destroy objects of said exported classes
 for(unsigned int c = 0; c < classes.size(); ++c)
 {
   boost::shared_ptr<MyBase> plugin = loader.createInstance<MyBase>(classes[c]);
   plugin->someMethod();
   //'plugin' will automatically be deleted when it goes out of scope
 }

  • Destroy the ClassLoader object to shutdown the library.

Example: Basic Workflow for ClassLoader

#include <class_loader/class_loader.h>
#include "MyBase.h" //Defines class MyBase

int main()
{
  class_loader::ClassLoader loader("libMyLibrary.so");
  std::vector<std::string> classes = loader.getAvailableClasses<MyBase>();
  for(unsigned int c = 0; c < classes.size(); ++c)
  {
    boost::shared_ptr<MyBase> plugin = loader.createInstance<MyBase>(classes[c]);
    plugin->someMethod();
  }
}

Visit the class_loader API documentation for a complete list of its main components.

CONTRIBUTING

Any contribution that you make to this repository will be under the BSD-3-Clause.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).


Repository Summary

Checkout URI https://github.com/ros/class_loader.git
VCS Type git
VCS Version rolling
Last Updated 2024-04-26
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
class_loader 2.8.0

README

class_loader

The class_loader package is a ROS-independent package for loading plugins during runtime and the foundation of the higher level ROS pluginlib library. class_loader utilizes the host operating system’s runtime loader to open runtime libraries (e.g. .so/.dll/dylib files), introspect the library for exported plugin classes, and allows users to instantiate objects of said exported classes without the explicit declaration (i.e. header file) for those classes.

class_loader VS pluginlib

class_loader is used in the implementation of the higher-level ROS package pluginlib which is the encouraged method for loading plugins in the ROS ecosystem. You should use class_loader when creating plugins intended for non-ROS packages and pluginlib when exporting plugins to ROS packages.

Quality Declaration

This package claims to be in the Quality Level 1 category, see the Quality Declaration for more details.

Usage

The interface is provided through two classes, class_loader::ClassLoader and class_loader::MultiLibraryClassLoader. Both provide similar interfaces but the former only binds to a single runtime library whereas the latter can associate with multiple libraries. The typical workflow is as follows:

  • Include class_loader/class_loader.h in your source code
  • Instantiate a class_loader::ClassLoader object passing the path and name of the library to open
class_loader::ClassLoader loader("libMyLibrary.so");

  • Query the class for exported classes which have an interface defined by some base class (MyBase in the example)
   std::vector<std::string> classes = loader.getAvailableClasses<MyBase>()

  • Create/destroy objects of said exported classes
 for(unsigned int c = 0; c < classes.size(); ++c)
 {
   boost::shared_ptr<MyBase> plugin = loader.createInstance<MyBase>(classes[c]);
   plugin->someMethod();
   //'plugin' will automatically be deleted when it goes out of scope
 }

  • Destroy the ClassLoader object to shutdown the library.

Example: Basic Workflow for ClassLoader

#include <class_loader/class_loader.h>
#include "MyBase.h" //Defines class MyBase

int main()
{
  class_loader::ClassLoader loader("libMyLibrary.so");
  std::vector<std::string> classes = loader.getAvailableClasses<MyBase>();
  for(unsigned int c = 0; c < classes.size(); ++c)
  {
    boost::shared_ptr<MyBase> plugin = loader.createInstance<MyBase>(classes[c]);
    plugin->someMethod();
  }
}

Visit the class_loader API documentation for a complete list of its main components.

CONTRIBUTING

Any contribution that you make to this repository will be under the BSD-3-Clause.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).


Repository Summary

Checkout URI https://github.com/ros/class_loader.git
VCS Type git
VCS Version noetic-devel
Last Updated 2024-01-09
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
class_loader 0.5.0

README

No README found.

CONTRIBUTING

No CONTRIBUTING.md found.

Repository Summary

Checkout URI https://github.com/ros/class_loader.git
VCS Type git
VCS Version galactic
Last Updated 2021-04-12
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
class_loader 2.1.2

README

class_loader

The class_loader package is a ROS-independent package for loading plugins during runtime and the foundation of the higher level ROS pluginlib library. class_loader utilizes the host operating system’s runtime loader to open runtime libraries (e.g. .so/.dll/dylib files), introspect the library for exported plugin classes, and allows users to instantiate objects of said exported classes without the explicit declaration (i.e. header file) for those classes.

class_loader VS pluginlib

class_loader is used in the implementation of the higher-level ROS package pluginlib which is the encouraged method for loading plugins in the ROS ecosystem. You should use class_loader when creating plugins intended for non-ROS packages and pluginlib when exporting plugins to ROS packages.

Quality Declaration

This package claims to be in the Quality Level 1 category, see the Quality Declaration for more details.

Usage

The interface is provided through two classes, class_loader::ClassLoader and class_loader::MultiLibraryClassLoader. Both provide similar interfaces but the former only binds to a single runtime library whereas the latter can associate with multiple libraries. The typical workflow is as follows:

  • Include class_loader/class_loader.h in your source code
  • Instantiate a class_loader::ClassLoader object passing the path and name of the library to open
class_loader::ClassLoader loader("libMyLibrary.so");

  • Query the class for exported classes which have an interface defined by some base class (MyBase in the example)
   std::vector<std::string> classes = loader.getAvailableClasses<MyBase>()

  • Create/destroy objects of said exported classes
 for(unsigned int c = 0; c < classes.size(); ++c)
 {
   boost::shared_ptr<MyBase> plugin = loader.createInstance<MyBase>(classes[c]);
   plugin->someMethod();
   //'plugin' will automatically be deleted when it goes out of scope
 }

  • Destroy the ClassLoader object to shutdown the library.

Example: Basic Workflow for ClassLoader

#include <class_loader/class_loader.h>
#include "MyBase.h" //Defines class MyBase

int main()
{
  class_loader::ClassLoader loader("libMyLibrary.so");
  std::vector<std::string> classes = loader.getAvailableClasses<MyBase>();
  for(unsigned int c = 0; c < classes.size(); ++c)
  {
    boost::shared_ptr<MyBase> plugin = loader.createInstance<MyBase>(classes[c]);
    plugin->someMethod();
  }
}

Visit the class_loader API documentation for a complete list of its main components.

CONTRIBUTING

Any contribution that you make to this repository will be under the BSD-3-Clause.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).


Repository Summary

Checkout URI https://github.com/ros/class_loader.git
VCS Type git
VCS Version melodic-devel
Last Updated 2021-12-07
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
class_loader 0.4.2

README

No README found.

CONTRIBUTING

No CONTRIBUTING.md found.