This plugin loader node loads each plugin and inputs the number to each plugin
and fetch's the result from the plugin. We can locate the calculator_loader.cpp file from the chapter_5_codes/pluginlib_calculator/src folder.
Here is the explanation of this code:
#include <boost/shared_ptr.hpp> #include <pluginlib/class_loader.h> #include <pluginlib_calculator/calculator_base.h>
These are the necessary header files to load the plugins:
pluginlib::ClassLoader<calculator_base::calc_functions>
calc_loader("pluginlib_calculator",
"calculator_base::calc_functions");
The pluginlib provides the ClassLoader class, which is inside class_loader.h, to load classes in runtime. We need to provide a name for the loader and the calculator base class as arguments:
boost::shared_ptr<calculator_base::calc_functions> add =
calc_loader.createInstance("pluginlib_calculator/Add");
This will create an instance of the Add class using the ClassLoader object:
add->get_numbers(10.0,10.0); double result = add->operation();
These lines give an input and perform the operations in the plugin instance.