29 #ifndef XML_ENGINE_SIMBODY_H 30 #define XML_ENGINE_SIMBODY_H 32 #define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING 34 #include "base_data_package.h" 37 #include "SimTKcommon.h" 38 #include "SimTKcommon/internal/Xml.h" 39 #include "SimTKcommon/internal/String.h" 47 #include <boost/filesystem.hpp> 48 namespace fs = boost::filesystem;
50 #include <experimental/filesystem> 51 namespace fs = std::experimental::filesystem;
64 XmlEngine(
const std::string &xml_name,
const std::string &root_tag);
74 void addChildToElement(SimTK::Xml::Element &father_element,
const std::string &child_name);
78 void setAttributeToElement(
const SimTK::Xml::element_iterator &ele_ite,
const std::string &attrib_name,
const T &value)
80 SimTK::Xml::Attribute attr_(attrib_name, SimTK::String(value));
81 ele_ite->setAttributeValue(attr_.getName(), attr_.getValue());
84 void setAttributeToElement(
const SimTK::Xml::element_iterator &ele_ite,
const std::string &attrib_name,
const Matd &value);
90 std::string value_in_string = ele_ite_->getRequiredAttributeValue(attrib_name);
91 value = SimTK::convertStringTo<T>(value_in_string);
122 template <
typename T>
123 void writeDataToXmlMemory(
XmlEngine &xml_engine, SimTK::Xml::Element &element,
const DoubleVec<T> &quantity,
124 int snapshot_,
int observation_,
const std::string &quantity_name,
StdVec<std::string> &element_tag)
126 for (
int snapshot_index = 0; snapshot_index != snapshot_; ++snapshot_index)
128 std::string element_name = element_tag[snapshot_index];
130 for (
int observation_index = 0; observation_index != observation_; ++observation_index)
132 SimTK::Xml::element_iterator ele_ite = element.element_begin(element_name);
133 std::string attribute_name_ = quantity_name +
"_" + std::to_string(observation_index);
134 xml_engine.
setAttributeToElement(ele_ite, attribute_name_, quantity[snapshot_index][observation_index]);
139 template <
typename T>
140 void writeDataToXmlMemory(
XmlEngine &xml_engine, SimTK::Xml::Element &element,
141 std::string element_name,
int observation_index,
const T &quantity,
const std::string &quantity_name)
143 SimTK::Xml::element_iterator ele_ite = element.element_begin(element_name);
144 std::string attribute_name_ = quantity_name +
"_" + std::to_string(observation_index);
148 template <
typename T>
149 void readDataFromXmlMemory(
XmlEngine &xml_engine, SimTK::Xml::Element &element,
150 int observation_index, DoubleVec<T> &result_container,
const std::string &quantity_name)
152 int snapshot_index = 0;
153 SimTK::Xml::element_iterator ele_ite = element.element_begin();
154 for (; ele_ite != element.element_end(); ++ele_ite)
156 std::string attribute_name_ = quantity_name +
"_" + std::to_string(observation_index);
162 void readDataFromXmlMemory(
XmlEngine &xml_engine, SimTK::Xml::Element &element,
163 size_t observation_index, DoubleVec<Matd> &result_container,
const std::string &quantity_name);
169 #endif // XML_ENGINE_SIMBODY_H Definition: xml_engine.h:116
void loadXmlFile(const std::string &filefullpath)
Definition: xml_engine.cpp:72
void getRequiredAttributeValue(SimTK::Xml::element_iterator &ele_ite_, const std::string &attrib_name, T &value)
Definition: xml_engine.h:88
SimTK::Xml::Document xmldoc_
Definition: xml_engine.h:60
XmlEngine(const std::string &xml_name, const std::string &root_tag)
Definition: xml_engine.cpp:12
SimTK::Xml::Element root_element_
Definition: xml_engine.h:66
virtual ~XmlEngine()
Definition: xml_engine.h:66
std::string xml_name_
Definition: xml_engine.h:59
void addChildToElement(SimTK::Xml::Element &father_element, const std::string &child_name)
Definition: xml_engine.cpp:23
void addElementToXmlDoc(const std::string &element_name)
Definition: xml_engine.cpp:18
size_t SizeOfXmlDoc()
Definition: xml_engine.cpp:106
void setAttributeToElement(const SimTK::Xml::element_iterator &ele_ite, const std::string &attrib_name, const T &value)
Definition: xml_engine.h:78
Set up of basic data structure.
void resizeXmlDocForParticles(size_t input_size)
Definition: xml_engine.cpp:88
void getRequiredAttributeMatrixValue(SimTK::Xml::element_iterator &ele_ite_, const std::string &attrib_name, Matd &value)
Definition: xml_engine.cpp:41
void writeToXmlFile(const std::string &filefullpath)
Definition: xml_engine.cpp:67
std::string getRootElementTag()
Definition: xml_engine.cpp:78
Definition: xml_engine.h:56
SimTK::Xml::Element getChildElement(const std::string &tag)
Definition: xml_engine.cpp:111
std::string getElementTag(SimTK::Xml::Element &element)
Definition: xml_engine.cpp:83
Definition: solid_body_supplementary.cpp:9