Go to the documentation of this file.
10 #ifndef CPROVER_UTIL_JSON_H
11 #define CPROVER_UTIL_JSON_H
28 typedef std::map<std::string, jsont>
objectt;
114 objectt::const_iterator it=
object.find(key);
121 void output_rec(std::ostream &,
unsigned indent)
const;
125 static void output_key(std::ostream &out,
const std::string &key);
136 static void escape_string(
const std::string &, std::ostream &);
169 explicit json_arrayt(std::initializer_list<jsont> &&initializer_list)
174 template <
typename begin_iteratort,
typename end_iteratort>
175 json_arrayt(begin_iteratort &&begin_iterator, end_iteratort &&end_iterator)
179 std::forward<begin_iteratort>(begin_iterator),
180 std::forward<end_iteratort>(end_iterator)))
184 typename std::decay<begin_iteratort>::type,
185 typename std::decay<end_iteratort>::type>::
value,
186 "The iterators must be of the same type.");
189 template <
typename iteratort>
207 return array.empty();
228 template <
typename... argumentst>
231 array.emplace_back(std::forward<argumentst>(arguments)...);
236 return array.begin();
239 arrayt::const_iterator
begin()
const
241 return array.begin();
246 return array.cbegin();
254 arrayt::const_iterator
end()
const
259 arrayt::const_iterator
cend()
const
275 #ifndef USE_STD_STRING
309 std::initializer_list<typename objectt::value_type> &&initializer_list)
314 template <
typename begin_iteratort,
typename end_iteratort>
315 json_objectt(begin_iteratort &&begin_iterator, end_iteratort &&end_iterator)
319 std::forward<begin_iteratort>(begin_iterator),
320 std::forward<end_iteratort>(end_iterator)))
324 typename std::decay<begin_iteratort>::type,
325 typename std::decay<end_iteratort>::type>::
value,
326 "The iterators must be of the same type.");
329 template <
typename iteratort>
351 return object.insert(it, std::move(
value));
356 return object.find(key);
361 return object.find(key);
366 return object.size();
371 return object.begin();
376 return object.begin();
381 return object.cbegin();
396 return object.cend();
468 #endif // CPROVER_UTIL_JSON_H
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
iterator insert(const_iterator it, value_type value)
const jsont & operator[](const std::string &key) const
json_stringt(const irep_idt &_value)
jsont & push_back(jsont &&json)
void resize(std::size_t size)
jsont & operator[](const std::string &key)
objectt::iterator iterator
void output(std::ostream &out) const
void emplace_back(argumentst &&... arguments)
iterator find(const std::string &key)
const jsont & operator[](const std::string &key) const
static const jsont null_json_object
objectt::value_type value_type
json_objectt(std::initializer_list< typename objectt::value_type > &&initializer_list)
json_arrayt(ranget< iteratort > &&range)
std::vector< jsont > arrayt
objectt::const_iterator const_iterator
static void escape_string(const std::string &, std::ostream &)
json_arrayt & to_json_array(jsont &json)
json_objectt & make_object()
const_iterator end() const
json_numbert(const std::string &_value)
void output_rec(std::ostream &, unsigned indent) const
Recursive printing of the json object.
bool operator==(const jsont &left, const jsont &right)
const std::string & id2string(const irep_idt &d)
json_objectt(begin_iteratort &&begin_iterator, end_iteratort &&end_iterator)
std::map< std::string, jsont > objectt
#define PRECONDITION(CONDITION)
static void output_object(std::ostream &out, const objectt &object, unsigned indent)
Basic handling of the printing of a JSON object.
static void json(json_objectT &result, const irep_idt &property_id, const property_infot &property_info)
A range is a pair of a begin and an end iterators.
const_iterator cbegin() const
json_arrayt & make_array()
arrayt::const_iterator end() const
arrayt::const_iterator begin() const
const_iterator find(const std::string &key) const
jsont(kindt _kind, objectt &&objects)
arrayt::const_iterator cend() const
jsont(kindt _kind, arrayt &&entries)
json_arrayt(std::initializer_list< jsont > &&initializer_list)
const_iterator begin() const
json_stringt(const char *_value)
Constructon from string literal.
std::ostream & operator<<(std::ostream &out, const jsont &src)
json_stringt & to_json_string(jsont &json)
const_iterator cend() const
json_objectt & to_json_object(jsont &json)
arrayt::const_iterator cbegin() const
jsont(kindt _kind, std::string _value)
json_arrayt(begin_iteratort &&begin_iterator, end_iteratort &&end_iterator)
json_objectt(ranget< iteratort > &&range)
static jsont json_boolean(bool value)
static void output_key(std::ostream &out, const std::string &key)
jsont & push_back(const jsont &json)
json_stringt(std::string _value)