-
 

class_loader package from class_loader repo

class_loader

Package Summary

Tags No category tags.
Version 2.2.0
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

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)

Package Description

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 files), introspect the library for exported plugin classes, and allows users to instantiate objects of these exported classes without the explicit declaration (i.e. header file) for those classes.

Additional Links

Maintainers

  • Geoffrey Biggs
  • Michael Carroll

Authors

  • Dirk Thomas
  • Michel Hidalgo
  • Mirza Shah
  • Steven! Ragnarök

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.

CHANGELOG

Changelog for package class_loader

2.2.0 (2022-01-14)

  • Install includes to include/ (#191)
  • Fix include order for cpplint (#192)
  • Update maintainers to Geoffrey Biggs and Michael Carroll (#190)
  • Fix spelling mistake (#184)
  • Contributors: Audrow Nash, David V. Lu!!, Jacob Perron, Shane Loretz

2.1.2 (2021-04-12)

  • Remove travis. (#182)
  • Contributors: Chris Lalancette

2.1.1 (2021-04-06)

  • Change index.ros.org -> docs.ros.org. (#181)
  • Contributors: Chris Lalancette

2.1.0 (2021-03-18)

  • Fix ternary null check found by clang static analysis (#176)
  • Update QD to QL 1 (#177)
  • Updated console_bridge QL in QD
  • Update package maintainers. (#169)
  • enable building a static library (#163)
  • Update Quality Declaration to reflect QL 2 (#160).
  • Increase coverage with a graveyard behavior test and unmanaged instance test (#159)
  • Add Security Vulnerability Policy pointing to REP-2006. (#157)
  • Clean up and improve documentation (#156)
  • Contributors: Alejandro Hernández Cordero, Chris Lalancette, Dirk Thomas, Michel Hidalgo, Stephen Brawner, ahcorde, brawner

2.0.1 (2020-05-26)

  • Added QD to doxygen related pages (#155)
  • Updated class_loader QD (#152)
  • fix copy and paste error (#154)
  • Fixed warning (#151)
  • Increased code coverage (#141)
  • Added Doxyfile (#148)
  • Added quality declaration draft (#142)
  • Contributors: Alejandro Hernández Cordero, Tully Foote

2.0.0 (2020-04-25)

  • Export CMake targets in a addition to include directories / libraries. (#147)
  • Fixed references to poco in error strings. (#144)
  • Removed poco dependency. Shared library management is now provided by rcpputils. (#139)
  • Add missing LICENSE file, matching 3-clause BSD (#137)
  • Code style change: wrap after open parenthesis if not in one line (#138)
  • Fix Travis on macOS. (#135)
  • Use .empty() to check for an empty string. (#132)
  • Contributors: Alejandro Hernández Cordero, Chris Lalancette, Dirk Thomas, Jorge Perez

1.4.0 (2019-09-18)

  • Fixed setting AbstractMetaObjectBase base class typeid. (#127)
  • Corrected export of class_loader library. (#129)
  • Reduced the number of threads spun up in stress test. (#128)
  • Contributors: Emerson Knapp, Shane Loretz, bpwilcox

1.3.1 (2019-05-08)

  • Using ament_target_dependencies when possible (#124)
  • Contributors: ivanpauno

1.3.0 (2019-04-12)

  • Updated test configuration to check copyright of files where possible. (#123)
  • Updated to use ament_target_dependencies where possible. (#121)
  • Contributors: ivanpauno, jpsamper2009

1.2.0 (2018-11-16)

  • Updated maintainer to Steven! Ragnarok the maintainer (#107)
  • Added free impl_ in AbstractMetaObjectBase destructor (#103)
  • Overhauled CI.u (#106)
  • Fixed spacing to comply with uncrusity 0.67 (#99)
  • Updated to use console_bridge_vendor (#98)
  • Contributors: Chris Ye, Mikael Arguedas

0.3.2 (2015-04-22)

  • Fixed wrong handling of false statement (pkg-config was not installed)
  • Make catkin optional again
  • Contributors: Esteve Fernandez, Janosch Machowinski, Matthias Goldhoorn

0.3.1 (2014-12-23)

  • Depend on boost
  • Use FindPoco.cmake from ros/cmake_modules
  • Honor BUILD_SHARED_LIBS and do not force building shared libraries.
  • Contributors: Esteve Fernandez, Gary Servin, Scott K Logan

0.3.0 (2014-06-25)

  • Use system-provided console-bridge
  • Contributors: Esteve Fernandez

0.2.5 (2014-03-04)

  • Changed format of debug messages so that rosconsole_bridge can correctly parse the prefix
  • Improved debug output

0.2.4 (2014-02-12)

  • fix race condition with multi threaded library loading (#16)

0.2.3 (2013-08-21)

  • fix missing class name in logWarn output

0.2.2 (2013-07-14)

  • check for CATKIN_ENABLE_TESTING (#10)
  • fix find Poco to return full lib path (#8)
  • add missing runtime destination for library under Windows
  • add Boosst component system

0.2.1 (2013-06-06)

  • improve check for Poco foundation and headers (#7)

0.2.0 (2013-03-13)

  • use find_package for Poco/dl instead to make it work on other platforms
  • update Poco cmake file to include libdl on non-windows systems
  • No longer CATKIN_DEPEND on console_bridge

0.1.27 (2013-01-25)

  • change warning message for managed/unmanaged instance mixture in lazy loading mode

0.1.26 (2013-01-17)

  • fix all instances marked as unmanaged

0.1.25 (2013-01-16)

  • fix redundant destructor definition being pulled into plugin library for metaobjects instead of being contained with libclass_loader.so

0.1.24 (2013-01-14 15:27)

  • fix syntax error for logInform

0.1.23 (2013-01-14 15:23)

  • downgrade some warning messages to be info/debug

0.1.22 (2013-01-14 15:01)

  • add safety checks for mixing of managed/unmanaged mixing as well as pointer equivalency check between graveyard and newly created metaobjects

0.1.21 (2013-01-13)

  • fix compile issue on OSX in dependent packages (#3)
  • add more debug information

0.1.20 (2012-12-21 16:04)

  • first public release for Groovy

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged class_loader at Robotics Stack Exchange

class_loader package from class_loader repo

class_loader

Package Summary

Tags No category tags.
Version 2.5.0
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

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)

Package Description

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 files), introspect the library for exported plugin classes, and allows users to instantiate objects of these exported classes without the explicit declaration (i.e. header file) for those classes.

Additional Links

Maintainers

  • Geoffrey Biggs

Authors

  • Dirk Thomas
  • Michael Carroll
  • Michel Hidalgo
  • Mirza Shah
  • Steven! Ragnarök

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.

CHANGELOG

Changelog for package class_loader

2.5.0 (2023-02-13)

  • make sanitizer happy (#205)
  • [rolling] Update maintainers - 2022-11-07 (#206)
  • Contributors: Audrow Nash, Chen Lihui

2.4.0 (2022-11-02)

  • Remove appveyor configuration. (#204)
  • Just fix a typo in a comment. (#203)
  • make the meta-object alive in the lifecycle of the registered plugin (#201)
  • Contributors: Chen Lihui, Chris Lalancette

2.3.1 (2022-09-13)

  • Mirror rolling to ros2
  • Contributors: Audrow Nash

2.3.0 (2022-05-10)

2.2.0 (2022-01-14)

  • Install includes to include/ (#191)
  • Fix include order for cpplint (#192)
  • Update maintainers to Geoffrey Biggs and Michael Carroll (#190)
  • Fix spelling mistake (#184)
  • Contributors: Audrow Nash, David V. Lu!!, Jacob Perron, Shane Loretz

2.1.2 (2021-04-12)

  • Remove travis. (#182)
  • Contributors: Chris Lalancette

2.1.1 (2021-04-06)

  • Change index.ros.org -> docs.ros.org. (#181)
  • Contributors: Chris Lalancette

2.1.0 (2021-03-18)

  • Fix ternary null check found by clang static analysis (#176)
  • Update QD to QL 1 (#177)
  • Updated console_bridge QL in QD
  • Update package maintainers. (#169)
  • enable building a static library (#163)
  • Update Quality Declaration to reflect QL 2 (#160).
  • Increase coverage with a graveyard behavior test and unmanaged instance test (#159)
  • Add Security Vulnerability Policy pointing to REP-2006. (#157)
  • Clean up and improve documentation (#156)
  • Contributors: Alejandro Hernández Cordero, Chris Lalancette, Dirk Thomas, Michel Hidalgo, Stephen Brawner, ahcorde, brawner

2.0.1 (2020-05-26)

  • Added QD to doxygen related pages (#155)
  • Updated class_loader QD (#152)
  • fix copy and paste error (#154)
  • Fixed warning (#151)
  • Increased code coverage (#141)
  • Added Doxyfile (#148)
  • Added quality declaration draft (#142)
  • Contributors: Alejandro Hernández Cordero, Tully Foote

2.0.0 (2020-04-25)

  • Export CMake targets in a addition to include directories / libraries. (#147)
  • Fixed references to poco in error strings. (#144)
  • Removed poco dependency. Shared library management is now provided by rcpputils. (#139)
  • Add missing LICENSE file, matching 3-clause BSD (#137)
  • Code style change: wrap after open parenthesis if not in one line (#138)
  • Fix Travis on macOS. (#135)
  • Use .empty() to check for an empty string. (#132)
  • Contributors: Alejandro Hernández Cordero, Chris Lalancette, Dirk Thomas, Jorge Perez

1.4.0 (2019-09-18)

  • Fixed setting AbstractMetaObjectBase base class typeid. (#127)
  • Corrected export of class_loader library. (#129)
  • Reduced the number of threads spun up in stress test. (#128)
  • Contributors: Emerson Knapp, Shane Loretz, bpwilcox

1.3.1 (2019-05-08)

  • Using ament_target_dependencies when possible (#124)
  • Contributors: ivanpauno

1.3.0 (2019-04-12)

  • Updated test configuration to check copyright of files where possible. (#123)
  • Updated to use ament_target_dependencies where possible. (#121)
  • Contributors: ivanpauno, jpsamper2009

1.2.0 (2018-11-16)

  • Updated maintainer to Steven! Ragnarok the maintainer (#107)
  • Added free impl_ in AbstractMetaObjectBase destructor (#103)
  • Overhauled CI.u (#106)
  • Fixed spacing to comply with uncrusity 0.67 (#99)
  • Updated to use console_bridge_vendor (#98)
  • Contributors: Chris Ye, Mikael Arguedas

0.3.2 (2015-04-22)

  • Fixed wrong handling of false statement (pkg-config was not installed)
  • Make catkin optional again
  • Contributors: Esteve Fernandez, Janosch Machowinski, Matthias Goldhoorn

0.3.1 (2014-12-23)

  • Depend on boost
  • Use FindPoco.cmake from ros/cmake_modules
  • Honor BUILD_SHARED_LIBS and do not force building shared libraries.
  • Contributors: Esteve Fernandez, Gary Servin, Scott K Logan

0.3.0 (2014-06-25)

  • Use system-provided console-bridge
  • Contributors: Esteve Fernandez

0.2.5 (2014-03-04)

  • Changed format of debug messages so that rosconsole_bridge can correctly parse the prefix
  • Improved debug output

0.2.4 (2014-02-12)

  • fix race condition with multi threaded library loading (#16)

0.2.3 (2013-08-21)

  • fix missing class name in logWarn output

0.2.2 (2013-07-14)

  • check for CATKIN_ENABLE_TESTING (#10)
  • fix find Poco to return full lib path (#8)
  • add missing runtime destination for library under Windows
  • add Boosst component system

0.2.1 (2013-06-06)

  • improve check for Poco foundation and headers (#7)

0.2.0 (2013-03-13)

  • use find_package for Poco/dl instead to make it work on other platforms
  • update Poco cmake file to include libdl on non-windows systems
  • No longer CATKIN_DEPEND on console_bridge

0.1.27 (2013-01-25)

  • change warning message for managed/unmanaged instance mixture in lazy loading mode

0.1.26 (2013-01-17)

  • fix all instances marked as unmanaged

0.1.25 (2013-01-16)

  • fix redundant destructor definition being pulled into plugin library for metaobjects instead of being contained with libclass_loader.so

0.1.24 (2013-01-14 15:27)

  • fix syntax error for logInform

0.1.23 (2013-01-14 15:23)

  • downgrade some warning messages to be info/debug

0.1.22 (2013-01-14 15:01)

  • add safety checks for mixing of managed/unmanaged mixing as well as pointer equivalency check between graveyard and newly created metaobjects

0.1.21 (2013-01-13)

  • fix compile issue on OSX in dependent packages (#3)
  • add more debug information

0.1.20 (2012-12-21 16:04)

  • first public release for Groovy

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged class_loader at Robotics Stack Exchange

class_loader package from class_loader repo

class_loader

Package Summary

Tags No category tags.
Version 2.7.0
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

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)

Package Description

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 files), introspect the library for exported plugin classes, and allows users to instantiate objects of these exported classes without the explicit declaration (i.e. header file) for those classes.

Additional Links

Maintainers

  • Geoffrey Biggs

Authors

  • Dirk Thomas
  • Michael Carroll
  • Michel Hidalgo
  • Mirza Shah
  • Steven! Ragnarök

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.

CHANGELOG

Changelog for package class_loader

2.7.0 (2023-12-26)

  • Remove all uses of ament_target_dependencies. (#210)
  • Update to C++17 (#209)
  • Contributors: Chris Lalancette

2.6.0 (2023-04-28)

2.5.0 (2023-02-13)

  • make sanitizer happy (#205)
  • [rolling] Update maintainers - 2022-11-07 (#206)
  • Contributors: Audrow Nash, Chen Lihui

2.4.0 (2022-11-02)

  • Remove appveyor configuration. (#204)
  • Just fix a typo in a comment. (#203)
  • make the meta-object alive in the lifecycle of the registered plugin (#201)
  • Contributors: Chen Lihui, Chris Lalancette

2.3.1 (2022-09-13)

  • Mirror rolling to ros2
  • Contributors: Audrow Nash

2.3.0 (2022-05-10)

2.2.0 (2022-01-14)

  • Install includes to include/ (#191)
  • Fix include order for cpplint (#192)
  • Update maintainers to Geoffrey Biggs and Michael Carroll (#190)
  • Fix spelling mistake (#184)
  • Contributors: Audrow Nash, David V. Lu!!, Jacob Perron, Shane Loretz

2.1.2 (2021-04-12)

  • Remove travis. (#182)
  • Contributors: Chris Lalancette

2.1.1 (2021-04-06)

  • Change index.ros.org -> docs.ros.org. (#181)
  • Contributors: Chris Lalancette

2.1.0 (2021-03-18)

  • Fix ternary null check found by clang static analysis (#176)
  • Update QD to QL 1 (#177)
  • Updated console_bridge QL in QD
  • Update package maintainers. (#169)
  • enable building a static library (#163)
  • Update Quality Declaration to reflect QL 2 (#160).
  • Increase coverage with a graveyard behavior test and unmanaged instance test (#159)
  • Add Security Vulnerability Policy pointing to REP-2006. (#157)
  • Clean up and improve documentation (#156)
  • Contributors: Alejandro Hernández Cordero, Chris Lalancette, Dirk Thomas, Michel Hidalgo, Stephen Brawner, ahcorde, brawner

2.0.1 (2020-05-26)

  • Added QD to doxygen related pages (#155)
  • Updated class_loader QD (#152)
  • fix copy and paste error (#154)
  • Fixed warning (#151)
  • Increased code coverage (#141)
  • Added Doxyfile (#148)
  • Added quality declaration draft (#142)
  • Contributors: Alejandro Hernández Cordero, Tully Foote

2.0.0 (2020-04-25)

  • Export CMake targets in a addition to include directories / libraries. (#147)
  • Fixed references to poco in error strings. (#144)
  • Removed poco dependency. Shared library management is now provided by rcpputils. (#139)
  • Add missing LICENSE file, matching 3-clause BSD (#137)
  • Code style change: wrap after open parenthesis if not in one line (#138)
  • Fix Travis on macOS. (#135)
  • Use .empty() to check for an empty string. (#132)
  • Contributors: Alejandro Hernández Cordero, Chris Lalancette, Dirk Thomas, Jorge Perez

1.4.0 (2019-09-18)

  • Fixed setting AbstractMetaObjectBase base class typeid. (#127)
  • Corrected export of class_loader library. (#129)
  • Reduced the number of threads spun up in stress test. (#128)
  • Contributors: Emerson Knapp, Shane Loretz, bpwilcox

1.3.1 (2019-05-08)

  • Using ament_target_dependencies when possible (#124)
  • Contributors: ivanpauno

1.3.0 (2019-04-12)

  • Updated test configuration to check copyright of files where possible. (#123)
  • Updated to use ament_target_dependencies where possible. (#121)
  • Contributors: ivanpauno, jpsamper2009

1.2.0 (2018-11-16)

  • Updated maintainer to Steven! Ragnarok the maintainer (#107)
  • Added free impl_ in AbstractMetaObjectBase destructor (#103)
  • Overhauled CI.u (#106)
  • Fixed spacing to comply with uncrusity 0.67 (#99)
  • Updated to use console_bridge_vendor (#98)
  • Contributors: Chris Ye, Mikael Arguedas

0.3.2 (2015-04-22)

  • Fixed wrong handling of false statement (pkg-config was not installed)
  • Make catkin optional again
  • Contributors: Esteve Fernandez, Janosch Machowinski, Matthias Goldhoorn

0.3.1 (2014-12-23)

  • Depend on boost
  • Use FindPoco.cmake from ros/cmake_modules
  • Honor BUILD_SHARED_LIBS and do not force building shared libraries.
  • Contributors: Esteve Fernandez, Gary Servin, Scott K Logan

0.3.0 (2014-06-25)

  • Use system-provided console-bridge
  • Contributors: Esteve Fernandez

0.2.5 (2014-03-04)

  • Changed format of debug messages so that rosconsole_bridge can correctly parse the prefix
  • Improved debug output

0.2.4 (2014-02-12)

  • fix race condition with multi threaded library loading (#16)

0.2.3 (2013-08-21)

  • fix missing class name in logWarn output

0.2.2 (2013-07-14)

  • check for CATKIN_ENABLE_TESTING (#10)
  • fix find Poco to return full lib path (#8)
  • add missing runtime destination for library under Windows
  • add Boosst component system

0.2.1 (2013-06-06)

  • improve check for Poco foundation and headers (#7)

0.2.0 (2013-03-13)

  • use find_package for Poco/dl instead to make it work on other platforms
  • update Poco cmake file to include libdl on non-windows systems
  • No longer CATKIN_DEPEND on console_bridge

0.1.27 (2013-01-25)

  • change warning message for managed/unmanaged instance mixture in lazy loading mode

0.1.26 (2013-01-17)

  • fix all instances marked as unmanaged

0.1.25 (2013-01-16)

  • fix redundant destructor definition being pulled into plugin library for metaobjects instead of being contained with libclass_loader.so

0.1.24 (2013-01-14 15:27)

  • fix syntax error for logInform

0.1.23 (2013-01-14 15:23)

  • downgrade some warning messages to be info/debug

0.1.22 (2013-01-14 15:01)

  • add safety checks for mixing of managed/unmanaged mixing as well as pointer equivalency check between graveyard and newly created metaobjects

0.1.21 (2013-01-13)

  • fix compile issue on OSX in dependent packages (#3)
  • add more debug information

0.1.20 (2012-12-21 16:04)

  • first public release for Groovy

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged class_loader at Robotics Stack Exchange

class_loader package from class_loader repo

class_loader

Package Summary

Tags No category tags.
Version 2.8.0
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

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)

Package Description

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 files), introspect the library for exported plugin classes, and allows users to instantiate objects of these exported classes without the explicit declaration (i.e. header file) for those classes.

Additional Links

Maintainers

  • Geoffrey Biggs

Authors

  • Dirk Thomas
  • Michael Carroll
  • Michel Hidalgo
  • Mirza Shah
  • Steven! Ragnarök

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.

CHANGELOG

Changelog for package class_loader

2.8.0 (2024-04-26)

2.7.0 (2023-12-26)

  • Remove all uses of ament_target_dependencies. (#210)
  • Update to C++17 (#209)
  • Contributors: Chris Lalancette

2.6.0 (2023-04-28)

2.5.0 (2023-02-13)

  • make sanitizer happy (#205)
  • [rolling] Update maintainers - 2022-11-07 (#206)
  • Contributors: Audrow Nash, Chen Lihui

2.4.0 (2022-11-02)

  • Remove appveyor configuration. (#204)
  • Just fix a typo in a comment. (#203)
  • make the meta-object alive in the lifecycle of the registered plugin (#201)
  • Contributors: Chen Lihui, Chris Lalancette

2.3.1 (2022-09-13)

  • Mirror rolling to ros2
  • Contributors: Audrow Nash

2.3.0 (2022-05-10)

2.2.0 (2022-01-14)

  • Install includes to include/ (#191)
  • Fix include order for cpplint (#192)
  • Update maintainers to Geoffrey Biggs and Michael Carroll (#190)
  • Fix spelling mistake (#184)
  • Contributors: Audrow Nash, David V. Lu!!, Jacob Perron, Shane Loretz

2.1.2 (2021-04-12)

  • Remove travis. (#182)
  • Contributors: Chris Lalancette

2.1.1 (2021-04-06)

  • Change index.ros.org -> docs.ros.org. (#181)
  • Contributors: Chris Lalancette

2.1.0 (2021-03-18)

  • Fix ternary null check found by clang static analysis (#176)
  • Update QD to QL 1 (#177)
  • Updated console_bridge QL in QD
  • Update package maintainers. (#169)
  • enable building a static library (#163)
  • Update Quality Declaration to reflect QL 2 (#160).
  • Increase coverage with a graveyard behavior test and unmanaged instance test (#159)
  • Add Security Vulnerability Policy pointing to REP-2006. (#157)
  • Clean up and improve documentation (#156)
  • Contributors: Alejandro Hernández Cordero, Chris Lalancette, Dirk Thomas, Michel Hidalgo, Stephen Brawner, ahcorde, brawner

2.0.1 (2020-05-26)

  • Added QD to doxygen related pages (#155)
  • Updated class_loader QD (#152)
  • fix copy and paste error (#154)
  • Fixed warning (#151)
  • Increased code coverage (#141)
  • Added Doxyfile (#148)
  • Added quality declaration draft (#142)
  • Contributors: Alejandro Hernández Cordero, Tully Foote

2.0.0 (2020-04-25)

  • Export CMake targets in a addition to include directories / libraries. (#147)
  • Fixed references to poco in error strings. (#144)
  • Removed poco dependency. Shared library management is now provided by rcpputils. (#139)
  • Add missing LICENSE file, matching 3-clause BSD (#137)
  • Code style change: wrap after open parenthesis if not in one line (#138)
  • Fix Travis on macOS. (#135)
  • Use .empty() to check for an empty string. (#132)
  • Contributors: Alejandro Hernández Cordero, Chris Lalancette, Dirk Thomas, Jorge Perez

1.4.0 (2019-09-18)

  • Fixed setting AbstractMetaObjectBase base class typeid. (#127)
  • Corrected export of class_loader library. (#129)
  • Reduced the number of threads spun up in stress test. (#128)
  • Contributors: Emerson Knapp, Shane Loretz, bpwilcox

1.3.1 (2019-05-08)

  • Using ament_target_dependencies when possible (#124)
  • Contributors: ivanpauno

1.3.0 (2019-04-12)

  • Updated test configuration to check copyright of files where possible. (#123)
  • Updated to use ament_target_dependencies where possible. (#121)
  • Contributors: ivanpauno, jpsamper2009

1.2.0 (2018-11-16)

  • Updated maintainer to Steven! Ragnarok the maintainer (#107)
  • Added free impl_ in AbstractMetaObjectBase destructor (#103)
  • Overhauled CI.u (#106)
  • Fixed spacing to comply with uncrusity 0.67 (#99)
  • Updated to use console_bridge_vendor (#98)
  • Contributors: Chris Ye, Mikael Arguedas

0.3.2 (2015-04-22)

  • Fixed wrong handling of false statement (pkg-config was not installed)
  • Make catkin optional again
  • Contributors: Esteve Fernandez, Janosch Machowinski, Matthias Goldhoorn

0.3.1 (2014-12-23)

  • Depend on boost
  • Use FindPoco.cmake from ros/cmake_modules
  • Honor BUILD_SHARED_LIBS and do not force building shared libraries.
  • Contributors: Esteve Fernandez, Gary Servin, Scott K Logan

0.3.0 (2014-06-25)

  • Use system-provided console-bridge
  • Contributors: Esteve Fernandez

0.2.5 (2014-03-04)

  • Changed format of debug messages so that rosconsole_bridge can correctly parse the prefix
  • Improved debug output

0.2.4 (2014-02-12)

  • fix race condition with multi threaded library loading (#16)

0.2.3 (2013-08-21)

  • fix missing class name in logWarn output

0.2.2 (2013-07-14)

  • check for CATKIN_ENABLE_TESTING (#10)
  • fix find Poco to return full lib path (#8)
  • add missing runtime destination for library under Windows
  • add Boosst component system

0.2.1 (2013-06-06)

  • improve check for Poco foundation and headers (#7)

0.2.0 (2013-03-13)

  • use find_package for Poco/dl instead to make it work on other platforms
  • update Poco cmake file to include libdl on non-windows systems
  • No longer CATKIN_DEPEND on console_bridge

0.1.27 (2013-01-25)

  • change warning message for managed/unmanaged instance mixture in lazy loading mode

0.1.26 (2013-01-17)

  • fix all instances marked as unmanaged

0.1.25 (2013-01-16)

  • fix redundant destructor definition being pulled into plugin library for metaobjects instead of being contained with libclass_loader.so

0.1.24 (2013-01-14 15:27)

  • fix syntax error for logInform

0.1.23 (2013-01-14 15:23)

  • downgrade some warning messages to be info/debug

0.1.22 (2013-01-14 15:01)

  • add safety checks for mixing of managed/unmanaged mixing as well as pointer equivalency check between graveyard and newly created metaobjects

0.1.21 (2013-01-13)

  • fix compile issue on OSX in dependent packages (#3)
  • add more debug information

0.1.20 (2012-12-21 16:04)

  • first public release for Groovy

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged class_loader at Robotics Stack Exchange

class_loader package from class_loader repo

class_loader

Package Summary

Tags No category tags.
Version 0.5.0
License BSD
Build type CATKIN
Use RECOMMENDED

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
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

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 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.

Additional Links

Maintainers

  • Michael Carroll
  • Michel Hidalgo

Authors

  • Mirza Shah
  • Steven! Ragnarök
README
No README found. No README in repository either.
CHANGELOG

Changelog for package class_loader

0.5.0 (2020-02-07)

  • Declare specific boost dependencies. (#136)
  • Contributors: Mikael Arguedas

0.4.2 (2020-02-07)

  • Add Python 3 support to header update scripts. (#122)
  • Set test dll runtime output to CATKIN_PACKAGE_BIN_DESTINATION on Windows. (#113)
  • Improve warning message formatting and detail. (#108)
  • Add export to variable in order to allow builds on Windows. (#102)
  • Ignore warnings about import/exports when deriving from std classes on MSVC. (#116)
  • Use #pragma message() to print out warnings in MSVC. (#114)
  • Avoid including Poco headers globally. (#115)
  • Make Steven! Ragnarok the maintainer (#107)
  • Fix non-defined CMake variable (forward-port to Melodic). (#97)
  • Contributors: James Xu, Johnson Shih, Markus Grimm, Mikael Arguedas, Robert Haschke

0.4.1 (2018-04-27)

  • Provide std::shared_ptr interface (#95)
  • Windows compat and style fixups (#90)
    • add visibility macros to public functions
    • rename private namespace 'class_loader_private' to 'impl' to match ros2 branch
  • use new headers to build library (#93)
  • Contributors: Mikael Arguedas

0.4.0 (2018-02-15)

  • Stop checking for c++11 support (#87) all Melodic targeted platforms use gnu++14 so checking and forcing -std=c++11 doesn't make sense anymore
  • [ABI breaking] use std::string references for exceptions (#86)
  • deprecate .h headers in favor of .hpp headers (#81)
  • provide a script with exhaustive rules for header replacement
  • comply with package format2 xsd (#83)
  • [ABI breaking] Exceptions fixups (#82)
    • inline exceptions
    • use throw statement rather than function
  • [linter] add nolint for global std::string used for testing (#79)
  • use auto for all for loops iterating on vectors/maps (#78)
  • Add systemLibraryFormat and systemLibraryPrefix functions (#77)
  • [ABI breaking] Bring melodic-devel closer to ros2 branch (#76)
    • comply with extra and pedantic compiler flags
    • use c++11 nullptr instead of NULL
    • make ABI breaking change for explicit constructors
    • make linters happy
    • no need to support console_bridge < 0.3.0 anymore
    • remove obsolete todo
    • add virtual destructor in test
    • vector size() returns size_t
    • simplify branching
  • [fix warnings] c++11 requires at least one argument for ... (#71)
  • [linter] Use std::string::empty instead comparing with an empty string (#69)
  • [linter] wrap console bridge invocation lines (#68)
  • OSRF and not willow in licence header (#67)
  • Contributors: David Wagner, Mikael Arguedas

0.3.8 (2017-11-16)

  • Fix console_bridge marcos definition (#66)
  • Style overhaul (#64) (#62)
  • Add copyright notice to unique_ptr_test.cpp (#65)
  • Contributors: Maarten de Vries, Mikael Arguedas

0.3.7 (2017-07-27)

  • switch to package format 2 (#56)
  • remove trailing whitespaces (#55)
  • use CONSOLE_BRIDGE_X logging macros (#52)
  • Contributors: Mikael Arguedas, jmachowinski

0.3.6 (2016-10-24)

  • Made changes to two locking mechanisms inside class loader core's loadLibrary() function: 1) I added a lock to the 'addClassLoaderOwnerFor...' function to protect it against a race condition with the unloadLibrary() function. 2) I also raised the loader lock to cover the whole function. Previously the check to see if a library is already loaded and the actual loading of the library was not atomic. Multiple threads could create shared library objects, for example.
  • Contributors: Jonathan Meyer

0.3.5 (2016-09-20)

  • Add ClassLoader::createUniqueInstance (#38)
    • Wrap comments on createInstance and friend.
    • Delegate createInstance and createUnmanagedInstance to private impl.
    • Add ClassLoader::createUniqueInstance.
    • MultiLibraryClassLoader: Factor out getClassLoaderForClass.
    • MultiLibraryClassLoader: Add unique_ptr API.
    • Add tests for unique_ptr API.
  • Contributors: Maarten de Vries

0.3.4 (2016-06-22)

  • cleanup: don't use active_class_loaders_[library_path] for existence test (#35)
    • cleanup: don't use active_class_loaders_[library_path] for existence test
    • this accumulates map entries with NULL pointer
    • fixing it, allows some cleanup
    • list headers in CodeBlocks / QtCreator
    • explicitly list all headers
  • Merge pull request #34 from rhaschke/fix-on-demand-unloading fix on demand unloading
  • Merge pull request #32 from saarnold/fixed_unset_variable_evaluation fixed evaluation of undefined variable
  • fixed evaluation of undefined variable
  • not unloading the ClassLoaders (to avoid the SEVERE WARNING) doesn't work either
  • bugfix: enable on-demand loading/unloading with MultiClassLoader
    • enforce loading of library in loadLibrary(), otherwise we cannot know
    • don't unload libraries in destructor when on-demand-unloading is enabled
  • extra utest: MultiClassLoaderTest.lazyLoad succeeds two times in a row?
  • added MultiLibraryClassLoader unittest
  • Contributors: Mikael Arguedas, Robert Haschke, Sascha Arnold

0.3.3 (2016-03-10)

  • update maintainer
  • Merge pull request #26 from goldhoorn/indigo-devel Added option to disable the catkin build
  • Added option to disable the catkin build
  • Contributors: Esteve Fernandez, Matthias Goldhoorn, Mikael Arguedas

0.3.2 (2015-04-22)

  • Fixed wrong handling of false statement (pkg-config was not installed)
  • Make catkin optional again
  • Contributors: Esteve Fernandez, Janosch Machowinski, Matthias Goldhoorn

0.3.1 (2014-12-23)

  • Depend on boost
  • Use FindPoco.cmake from ros/cmake_modules
  • Honor BUILD_SHARED_LIBS and do not force building shared libraries.
  • Contributors: Esteve Fernandez, Gary Servin, Scott K Logan

0.3.0 (2014-06-25)

  • Use system-provided console-bridge
  • Contributors: Esteve Fernandez

0.2.5 (2014-03-04)

  • Changed format of debug messages so that rosconsole_bridge can correctly parse the prefix
  • Improved debug output

0.2.4 (2014-02-12)

  • fix race condition with multi threaded library loading (#16)

0.2.3 (2013-08-21)

  • fix missing class name in logWarn output

0.2.2 (2013-07-14)

  • check for CATKIN_ENABLE_TESTING (#10)
  • fix find Poco to return full lib path (#8)
  • add missing runtime destination for library under Windows
  • add Boosst component system

0.2.1 (2013-06-06)

  • improve check for Poco foundation and headers (#7)

0.2.0 (2013-03-13)

  • use find_package for Poco/dl instead to make it work on other platforms
  • update Poco cmake file to include libdl on non-windows systems
  • No longer CATKIN_DEPEND on console_bridge

0.1.27 (2013-01-25)

  • change warning message for managed/unmanaged instance mixture in lazy loading mode

0.1.26 (2013-01-17)

  • fix all instances marked as unmanaged

0.1.25 (2013-01-16)

  • fix redundant destructor definition being pulled into plugin library for metaobjects instead of being contained with libclass_loader.so

0.1.24 (2013-01-14 15:27)

  • fix syntax error for logInform

0.1.23 (2013-01-14 15:23)

  • downgrade some warning messages to be info/debug

0.1.22 (2013-01-14 15:01)

  • add safety checks for mixing of managed/unmanaged mixing as well as pointer equivalency check between graveyard and newly created metaobjects

0.1.21 (2013-01-13)

  • fix compile issue on OSX in dependent packages (#3)
  • add more debug information

0.1.20 (2012-12-21 16:04)

  • first public release for Groovy

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged class_loader at Robotics Stack Exchange

class_loader package from class_loader repo

class_loader

Package Summary

Tags No category tags.
Version 2.1.2
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

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)

Package Description

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 files), introspect the library for exported plugin classes, and allows users to instantiate objects of these exported classes without the explicit declaration (i.e. header file) for those classes.

Additional Links

Maintainers

  • Michael Carroll
  • Michel Hidalgo

Authors

  • Mirza Shah
  • Dirk Thomas
  • Steven! Ragnarök

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.

CHANGELOG

Changelog for package class_loader

2.1.2 (2021-04-12)

  • Remove travis. (#182)
  • Contributors: Chris Lalancette

2.1.1 (2021-04-06)

  • Change index.ros.org -> docs.ros.org. (#181)
  • Contributors: Chris Lalancette

2.1.0 (2021-03-18)

  • Fix ternary null check found by clang static analysis (#176)
  • Update QD to QL 1 (#177)
  • Updated console_bridge QL in QD
  • Update package maintainers. (#169)
  • enable building a static library (#163)
  • Update Quality Declaration to reflect QL 2 (#160).
  • Increase coverage with a graveyard behavior test and unmanaged instance test (#159)
  • Add Security Vulnerability Policy pointing to REP-2006. (#157)
  • Clean up and improve documentation (#156)
  • Contributors: Alejandro Hernández Cordero, Chris Lalancette, Dirk Thomas, Michel Hidalgo, Stephen Brawner, ahcorde, brawner

2.0.1 (2020-05-26)

  • Added QD to doxygen related pages (#155)
  • Updated class_loader QD (#152)
  • fix copy and paste error (#154)
  • Fixed warning (#151)
  • Increased code coverage (#141)
  • Added Doxyfile (#148)
  • Added quality declaration draft (#142)
  • Contributors: Alejandro Hernández Cordero, Tully Foote

2.0.0 (2020-04-25)

  • Export CMake targets in a addition to include directories / libraries. (#147)
  • Fixed references to poco in error strings. (#144)
  • Removed poco dependency. Shared library management is now provided by rcpputils. (#139)
  • Add missing LICENSE file, matching 3-clause BSD (#137)
  • Code style change: wrap after open parenthesis if not in one line (#138)
  • Fix Travis on macOS. (#135)
  • Use .empty() to check for an empty string. (#132)
  • Contributors: Alejandro Hernández Cordero, Chris Lalancette, Dirk Thomas, Jorge Perez

1.4.0 (2019-09-18)

  • Fixed setting AbstractMetaObjectBase base class typeid. (#127)
  • Corrected export of class_loader library. (#129)
  • Reduced the number of threads spun up in stress test. (#128)
  • Contributors: Emerson Knapp, Shane Loretz, bpwilcox

1.3.1 (2019-05-08)

  • Using ament_target_dependencies when possible (#124)
  • Contributors: ivanpauno

1.3.0 (2019-04-12)

  • Updated test configuration to check copyright of files where possible. (#123)
  • Updated to use ament_target_dependencies where possible. (#121)
  • Contributors: ivanpauno, jpsamper2009

1.2.0 (2018-11-16)

  • Updated maintainer to Steven! Ragnarok the maintainer (#107)
  • Added free impl_ in AbstractMetaObjectBase destructor (#103)
  • Overhauled CI.u (#106)
  • Fixed spacing to comply with uncrusity 0.67 (#99)
  • Updated to use console_bridge_vendor (#98)
  • Contributors: Chris Ye, Mikael Arguedas

0.3.2 (2015-04-22)

  • Fixed wrong handling of false statement (pkg-config was not installed)
  • Make catkin optional again
  • Contributors: Esteve Fernandez, Janosch Machowinski, Matthias Goldhoorn

0.3.1 (2014-12-23)

  • Depend on boost
  • Use FindPoco.cmake from ros/cmake_modules
  • Honor BUILD_SHARED_LIBS and do not force building shared libraries.
  • Contributors: Esteve Fernandez, Gary Servin, Scott K Logan

0.3.0 (2014-06-25)

  • Use system-provided console-bridge
  • Contributors: Esteve Fernandez

0.2.5 (2014-03-04)

  • Changed format of debug messages so that rosconsole_bridge can correctly parse the prefix
  • Improved debug output

0.2.4 (2014-02-12)

  • fix race condition with multi threaded library loading (#16)

0.2.3 (2013-08-21)

  • fix missing class name in logWarn output

0.2.2 (2013-07-14)

  • check for CATKIN_ENABLE_TESTING (#10)
  • fix find Poco to return full lib path (#8)
  • add missing runtime destination for library under Windows
  • add Boosst component system

0.2.1 (2013-06-06)

  • improve check for Poco foundation and headers (#7)

0.2.0 (2013-03-13)

  • use find_package for Poco/dl instead to make it work on other platforms
  • update Poco cmake file to include libdl on non-windows systems
  • No longer CATKIN_DEPEND on console_bridge

0.1.27 (2013-01-25)

  • change warning message for managed/unmanaged instance mixture in lazy loading mode

0.1.26 (2013-01-17)

  • fix all instances marked as unmanaged

0.1.25 (2013-01-16)

  • fix redundant destructor definition being pulled into plugin library for metaobjects instead of being contained with libclass_loader.so

0.1.24 (2013-01-14 15:27)

  • fix syntax error for logInform

0.1.23 (2013-01-14 15:23)

  • downgrade some warning messages to be info/debug

0.1.22 (2013-01-14 15:01)

  • add safety checks for mixing of managed/unmanaged mixing as well as pointer equivalency check between graveyard and newly created metaobjects

0.1.21 (2013-01-13)

  • fix compile issue on OSX in dependent packages (#3)
  • add more debug information

0.1.20 (2012-12-21 16:04)

  • first public release for Groovy

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged class_loader at Robotics Stack Exchange

class_loader package from class_loader repo

class_loader

Package Summary

Tags No category tags.
Version 0.4.2
License BSD
Build type CATKIN
Use RECOMMENDED

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
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

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 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.

Additional Links

Maintainers

  • Michael Carroll
  • Geoffrey Biggs

Authors

  • Mirza Shah
  • Steven! Ragnarök
README
No README found. No README in repository either.
CHANGELOG

Changelog for package class_loader

0.4.2 (2020-02-07)

  • Add Python 3 support to header update scripts. (#122)
  • Set test dll runtime output to CATKIN_PACKAGE_BIN_DESTINATION on Windows. (#113)
  • Improve warning message formatting and detail. (#108)
  • Add export to variable in order to allow builds on Windows. (#102)
  • Ignore warnings about import/exports when deriving from std classes on MSVC. (#116)
  • Use #pragma message() to print out warnings in MSVC. (#114)
  • Avoid including Poco headers globally. (#115)
  • Make Steven! Ragnarok the maintainer (#107)
  • Fix non-defined CMake variable (forward-port to Melodic). (#97)
  • Contributors: James Xu, Johnson Shih, Markus Grimm, Mikael Arguedas, Robert Haschke

0.4.1 (2018-04-27)

  • Provide std::shared_ptr interface (#95)
  • Windows compat and style fixups (#90)
    • add visibility macros to public functions
    • rename private namespace 'class_loader_private' to 'impl' to match ros2 branch
  • use new headers to build library (#93)
  • Contributors: Mikael Arguedas

0.4.0 (2018-02-15)

  • Stop checking for c++11 support (#87) all Melodic targeted platforms use gnu++14 so checking and forcing -std=c++11 doesn't make sense anymore
  • [ABI breaking] use std::string references for exceptions (#86)
  • deprecate .h headers in favor of .hpp headers (#81)
  • provide a script with exhaustive rules for header replacement
  • comply with package format2 xsd (#83)
  • [ABI breaking] Exceptions fixups (#82)
    • inline exceptions
    • use throw statement rather than function
  • [linter] add nolint for global std::string used for testing (#79)
  • use auto for all for loops iterating on vectors/maps (#78)
  • Add systemLibraryFormat and systemLibraryPrefix functions (#77)
  • [ABI breaking] Bring melodic-devel closer to ros2 branch (#76)
    • comply with extra and pedantic compiler flags
    • use c++11 nullptr instead of NULL
    • make ABI breaking change for explicit constructors
    • make linters happy
    • no need to support console_bridge < 0.3.0 anymore
    • remove obsolete todo
    • add virtual destructor in test
    • vector size() returns size_t
    • simplify branching
  • [fix warnings] c++11 requires at least one argument for ... (#71)
  • [linter] Use std::string::empty instead comparing with an empty string (#69)
  • [linter] wrap console bridge invocation lines (#68)
  • OSRF and not willow in licence header (#67)
  • Contributors: David Wagner, Mikael Arguedas

0.3.8 (2017-11-16)

  • Fix console_bridge marcos definition (#66)
  • Style overhaul (#64) (#62)
  • Add copyright notice to unique_ptr_test.cpp (#65)
  • Contributors: Maarten de Vries, Mikael Arguedas

0.3.7 (2017-07-27)

  • switch to package format 2 (#56)
  • remove trailing whitespaces (#55)
  • use CONSOLE_BRIDGE_X logging macros (#52)
  • Contributors: Mikael Arguedas, jmachowinski

0.3.6 (2016-10-24)

  • Made changes to two locking mechanisms inside class loader core's loadLibrary() function: 1) I added a lock to the 'addClassLoaderOwnerFor...' function to protect it against a race condition with the unloadLibrary() function. 2) I also raised the loader lock to cover the whole function. Previously the check to see if a library is already loaded and the actual loading of the library was not atomic. Multiple threads could create shared library objects, for example.
  • Contributors: Jonathan Meyer

0.3.5 (2016-09-20)

  • Add ClassLoader::createUniqueInstance (#38)
    • Wrap comments on createInstance and friend.
    • Delegate createInstance and createUnmanagedInstance to private impl.
    • Add ClassLoader::createUniqueInstance.
    • MultiLibraryClassLoader: Factor out getClassLoaderForClass.
    • MultiLibraryClassLoader: Add unique_ptr API.
    • Add tests for unique_ptr API.
  • Contributors: Maarten de Vries

0.3.4 (2016-06-22)

  • cleanup: don't use active_class_loaders_[library_path] for existence test (#35)
    • cleanup: don't use active_class_loaders_[library_path] for existence test
    • this accumulates map entries with NULL pointer
    • fixing it, allows some cleanup
    • list headers in CodeBlocks / QtCreator
    • explicitly list all headers
  • Merge pull request #34 from rhaschke/fix-on-demand-unloading fix on demand unloading
  • Merge pull request #32 from saarnold/fixed_unset_variable_evaluation fixed evaluation of undefined variable
  • fixed evaluation of undefined variable
  • not unloading the ClassLoaders (to avoid the SEVERE WARNING) doesn't work either
  • bugfix: enable on-demand loading/unloading with MultiClassLoader
    • enforce loading of library in loadLibrary(), otherwise we cannot know
    • don't unload libraries in destructor when on-demand-unloading is enabled
  • extra utest: MultiClassLoaderTest.lazyLoad succeeds two times in a row?
  • added MultiLibraryClassLoader unittest
  • Contributors: Mikael Arguedas, Robert Haschke, Sascha Arnold

0.3.3 (2016-03-10)

  • update maintainer
  • Merge pull request #26 from goldhoorn/indigo-devel Added option to disable the catkin build
  • Added option to disable the catkin build
  • Contributors: Esteve Fernandez, Matthias Goldhoorn, Mikael Arguedas

0.3.2 (2015-04-22)

  • Fixed wrong handling of false statement (pkg-config was not installed)
  • Make catkin optional again
  • Contributors: Esteve Fernandez, Janosch Machowinski, Matthias Goldhoorn

0.3.1 (2014-12-23)

  • Depend on boost
  • Use FindPoco.cmake from ros/cmake_modules
  • Honor BUILD_SHARED_LIBS and do not force building shared libraries.
  • Contributors: Esteve Fernandez, Gary Servin, Scott K Logan

0.3.0 (2014-06-25)

  • Use system-provided console-bridge
  • Contributors: Esteve Fernandez

0.2.5 (2014-03-04)

  • Changed format of debug messages so that rosconsole_bridge can correctly parse the prefix
  • Improved debug output

0.2.4 (2014-02-12)

  • fix race condition with multi threaded library loading (#16)

0.2.3 (2013-08-21)

  • fix missing class name in logWarn output

0.2.2 (2013-07-14)

  • check for CATKIN_ENABLE_TESTING (#10)
  • fix find Poco to return full lib path (#8)
  • add missing runtime destination for library under Windows
  • add Boosst component system

0.2.1 (2013-06-06)

  • improve check for Poco foundation and headers (#7)

0.2.0 (2013-03-13)

  • use find_package for Poco/dl instead to make it work on other platforms
  • update Poco cmake file to include libdl on non-windows systems
  • No longer CATKIN_DEPEND on console_bridge

0.1.27 (2013-01-25)

  • change warning message for managed/unmanaged instance mixture in lazy loading mode

0.1.26 (2013-01-17)

  • fix all instances marked as unmanaged

0.1.25 (2013-01-16)

  • fix redundant destructor definition being pulled into plugin library for metaobjects instead of being contained with libclass_loader.so

0.1.24 (2013-01-14 15:27)

  • fix syntax error for logInform

0.1.23 (2013-01-14 15:23)

  • downgrade some warning messages to be info/debug

0.1.22 (2013-01-14 15:01)

  • add safety checks for mixing of managed/unmanaged mixing as well as pointer equivalency check between graveyard and newly created metaobjects

0.1.21 (2013-01-13)

  • fix compile issue on OSX in dependent packages (#3)
  • add more debug information

0.1.20 (2012-12-21 16:04)

  • first public release for Groovy

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged class_loader at Robotics Stack Exchange