Program Listing for File plugin_utils.h
↰ Return to documentation for file (include/reach/plugin_utils.h)
#ifndef reach_PLUGIN_UTILS_H
#define reach_PLUGIN_UTILS_H
#include <yaml-cpp/yaml.h>
#include <boost/core/demangle.hpp>
#include <Eigen/Geometry>
namespace reach
{
template <typename T>
T get(const YAML::Node& config, const std::string& key)
{
if (!config[key].IsDefined())
{
std::stringstream ss;
ss << "Failed to get '" << key << "' parameter within node at line " << config.Mark().line;
throw std::runtime_error(ss.str());
}
try
{
return config[key].as<T>();
}
catch (const YAML::Exception& ex)
{
std::stringstream ss;
ss << "Failed to cast '" << key << "' parameter with value '" << config[key] << "' to expected type '"
<< boost::core::demangle(typeid(T).name()) << "' (line " << ex.mark.line << ")";
throw std::runtime_error(ss.str());
}
}
std::string resolveURI(const std::string filename);
Eigen::Isometry3d createFrame(const Eigen::Vector3f& pt, const Eigen::Vector3f& norm);
} // namespace reach
#include <boost_plugin_loader/macros.h>
#define EXPORT_DISPLAY_PLUGIN(DERIVED_CLASS, ALIAS) EXPORT_CLASS_SECTIONED(DERIVED_CLASS, ALIAS, DISPLAY_SECTION)
#define EXPORT_EVALUATOR_PLUGIN(DERIVED_CLASS, ALIAS) EXPORT_CLASS_SECTIONED(DERIVED_CLASS, ALIAS, EVALUATOR_SECTION)
#define EXPORT_IK_SOLVER_PLUGIN(DERIVED_CLASS, ALIAS) EXPORT_CLASS_SECTIONED(DERIVED_CLASS, ALIAS, IK_SOLVER_SECTION)
#define EXPORT_LOGGER_PLUGIN(DERIVED_CLASS, ALIAS) EXPORT_CLASS_SECTIONED(DERIVED_CLASS, ALIAS, LOGGER_SECTION)
#define EXPORT_TARGET_POSE_GENERATOR_PLUGIN(DERIVED_CLASS, ALIAS) \
EXPORT_CLASS_SECTIONED(DERIVED_CLASS, ALIAS, TARGET_POSE_GEN_SECTION)
#endif // reach_PLUGIN_UTILS_H