ETISS 0.8.0
Extendable Translating Instruction Set Simulator (version 0.8.0)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
XML.h
Go to the documentation of this file.
1
52#ifndef ETISS_FAULT_XML_H_
53#define ETISS_FAULT_XML_H_
54
55#include <list>
56#include <string>
57
58#ifndef NO_ETISS
59#include "etiss/fault/Defs.h"
61#else
62#include "fault/Defs.h"
63#include "fault/xml/pugixml.hpp"
64#endif
65
66#include <cstdio>
67
68namespace etiss
69{
70
71namespace fault
72{
73
74// some helper for changing Core Names
75extern int coreIDActuallXML;
76void setCoreName(std::string &str);
77
78#if ETISS_FAULT_XML
79
115namespace xml
116{
117
121class Diagnostics
122{
123 public:
124 std::list<std::string> warnings;
125 std::list<std::string> errors;
126 void ignoredNode(const pugi::xml_node &node, const std::string &msg);
127 void unexpectedNode(const pugi::xml_node &node, const std::string &msg);
128 void print(std::ostream &out) const;
129};
130
132#if CXX0X_UP_SUPPORTED
133template <typename T>
134bool parse(pugi::xml_node node, T &dst, Diagnostics &diag)
135{
136 static_assert((sizeof(T) == -1), "etiss::fault::xml::parse needs to be specialized.");
137 return false;
138}
139template <typename T>
140bool write(pugi::xml_node node, const T &src, Diagnostics &diag)
141{
142 static_assert((sizeof(T) == -1), "etiss::fault::xml::write needs to be specialized.");
143 return false;
144}
145#else
146template <typename T>
147bool parse(pugi::xml_node node, T &dst, Diagnostics &diag);
148template <typename T>
149bool write(pugi::xml_node node, const T &src, Diagnostics &diag);
150#endif
151
152#if CXX0X_UP_SUPPORTED
153template <typename T>
154bool parse_attr(pugi::xml_node node, const std::string &attr_name, T &dst, Diagnostics &diag)
155{
156 static_assert((sizeof(T) == -1), "etiss::fault::xml::parse_attr needs to be specialized.");
157 return false;
158}
159template <typename T>
160bool write_attr(pugi::xml_node node, const std::string &attr_name, const T &src, Diagnostics &diag)
161{
162 static_assert((sizeof(T) == -1), "etiss::fault::xml::write_attr needs to be specialized.");
163 return false;
164}
165#else
166template <typename T>
167bool parse_attr(pugi::xml_node node, const std::string &attr_name, T &dst, Diagnostics &diag);
168template <typename T>
169bool write_attr(pugi::xml_node node, const std::string &attr_name, const T &src, Diagnostics &diag);
170#endif
171
173
174template <>
175bool parse<std::string>(pugi::xml_node node, std::string &dst, Diagnostics &diag);
176template <>
177bool write<std::string>(pugi::xml_node node, const std::string &src, Diagnostics &diag);
178
179template <>
180bool parse<uint64_t>(pugi::xml_node node, uint64_t &dst, Diagnostics &diag);
181
182bool parse_hex(pugi::xml_node node, uint64_t &dst, Diagnostics &diag);
183template <>
184bool write<uint64_t>(pugi::xml_node node, const uint64_t &src, Diagnostics &diag);
185
186template <>
187bool parse<unsigned>(pugi::xml_node node, unsigned &dst, Diagnostics &diag);
188template <>
189bool write<unsigned>(pugi::xml_node node, const unsigned &src, Diagnostics &diag);
190
191template <>
192bool parse_attr<std::string>(pugi::xml_node node, const std::string &attr_name, std::string &dst, Diagnostics &diag);
193template <>
194bool write_attr<std::string>(pugi::xml_node node, const std::string &attr_name, const std::string &src,
195 Diagnostics &diag);
196
198template <typename T>
200bool fromString(const std::string &s, T &val);
201
202template <>
203bool fromString<uint64_t>(const std::string &s, uint64_t &val);
204template <>
205bool fromString<unsigned>(const std::string &s, unsigned &val);
206
207bool hasName(const pugi::xml_node &node, const std::string &name);
208bool hasName(const pugi::xml_attribute &attr, const std::string &name);
209
210pugi::xml_node findSingleNode(pugi::xml_node node, const std::string &name, Diagnostics &diag);
211
213
214} // namespace xml
215#endif
216} // namespace fault
217
218} // namespace etiss
219
220#endif
contains general definitions used by other fault library code
__device__ __2f16 float bool s
static __inline__ uint64_t
Definition arm_cde.h:31
void setCoreName(std::string &str)
Definition XML.cpp:62
int coreIDActuallXML
Definition XML.cpp:61
Page Table Entry (PTE) defines the composition of Page Frame Number (PFN) and relavant flags.
Definition Benchmark.h:53