plugin_info.cpp
Go to the documentation of this file.
1 
29 #include <boost/serialization/access.hpp>
30 #include <boost/serialization/base_object.hpp>
31 #include <boost/serialization/map.hpp>
32 #include <boost/serialization/nvp.hpp>
33 #include <boost/serialization/set.hpp>
34 #include <boost/serialization/split_member.hpp>
35 #include <boost/serialization/vector.hpp>
36 #include <boost/serialization/unordered_map.hpp>
38 
40 #include <tesseract_common/utils.h>
44 
45 namespace tesseract_common
46 {
47 /*********************************************************/
48 /****** PluginInfo *****/
49 /*********************************************************/
50 
51 std::string PluginInfo::getConfigString() const { return toYAMLString(config); }
52 
53 bool PluginInfo::operator==(const PluginInfo& rhs) const
54 {
55  bool equal = true;
56  equal &= class_name == rhs.class_name;
57  equal &= compareYAML(config, rhs.config);
58 
59  return equal;
60 }
61 bool PluginInfo::operator!=(const PluginInfo& rhs) const { return !operator==(rhs); }
62 
63 template <class Archive>
64 void PluginInfo::save(Archive& ar, const unsigned int /*version*/) const
65 {
66  ar& BOOST_SERIALIZATION_NVP(class_name);
67  std::string config_string = getConfigString();
68  ar& BOOST_SERIALIZATION_NVP(config_string);
69 }
70 
71 template <class Archive>
72 void PluginInfo::load(Archive& ar, const unsigned int /*version*/)
73 {
74  ar& BOOST_SERIALIZATION_NVP(class_name);
75  std::string config_string;
76  ar& BOOST_SERIALIZATION_NVP(config_string);
77  // On 18.04 '~' does not load as null so must check
78  config = (config_string != "~") ? YAML::Load(config_string) : YAML::Node();
79 }
80 
81 template <class Archive>
82 void PluginInfo::serialize(Archive& ar, const unsigned int version)
83 {
84  boost::serialization::split_member(ar, *this, version);
85 }
86 
87 /*********************************************************/
88 /****** PluginInfoContainer *****/
89 /*********************************************************/
90 
92 {
93  default_plugin.clear();
94  plugins.clear();
95 }
96 
98 {
99  bool equal = true;
100  equal &= default_plugin == rhs.default_plugin;
101  equal &= isIdenticalMap<PluginInfoMap, PluginInfo>(plugins, rhs.plugins);
102 
103  return equal;
104 }
105 bool PluginInfoContainer::operator!=(const PluginInfoContainer& rhs) const { return !operator==(rhs); }
106 
107 template <class Archive>
108 void PluginInfoContainer::serialize(Archive& ar, const unsigned int /*version*/)
109 {
110  ar& BOOST_SERIALIZATION_NVP(default_plugin);
111  ar& BOOST_SERIALIZATION_NVP(plugins);
112 }
113 
114 /*********************************************************/
115 /****** KinematicsPluginInfo *****/
116 /*********************************************************/
118 {
119  search_paths.insert(other.search_paths.begin(), other.search_paths.end());
120  search_libraries.insert(other.search_libraries.begin(), other.search_libraries.end());
121 
122  for (const auto& group_plugins : other.fwd_plugin_infos)
123  {
124  if (!group_plugins.second.default_plugin.empty())
125  fwd_plugin_infos[group_plugins.first].default_plugin = group_plugins.second.default_plugin;
126 
127  for (const auto& plugin_info : group_plugins.second.plugins)
128  fwd_plugin_infos[group_plugins.first].plugins[plugin_info.first] = plugin_info.second;
129  }
130 
131  for (const auto& group_plugins : other.inv_plugin_infos)
132  {
133  if (!group_plugins.second.default_plugin.empty())
134  inv_plugin_infos[group_plugins.first].default_plugin = group_plugins.second.default_plugin;
135 
136  for (const auto& plugin_info : group_plugins.second.plugins)
137  inv_plugin_infos[group_plugins.first].plugins[plugin_info.first] = plugin_info.second;
138  }
139 }
140 
142 {
143  search_paths.clear();
144  search_libraries.clear();
145  fwd_plugin_infos.clear();
146  inv_plugin_infos.clear();
147 }
148 
150 {
151  return (search_paths.empty() && search_libraries.empty() && fwd_plugin_infos.empty() && inv_plugin_infos.empty());
152 }
153 
155 {
156  bool equal = true;
157  equal &= isIdenticalSet<std::string>(search_paths, rhs.search_paths);
158  equal &= isIdenticalSet<std::string>(search_libraries, rhs.search_libraries);
159  equal &= isIdenticalMap<std::map<std::string, PluginInfoContainer>, PluginInfoContainer>(fwd_plugin_infos,
160  rhs.fwd_plugin_infos);
161  equal &= isIdenticalMap<std::map<std::string, PluginInfoContainer>, PluginInfoContainer>(inv_plugin_infos,
162  rhs.inv_plugin_infos);
163 
164  return equal;
165 }
166 bool KinematicsPluginInfo::operator!=(const KinematicsPluginInfo& rhs) const { return !operator==(rhs); }
167 
168 template <class Archive>
169 void KinematicsPluginInfo::serialize(Archive& ar, const unsigned int /*version*/)
170 {
171  ar& BOOST_SERIALIZATION_NVP(search_paths);
172  ar& BOOST_SERIALIZATION_NVP(search_libraries);
173  ar& BOOST_SERIALIZATION_NVP(fwd_plugin_infos);
174  ar& BOOST_SERIALIZATION_NVP(inv_plugin_infos);
175 }
176 
177 /*********************************************************/
178 /****** ContactManagersPluginInfo *****/
179 /*********************************************************/
181 {
182  search_paths.insert(other.search_paths.begin(), other.search_paths.end());
183  search_libraries.insert(other.search_libraries.begin(), other.search_libraries.end());
184 
185  if (!other.discrete_plugin_infos.default_plugin.empty())
187 
188  for (const auto& plugin_info : other.discrete_plugin_infos.plugins)
189  discrete_plugin_infos.plugins[plugin_info.first] = plugin_info.second;
190 
191  if (!other.continuous_plugin_infos.default_plugin.empty())
193 
194  for (const auto& plugin_info : other.continuous_plugin_infos.plugins)
195  continuous_plugin_infos.plugins[plugin_info.first] = plugin_info.second;
196 
197  if (!other.discrete_plugin_infos.default_plugin.empty())
199 
200  if (!other.continuous_plugin_infos.default_plugin.empty())
202 }
203 
205 {
206  search_paths.clear();
207  search_libraries.clear();
210 }
211 
213 {
214  return (search_paths.empty() && search_libraries.empty() && discrete_plugin_infos.plugins.empty() &&
216 }
217 
219 {
220  bool equal = true;
221  equal &= isIdenticalSet<std::string>(search_paths, rhs.search_paths);
222  equal &= isIdenticalSet<std::string>(search_libraries, rhs.search_libraries);
225  return equal;
226 }
228 
229 template <class Archive>
230 void ContactManagersPluginInfo::serialize(Archive& ar, const unsigned int /*version*/)
231 {
232  ar& BOOST_SERIALIZATION_NVP(search_paths);
233  ar& BOOST_SERIALIZATION_NVP(search_libraries);
234  ar& BOOST_SERIALIZATION_NVP(discrete_plugin_infos);
235  ar& BOOST_SERIALIZATION_NVP(continuous_plugin_infos);
236 }
237 
238 /*********************************************************/
239 /****** TaskComposerPluginInfo *****/
240 /*********************************************************/
242 {
243  search_paths.insert(other.search_paths.begin(), other.search_paths.end());
244  search_libraries.insert(other.search_libraries.begin(), other.search_libraries.end());
245 
246  if (!other.executor_plugin_infos.default_plugin.empty())
248 
249  for (const auto& plugin_info : other.executor_plugin_infos.plugins)
250  executor_plugin_infos.plugins[plugin_info.first] = plugin_info.second;
251 
252  if (!other.task_plugin_infos.default_plugin.empty())
254 
255  for (const auto& plugin_info : other.task_plugin_infos.plugins)
256  task_plugin_infos.plugins[plugin_info.first] = plugin_info.second;
257 }
258 
260 {
261  search_paths.clear();
262  search_libraries.clear();
265 }
266 
268 {
269  return (search_paths.empty() && search_libraries.empty() && executor_plugin_infos.plugins.empty() &&
270  task_plugin_infos.plugins.empty());
271 }
272 
274 {
275  bool equal = true;
276  equal &= isIdenticalSet<std::string>(search_paths, rhs.search_paths);
277  equal &= isIdenticalSet<std::string>(search_libraries, rhs.search_libraries);
279  equal &= (task_plugin_infos == rhs.task_plugin_infos);
280  return equal;
281 }
283 
284 template <class Archive>
285 void TaskComposerPluginInfo::serialize(Archive& ar, const unsigned int /*version*/)
286 {
287  ar& BOOST_SERIALIZATION_NVP(search_paths);
288  ar& BOOST_SERIALIZATION_NVP(search_libraries);
289  ar& BOOST_SERIALIZATION_NVP(executor_plugin_infos);
290  ar& BOOST_SERIALIZATION_NVP(task_plugin_infos);
291 }
292 
293 } // namespace tesseract_common
294 
301 
302 BOOST_CLASS_EXPORT_IMPLEMENT(tesseract_common::PluginInfo)
303 BOOST_CLASS_EXPORT_IMPLEMENT(tesseract_common::PluginInfoContainer)
304 BOOST_CLASS_EXPORT_IMPLEMENT(tesseract_common::KinematicsPluginInfo)
305 BOOST_CLASS_EXPORT_IMPLEMENT(tesseract_common::ContactManagersPluginInfo)
306 BOOST_CLASS_EXPORT_IMPLEMENT(tesseract_common::TaskComposerPluginInfo)
tesseract_common::TaskComposerPluginInfo::operator!=
bool operator!=(const TaskComposerPluginInfo &rhs) const
Definition: plugin_info.cpp:282
tesseract_common::ContactManagersPluginInfo::empty
bool empty() const
Check if structure is empty.
Definition: plugin_info.cpp:212
tesseract_common::PluginInfoContainer::clear
void clear()
Definition: plugin_info.cpp:91
tesseract_common::TaskComposerPluginInfo::empty
bool empty() const
Check if structure is empty.
Definition: plugin_info.cpp:267
tesseract_common::PluginInfo::save
void save(Archive &ar, const unsigned int version) const
Definition: plugin_info.cpp:64
tesseract_common
Definition: allowed_collision_matrix.h:19
tesseract_common::TaskComposerPluginInfo::serialize
void serialize(Archive &ar, const unsigned int version)
Definition: plugin_info.cpp:285
tesseract_common::ContactManagersPluginInfo::clear
void clear()
Clear the contents.
Definition: plugin_info.cpp:204
tesseract_common::KinematicsPluginInfo::clear
void clear()
Clear the contents.
Definition: plugin_info.cpp:141
tesseract_common::TaskComposerPluginInfo::executor_plugin_infos
tesseract_common::PluginInfoContainer executor_plugin_infos
A map of name to task composer executor plugin information.
Definition: plugin_info.h:181
tesseract_common::TaskComposerPluginInfo::search_libraries
std::set< std::string > search_libraries
A list of library names without the prefix or suffix that contain plugins.
Definition: plugin_info.h:178
tesseract_common::compareYAML
bool compareYAML(const YAML::Node &node1, const YAML::Node &node2)
Checks if the YAML::Nodes are identical.
Definition: yaml_utils.cpp:144
TESSERACT_SERIALIZE_ARCHIVES_INSTANTIATE
#define TESSERACT_SERIALIZE_ARCHIVES_INSTANTIATE(Type)
Definition: serialization.h:49
tesseract_common::TaskComposerPluginInfo
The task composer plugin information structure.
Definition: plugin_info.h:172
tesseract_common::PluginInfo::operator!=
bool operator!=(const PluginInfo &rhs) const
Definition: plugin_info.cpp:61
macros.h
Common Tesseract Macros.
tesseract_common::PluginInfoContainer
Definition: plugin_info.h:81
TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
#define TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
Definition: macros.h:71
tesseract_common::KinematicsPluginInfo::operator!=
bool operator!=(const KinematicsPluginInfo &rhs) const
Definition: plugin_info.cpp:166
tesseract_common::TaskComposerPluginInfo::insert
void insert(const TaskComposerPluginInfo &other)
Insert the content of an other TaskComposerPluginInfo.
Definition: plugin_info.cpp:241
tesseract_common::ContactManagersPluginInfo::discrete_plugin_infos
tesseract_common::PluginInfoContainer discrete_plugin_infos
A map of name to discrete contact manager plugin information.
Definition: plugin_info.h:144
tesseract_common::ContactManagersPluginInfo::operator!=
bool operator!=(const ContactManagersPluginInfo &rhs) const
Definition: plugin_info.cpp:227
tesseract_common::KinematicsPluginInfo::serialize
void serialize(Archive &ar, const unsigned int version)
Definition: plugin_info.cpp:169
tesseract_common::TaskComposerPluginInfo::operator==
bool operator==(const TaskComposerPluginInfo &rhs) const
Definition: plugin_info.cpp:273
tesseract_common::ContactManagersPluginInfo::continuous_plugin_infos
tesseract_common::PluginInfoContainer continuous_plugin_infos
A map of name to continuous contact manager plugin information.
Definition: plugin_info.h:147
tesseract_common::KinematicsPluginInfo::search_paths
std::set< std::string > search_paths
A list of paths to search for plugins.
Definition: plugin_info.h:101
tesseract_common::PluginInfo::class_name
std::string class_name
The plugin class name.
Definition: plugin_info.h:54
tesseract_common::TaskComposerPluginInfo::task_plugin_infos
tesseract_common::PluginInfoContainer task_plugin_infos
A map of name to task composer task plugin information.
Definition: plugin_info.h:184
tesseract_common::PluginInfo::operator==
bool operator==(const PluginInfo &rhs) const
Definition: plugin_info.cpp:53
utils.h
Common Tesseract Utility Functions.
plugin_info.h
Common Tesseract Plugin Infos.
tesseract_common::KinematicsPluginInfo::insert
void insert(const KinematicsPluginInfo &other)
Insert the content of an other KinematicsPluginInfo.
Definition: plugin_info.cpp:117
tesseract_common::PluginInfo::getConfigString
std::string getConfigString() const
Get the yaml config as a string.
Definition: plugin_info.cpp:51
tesseract_common::PluginInfoContainer::serialize
void serialize(Archive &ar, const unsigned int version)
Definition: plugin_info.cpp:108
tesseract_common::PluginInfo::serialize
void serialize(Archive &ar, const unsigned int version)
Definition: plugin_info.cpp:82
tesseract_common::PluginInfo::load
void load(Archive &ar, const unsigned int version)
Definition: plugin_info.cpp:72
tesseract_common::KinematicsPluginInfo::inv_plugin_infos
std::map< std::string, tesseract_common::PluginInfoContainer > inv_plugin_infos
A map of group name to inverse kinematics plugin information.
Definition: plugin_info.h:110
tesseract_common::ContactManagersPluginInfo
The contact managers plugin information structure.
Definition: plugin_info.h:135
tesseract_common::PluginInfo
The Plugin Information struct.
Definition: plugin_info.h:51
yaml_utils.h
YAML Type conversions.
tesseract_common::TaskComposerPluginInfo::search_paths
std::set< std::string > search_paths
A list of paths to search for plugins.
Definition: plugin_info.h:175
tesseract_common::PluginInfoContainer::default_plugin
std::string default_plugin
Definition: plugin_info.h:83
tesseract_common::KinematicsPluginInfo
The kinematics plugin information structure.
Definition: plugin_info.h:98
eigen_serialization.h
tesseract_common::PluginInfo::config
YAML::Node config
The plugin config data.
Definition: plugin_info.h:57
tesseract_common::KinematicsPluginInfo::operator==
bool operator==(const KinematicsPluginInfo &rhs) const
Definition: plugin_info.cpp:154
tesseract_common::KinematicsPluginInfo::fwd_plugin_infos
std::map< std::string, tesseract_common::PluginInfoContainer > fwd_plugin_infos
A map of group name to forward kinematics plugin information.
Definition: plugin_info.h:107
tesseract_common::ContactManagersPluginInfo::search_libraries
std::set< std::string > search_libraries
A list of library names without the prefix or suffix that contain plugins.
Definition: plugin_info.h:141
TESSERACT_COMMON_IGNORE_WARNINGS_POP
#define TESSERACT_COMMON_IGNORE_WARNINGS_POP
Definition: macros.h:72
tesseract_common::ContactManagersPluginInfo::insert
void insert(const ContactManagersPluginInfo &other)
Insert the content of an other ContactManagersPluginInfo.
Definition: plugin_info.cpp:180
tesseract_common::PluginInfoContainer::operator!=
bool operator!=(const PluginInfoContainer &rhs) const
Definition: plugin_info.cpp:105
serialization.h
Additional Boost serialization wrappers.
tesseract_common::toYAMLString
std::string toYAMLString(const YAML::Node &node)
Converts a YAML::Node to a yaml string.
Definition: yaml_utils.cpp:135
tesseract_common::TaskComposerPluginInfo::clear
void clear()
Clear the contents.
Definition: plugin_info.cpp:259
yaml_extenstions.h
YAML Type conversions.
tesseract_common::ContactManagersPluginInfo::operator==
bool operator==(const ContactManagersPluginInfo &rhs) const
Definition: plugin_info.cpp:218
tesseract_common::PluginInfoContainer::plugins
PluginInfoMap plugins
Definition: plugin_info.h:84
tesseract_common::ContactManagersPluginInfo::search_paths
std::set< std::string > search_paths
A list of paths to search for plugins.
Definition: plugin_info.h:138
tesseract_common::KinematicsPluginInfo::search_libraries
std::set< std::string > search_libraries
A list of library names without the prefix or suffix that contain plugins.
Definition: plugin_info.h:104
tesseract_common::PluginInfoContainer::operator==
bool operator==(const PluginInfoContainer &rhs) const
Definition: plugin_info.cpp:97
tesseract_common::ContactManagersPluginInfo::serialize
void serialize(Archive &ar, const unsigned int version)
Definition: plugin_info.cpp:230
tesseract_common::KinematicsPluginInfo::empty
bool empty() const
Check if structure is empty.
Definition: plugin_info.cpp:149


tesseract_common
Author(s): Levi Armstrong
autogenerated on Sun May 18 2025 03:01:40