16 #ifndef SURGSIM_FRAMEWORK_FRAMEWORKCONVERT_INL_H
17 #define SURGSIM_FRAMEWORK_FRAMEWORKCONVERT_INL_H
19 #include <type_traits>
25 YAML::Node YAML::convert<std::shared_ptr<T>>::encode(
26 const typename std::enable_if <std::is_base_of <SurgSim::Framework::Component, T>::value,
27 std::shared_ptr<T> >::type rhs)
29 return YAML::convert<std::shared_ptr<SurgSim::Framework::Component>>::encode(rhs);
33 bool YAML::convert<std::shared_ptr<T>>::decode(
const Node& node,
34 typename std::enable_if <std::is_base_of<SurgSim::Framework::Component, T>::value,
35 std::shared_ptr<T> >::type& rhs)
37 std::shared_ptr<SurgSim::Framework::Component> temporary;
38 bool success = YAML::convert<std::shared_ptr<SurgSim::Framework::Component>>::decode(node, temporary);
41 rhs = std::dynamic_pointer_cast<T>(temporary);
42 SURGSIM_ASSERT(rhs !=
nullptr) <<
"Failure to convert to target type in " << __FUNCTION__;