14#ifndef ETISS_FAULT_XML_H_
15#define ETISS_FAULT_XML_H_
94 std::list<std::string> warnings;
95 std::list<std::string> errors;
96 void ignoredNode(
const pugi::xml_node &node,
const std::string &msg);
97 void unexpectedNode(
const pugi::xml_node &node,
const std::string &msg);
98 void print(std::ostream &out)
const;
102#if CXX0X_UP_SUPPORTED
104bool parse(pugi::xml_node node, T &dst, Diagnostics &diag)
106 static_assert((
sizeof(T) == -1),
"etiss::fault::xml::parse needs to be specialized.");
110bool write(pugi::xml_node node,
const T &src, Diagnostics &diag)
112 static_assert((
sizeof(T) == -1),
"etiss::fault::xml::write needs to be specialized.");
117bool parse(pugi::xml_node node, T &dst, Diagnostics &diag);
119bool write(pugi::xml_node node,
const T &src, Diagnostics &diag);
122#if CXX0X_UP_SUPPORTED
124bool parse_attr(pugi::xml_node node,
const std::string &attr_name, T &dst, Diagnostics &diag)
126 static_assert((
sizeof(T) == -1),
"etiss::fault::xml::parse_attr needs to be specialized.");
130bool write_attr(pugi::xml_node node,
const std::string &attr_name,
const T &src, Diagnostics &diag)
132 static_assert((
sizeof(T) == -1),
"etiss::fault::xml::write_attr needs to be specialized.");
137bool parse_attr(pugi::xml_node node,
const std::string &attr_name, T &dst, Diagnostics &diag);
139bool write_attr(pugi::xml_node node,
const std::string &attr_name,
const T &src, Diagnostics &diag);
145bool parse<std::string>(pugi::xml_node node, std::string &dst, Diagnostics &diag);
147bool write<std::string>(pugi::xml_node node,
const std::string &src, Diagnostics &diag);
150bool parse<uint64_t>(pugi::xml_node node,
uint64_t &dst, Diagnostics &diag);
152bool parse_hex(pugi::xml_node node,
uint64_t &dst, Diagnostics &diag);
154bool write<uint64_t>(pugi::xml_node node,
const uint64_t &src, Diagnostics &diag);
157bool parse<unsigned>(pugi::xml_node node,
unsigned &dst, Diagnostics &diag);
159bool write<unsigned>(pugi::xml_node node,
const unsigned &src, Diagnostics &diag);
162bool parse_attr<std::string>(pugi::xml_node node,
const std::string &attr_name, std::string &dst, Diagnostics &diag);
164bool write_attr<std::string>(pugi::xml_node node,
const std::string &attr_name,
const std::string &src,
170bool fromString(
const std::string &
s, T &val);
173bool fromString<uint64_t>(
const std::string &
s,
uint64_t &val);
175bool fromString<unsigned>(
const std::string &
s,
unsigned &val);
177bool hasName(
const pugi::xml_node &node,
const std::string &name);
178bool hasName(
const pugi::xml_attribute &attr,
const std::string &name);
180pugi::xml_node findSingleNode(pugi::xml_node node,
const std::string &name, Diagnostics &diag);
186bool parse<etiss::fault::Trigger *>(pugi::xml_node node,
etiss::fault::Trigger *&f, Diagnostics &diag);
194bool write<etiss::fault::Trigger>(pugi::xml_node node,
const etiss::fault::Trigger &f, Diagnostics &diag);
198bool parse<etiss::fault::Fault>(pugi::xml_node node,
etiss::fault::Fault &f, Diagnostics &diag);
200bool write<etiss::fault::Fault>(pugi::xml_node node,
const etiss::fault::Fault &f, Diagnostics &diag);
204bool write<etiss::fault::FaultRef>(pugi::xml_node node,
const etiss::fault::FaultRef &fref, Diagnostics &diag);
208bool parse<etiss::fault::Action>(pugi::xml_node node,
etiss::fault::Action &f, Diagnostics &diag);
210bool write<etiss::fault::Action>(pugi::xml_node node,
const etiss::fault::Action &f, Diagnostics &diag);
231bool parseXML(pugi::xml_document &doc, std::istream &input, std::ostream &diagnostics_out = std::cout);
233bool parseXML(std::vector<Fault> &vec,
const pugi::xml_document &doc, xml::Diagnostics &diag);
234bool parseXML(std::vector<FaultRef> &vec,
const pugi::xml_document &doc, xml::Diagnostics &diag);
236bool writeXML(
const std::vector<Fault> &vec, std::ostream &out, std::ostream &diagnostics_out = std::cout);
contains general definitions used by other fault library code
__device__ __2f16 float bool s
static __inline__ uint64_t
void setCoreName(std::string &str)
bool writeXML(const std::vector< Fault > &vec, std::ostream &out, std::ostream &diagnostics_out=std::cout)
bool parseXML(pugi::xml_document &doc, std::istream &input, std::ostream &diagnostics_out=std::cout)
parse a XML document held in input stream and return as doc