ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
xml.h
Go to the documentation of this file.
1#ifndef XML_H
2#define XML_H
3
4#include <list>
5#include <map>
6#include <string>
7
8class xmlt
9{
10public:
11 xmlt() = default;
12
13 xmlt(std::string _name) : name(std::move(_name))
14 {
15 }
16
17 typedef std::list<xmlt> elementst;
18 typedef std::map<std::string, std::string> attributest;
19
20 static std::string escape(const std::string &s);
21 static std::string escape_attribute(const std::string &s);
22 static std::string unescape(const std::string &s);
23
24 std::string name, data;
25
28
29 elementst::const_iterator find(const std::string &name) const;
30 elementst::iterator find(const std::string &name);
31
32 void set_attribute(const std::string &attribute, unsigned value);
33
34 void set_attribute(const std::string &attribute, const std::string &value);
35
36 std::string get_attribute(const std::string &attribute) const
37 {
38 attributest::const_iterator i = attributes.find(attribute);
39 if (i != attributes.end())
40 return i->second;
41 return "";
42 }
43
44 void set_attribute_bool(const std::string &attribute, bool value)
45 {
46 set_attribute(attribute, value ? "true" : "false");
47 }
48
49 bool get_attribute_bool(const std::string &attribute) const
50 {
51 attributest::const_iterator i = attributes.find(attribute);
52 if (i != attributes.end())
53 return (i->second == "true");
54 return false;
55 }
56
57 std::string get_element(const std::string &element) const
58 {
59 elementst::const_iterator i = find(element);
60 if (i != elements.end())
61 return i->data;
62 return "";
63 }
64
65 xmlt &new_element(const std::string &name)
66 {
67 elements.emplace_back();
68 elements.back().name = name;
69 return elements.back();
70 }
71
73 {
74 elements.emplace_back();
75 return elements.back();
76 }
77
78 void swap(xmlt &xml);
79 void clear();
80
81 friend std::ostream &operator<<(std::ostream &out, const xmlt &xml)
82 {
83 xml.output(out);
84 return out;
85 }
86
87 void output(std::ostream &out, unsigned indent = 0) const;
88
89protected:
90 static void do_indent(std::ostream &out, unsigned indent);
91};
92
93bool operator==(const xmlt &a, const xmlt &b);
94bool operator!=(const xmlt &a, const xmlt &b);
95#endif
Definition toml.hpp:1531
Definition xml.h:9
bool get_attribute_bool(const std::string &attribute) const
Definition xml.h:49
xmlt()=default
std::string get_attribute(const std::string &attribute) const
Definition xml.h:36
static std::string escape(const std::string &s)
Definition xml.cpp:48
std::map< std::string, std::string > attributest
Definition xml.h:18
std::list< xmlt > elementst
Definition xml.h:17
xmlt & new_element(const std::string &name)
Definition xml.h:65
static std::string unescape(const std::string &s)
Definition xml.cpp:155
void set_attribute_bool(const std::string &attribute, bool value)
Definition xml.h:44
void set_attribute(const std::string &attribute, unsigned value)
Definition xml.cpp:136
void swap(xmlt &xml)
Definition xml.cpp:14
attributest attributes
Definition xml.h:26
void clear()
Definition xml.cpp:6
xmlt & new_element()
Definition xml.h:72
xmlt(std::string _name)
Definition xml.h:13
elementst elements
Definition xml.h:27
std::string get_element(const std::string &element) const
Definition xml.h:57
std::string data
Definition xml.h:24
void output(std::ostream &out, unsigned indent=0) const
Definition xml.cpp:22
std::string name
Definition xml.h:24
elementst::const_iterator find(const std::string &name) const
Definition xml.cpp:117
static void do_indent(std::ostream &out, unsigned indent)
Definition xml.cpp:111
friend std::ostream & operator<<(std::ostream &out, const xmlt &xml)
Definition xml.h:81
static std::string escape_attribute(const std::string &s)
Definition xml.cpp:79
Definition exception.cpp:51
bool operator==(const xmlt &a, const xmlt &b)
Definition xml.cpp:197
bool operator!=(const xmlt &a, const xmlt &b)
Definition xml.cpp:202