summaryrefslogtreecommitdiff
path: root/utils/regtools/lib
diff options
context:
space:
mode:
Diffstat (limited to 'utils/regtools/lib')
-rw-r--r--utils/regtools/lib/soc_desc.cpp12
-rw-r--r--utils/regtools/lib/soc_desc.hpp3
2 files changed, 8 insertions, 7 deletions
diff --git a/utils/regtools/lib/soc_desc.cpp b/utils/regtools/lib/soc_desc.cpp
index 4b9f51b9ae..223a6d8f53 100644
--- a/utils/regtools/lib/soc_desc.cpp
+++ b/utils/regtools/lib/soc_desc.cpp
@@ -64,14 +64,14 @@
64#define MATCH_ELEM_NODE(node_name, array, parse_fn) \ 64#define MATCH_ELEM_NODE(node_name, array, parse_fn) \
65 if(sub->type == XML_ELEMENT_NODE && strcmp(XML_CHAR_TO_CHAR(sub->name), node_name) == 0) { \ 65 if(sub->type == XML_ELEMENT_NODE && strcmp(XML_CHAR_TO_CHAR(sub->name), node_name) == 0) { \
66 array.resize(array.size() + 1); \ 66 array.resize(array.size() + 1); \
67 if(!parse_fn(sub, array[array.size() - 1])) \ 67 if(!parse_fn(sub, array.back())) \
68 return false; \ 68 return false; \
69 } 69 }
70 70
71#define SOFT_MATCH_ELEM_NODE(node_name, array, parse_fn) \ 71#define SOFT_MATCH_ELEM_NODE(node_name, array, parse_fn) \
72 if(sub->type == XML_ELEMENT_NODE && strcmp(XML_CHAR_TO_CHAR(sub->name), node_name) == 0) { \ 72 if(sub->type == XML_ELEMENT_NODE && strcmp(XML_CHAR_TO_CHAR(sub->name), node_name) == 0) { \
73 array.resize(array.size() + 1); \ 73 array.resize(array.size() + 1); \
74 if(!parse_fn(sub, array[array.size() - 1])) \ 74 if(!parse_fn(sub, array.back())) \
75 array.pop_back(); \ 75 array.pop_back(); \
76 } 76 }
77 77
@@ -189,7 +189,7 @@ bool parse_add_trivial_addr(const std::string& str, soc_reg_t& reg)
189 189
190bool parse_reg_elem(xmlNode *node, soc_reg_t& reg) 190bool parse_reg_elem(xmlNode *node, soc_reg_t& reg)
191{ 191{
192 std::vector< soc_reg_formula_t > formulas; 192 std::list< soc_reg_formula_t > formulas;
193 BEGIN_ATTR_MATCH(node->properties) 193 BEGIN_ATTR_MATCH(node->properties)
194 MATCH_TEXT_ATTR("name", reg.name) 194 MATCH_TEXT_ATTR("name", reg.name)
195 SOFT_MATCH_SCT_ATTR("sct", reg.flags) 195 SOFT_MATCH_SCT_ATTR("sct", reg.flags)
@@ -208,7 +208,7 @@ bool parse_reg_elem(xmlNode *node, soc_reg_t& reg)
208 return false; 208 return false;
209 } 209 }
210 if(formulas.size() == 1) 210 if(formulas.size() == 1)
211 reg.formula = formulas[0]; 211 reg.formula = formulas.front();
212 212
213 return true; 213 return true;
214} 214}
@@ -252,7 +252,7 @@ bool parse_soc_elem(xmlNode *node, soc_t& soc)
252 return true; 252 return true;
253} 253}
254 254
255bool parse_root_elem(xmlNode *node, std::vector< soc_t >& soc) 255bool parse_root_elem(xmlNode *node, std::list< soc_t >& soc)
256{ 256{
257 BEGIN_NODE_MATCH(node) 257 BEGIN_NODE_MATCH(node)
258 MATCH_ELEM_NODE("soc", soc, parse_soc_elem) 258 MATCH_ELEM_NODE("soc", soc, parse_soc_elem)
@@ -260,7 +260,7 @@ bool parse_root_elem(xmlNode *node, std::vector< soc_t >& soc)
260 return true; 260 return true;
261} 261}
262 262
263bool soc_desc_parse_xml(const std::string& filename, std::vector< soc_t >& socs) 263bool soc_desc_parse_xml(const std::string& filename, std::list< soc_t >& socs)
264{ 264{
265 LIBXML_TEST_VERSION 265 LIBXML_TEST_VERSION
266 266
diff --git a/utils/regtools/lib/soc_desc.hpp b/utils/regtools/lib/soc_desc.hpp
index 476ea1d242..d1a1f0cb50 100644
--- a/utils/regtools/lib/soc_desc.hpp
+++ b/utils/regtools/lib/soc_desc.hpp
@@ -23,6 +23,7 @@
23 23
24#include <stdint.h> 24#include <stdint.h>
25#include <vector> 25#include <vector>
26#include <list>
26#include <string> 27#include <string>
27 28
28/** 29/**
@@ -142,6 +143,6 @@ struct soc_t
142 143
143/** Parse a SoC description from a XML file, append it to <soc>. A file 144/** Parse a SoC description from a XML file, append it to <soc>. A file
144 * can contain multiple SoC descriptions */ 145 * can contain multiple SoC descriptions */
145bool soc_desc_parse_xml(const std::string& filename, std::vector< soc_t >& soc); 146bool soc_desc_parse_xml(const std::string& filename, std::list< soc_t >& soc);
146 147
147#endif /* __SOC_DESC__ */ \ No newline at end of file 148#endif /* __SOC_DESC__ */ \ No newline at end of file