xml_utils.h
Go to the documentation of this file.
1 /*+-------------------------------------------------------------------------+
2  | MultiVehicle simulator (libmvsim) |
3  | |
4  | Copyright (C) 2014-2024 Jose Luis Blanco Claraco |
5  | Copyright (C) 2017 Borys Tymchenko (Odessa Polytechnic University) |
6  | Distributed under 3-clause BSD License |
7  | See COPYING |
8  +-------------------------------------------------------------------------+ */
9 #pragma once
10 
12 #include <mvsim/basic_types.h>
13 
14 #include <map>
15 #include <memory>
16 #include <rapidxml.hpp>
17 #include <set>
18 #include <string>
19 #include <tuple>
20 
21 // Fwd decl:
22 namespace mrpt::math
23 {
24 class TPolygon2D;
25 } // namespace mrpt::math
26 
27 namespace mrpt::system
28 {
29 class COutputLogger;
30 }
31 
32 namespace mvsim
33 {
35 {
36  using Ptr = std::shared_ptr<XML_Doc_Data>;
37 
38  std::string documentData;
39  std::shared_ptr<rapidxml::xml_document<>> doc;
40 };
41 
42 std::tuple<std::shared_ptr<rapidxml::xml_document<>>, rapidxml::xml_node<>*> readXmlTextAndGetRoot(
43  const std::string& xmlData, const std::string& pathToFile);
44 
45 std::tuple<XML_Doc_Data::Ptr, rapidxml::xml_node<>*> readXmlAndGetRoot(
46  const std::string& pathToFile, const std::map<std::string, std::string>& variables,
47  const std::set<std::string>& varsRetain = {});
48 
56 std::string parse_variables(
57  const std::string& in, const std::map<std::string, std::string>& variables,
58  const std::set<std::string>& varsRetain);
59 
61  const rapidxml::xml_node<char>& xml_node, const TParameterDefinitions& params,
62  const std::map<std::string, std::string>& variableNamesValues = {},
63  const char* functionNameContext = "");
64 
70  const rapidxml::xml_node<char>& xml_node, const TParameterDefinitions& params,
71  const std::map<std::string, std::string>& variableNamesValues = {},
72  const char* functionNameContext = "");
73 
77  const rapidxml::xml_node<char>& xml_node, const TParameterDefinitions& params,
78  const std::map<std::string, std::string>& variableNamesValues = {},
79  const char* functionNameContext = "", mrpt::system::COutputLogger* logger = nullptr);
80 
81 template <class NODE_LIST>
83  NODE_LIST& lst_nodes, const TParameterDefinitions& params, const char* functionNameContext = "")
84 {
85  for (auto& node : lst_nodes)
86  parse_xmlnode_children_as_param(*node, params, functionNameContext);
87 }
88 
93 std::string xml_to_str_solving_includes(
94  const World& parent, const rapidxml::xml_node<char>* xml_node,
95  const std::set<std::string>& varsRetain = {});
96 
97 // Bits:
98 
103 mrpt::math::TPose2D parseXYPHI(
104  const std::string& s, bool allow_missing_angle = false, double default_angle_radians = 0.0,
105  const std::map<std::string, std::string>& variableNamesValues = {});
106 
112  const rapidxml::xml_node<char>& xml_node, mrpt::math::TPolygon2D& out_poly,
113  const char* functionNameContext = "");
114 } // namespace mvsim
mvsim
Definition: Client.h:21
mvsim::XML_Doc_Data::Ptr
std::shared_ptr< XML_Doc_Data > Ptr
Definition: xml_utils.h:36
basic_types.h
mvsim::parse_xmlnode_children_as_param
void parse_xmlnode_children_as_param(const rapidxml::xml_node< char > &xml_node, const TParameterDefinitions &params, const std::map< std::string, std::string > &variableNamesValues={}, const char *functionNameContext="", mrpt::system::COutputLogger *logger=nullptr)
Definition: xml_utils.cpp:215
mvsim::xml_to_str_solving_includes
std::string xml_to_str_solving_includes(const World &parent, const rapidxml::xml_node< char > *xml_node, const std::set< std::string > &varsRetain={})
Definition: xml_utils.cpp:498
mvsim::XML_Doc_Data
Definition: xml_utils.h:34
TParameterDefinitions.h
mvsim::XML_Doc_Data::doc
std::shared_ptr< rapidxml::xml_document<> > doc
Definition: xml_utils.h:39
mvsim::parse_variables
std::string parse_variables(const std::string &in, const std::map< std::string, std::string > &variables, const std::set< std::string > &varsRetain)
Definition: xml_utils.cpp:428
mvsim::parse_xmlnodelist_children_as_param
void parse_xmlnodelist_children_as_param(NODE_LIST &lst_nodes, const TParameterDefinitions &params, const char *functionNameContext="")
Definition: xml_utils.h:82
mvsim::TParameterDefinitions
std::map< std::string, TParamEntry > TParameterDefinitions
Definition: TParameterDefinitions.h:64
mvsim::readXmlAndGetRoot
std::tuple< XML_Doc_Data::Ptr, rapidxml::xml_node<> * > readXmlAndGetRoot(const std::string &pathToFile, const std::map< std::string, std::string > &variables, const std::set< std::string > &varsRetain={})
Definition: xml_utils.cpp:315
rapidxml::xml_node
Definition: rapidxml.hpp:137
mvsim::parseXYPHI
mrpt::math::TPose2D parseXYPHI(const std::string &s, bool allow_missing_angle=false, double default_angle_radians=0.0, const std::map< std::string, std::string > &variableNamesValues={})
Definition: xml_utils.cpp:235
mvsim::parse_xmlnode_shape
void parse_xmlnode_shape(const rapidxml::xml_node< char > &xml_node, mrpt::math::TPolygon2D &out_poly, const char *functionNameContext="")
Definition: xml_utils.cpp:258
mvsim::XML_Doc_Data::documentData
std::string documentData
Definition: xml_utils.h:38
mvsim::parse_xmlnode_as_param
bool parse_xmlnode_as_param(const rapidxml::xml_node< char > &xml_node, const TParameterDefinitions &params, const std::map< std::string, std::string > &variableNamesValues={}, const char *functionNameContext="")
Definition: xml_utils.cpp:196
mrpt::math
Definition: xml_utils.h:22
rapidxml.hpp
mvsim::parse_xmlnode_attribs
void parse_xmlnode_attribs(const rapidxml::xml_node< char > &xml_node, const TParameterDefinitions &params, const std::map< std::string, std::string > &variableNamesValues={}, const char *functionNameContext="")
Definition: xml_utils.cpp:182
mvsim::readXmlTextAndGetRoot
std::tuple< std::shared_ptr< rapidxml::xml_document<> >, rapidxml::xml_node<> * > readXmlTextAndGetRoot(const std::string &xmlData, const std::string &pathToFile)
Definition: xml_utils.cpp:290
mrpt::system
Definition: xml_utils.h:27


mvsim
Author(s):
autogenerated on Wed May 28 2025 02:13:08