xml_utils.h
Go to the documentation of this file.
1 /*+-------------------------------------------------------------------------+
2  | MultiVehicle simulator (libmvsim) |
3  | |
4  | Copyright (C) 2014-2023 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<>*>
44  const std::string& xmlData, const std::string& pathToFile);
45 
46 std::tuple<XML_Doc_Data::Ptr, rapidxml::xml_node<>*> readXmlAndGetRoot(
47  const std::string& pathToFile,
48  const std::map<std::string, std::string>& variables,
49  const std::set<std::string>& varsRetain = {});
50 
58 std::string parse_variables(
59  const std::string& in, const std::map<std::string, std::string>& variables,
60  const std::set<std::string>& varsRetain);
61 
63  const rapidxml::xml_node<char>& xml_node,
64  const TParameterDefinitions& params,
65  const std::map<std::string, std::string>& variableNamesValues = {},
66  const char* functionNameContext = "");
67 
73  const rapidxml::xml_node<char>& xml_node,
74  const TParameterDefinitions& params,
75  const std::map<std::string, std::string>& variableNamesValues = {},
76  const char* functionNameContext = "");
77 
81  const rapidxml::xml_node<char>& xml_node,
82  const TParameterDefinitions& params,
83  const std::map<std::string, std::string>& variableNamesValues = {},
84  const char* functionNameContext = "",
85  mrpt::system::COutputLogger* logger = nullptr);
86 
87 template <class NODE_LIST>
89  NODE_LIST& lst_nodes, const TParameterDefinitions& params,
90  const char* functionNameContext = "")
91 {
92  for (auto& node : lst_nodes)
93  parse_xmlnode_children_as_param(*node, params, functionNameContext);
94 }
95 
96 // Bits:
97 
102 mrpt::math::TPose2D parseXYPHI(
103  const std::string& s, bool allow_missing_angle = false,
104  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
This file contains rapidxml parser and DOM implementation.
void parse_xmlnodelist_children_as_param(NODE_LIST &lst_nodes, const TParameterDefinitions &params, const char *functionNameContext="")
Definition: xml_utils.h:88
std::map< std::string, TParamEntry > TParameterDefinitions
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:224
XmlRpcServer s
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:202
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:184
std::shared_ptr< XML_Doc_Data > Ptr
Definition: xml_utils.h:36
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:333
std::shared_ptr< rapidxml::xml_document<> > doc
Definition: xml_utils.h:39
std::string documentData
Definition: xml_utils.h:38
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:447
void parse_xmlnode_shape(const rapidxml::xml_node< char > &xml_node, mrpt::math::TPolygon2D &out_poly, const char *functionNameContext="")
Definition: xml_utils.cpp:271
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:245
std::tuple< std::shared_ptr< rapidxml::xml_document<> >, rapidxml::xml_node<> * > readXmlTextAndGetRoot(const std::string &xmlData, const std::string &pathToFile)
Definition: xml_utils.cpp:303


mvsim
Author(s):
autogenerated on Tue Jul 4 2023 03:08:22