Go to the documentation of this file.
10 #ifndef CPROVER_UTIL_JSON_H
11 #define CPROVER_UTIL_JSON_H
30 typedef std::map<std::string, jsont>
objectt;
116 objectt::const_iterator it=
object.find(key);
123 void output_rec(std::ostream &,
unsigned indent)
const;
127 static void output_key(std::ostream &out,
const std::string &key);
138 static void escape_string(
const std::string &, std::ostream &);
171 explicit json_arrayt(std::initializer_list<jsont> &&initializer_list)
176 template <
typename begin_iteratort,
typename end_iteratort>
177 json_arrayt(begin_iteratort &&begin_iterator, end_iteratort &&end_iterator)
181 std::forward<begin_iteratort>(begin_iterator),
182 std::forward<end_iteratort>(end_iterator)))
186 typename std::decay<begin_iteratort>::type,
187 typename std::decay<end_iteratort>::type>::
value,
188 "The iterators must be of the same type.");
191 template <
typename iteratort>
209 return array.empty();
230 template <
typename... argumentst>
233 array.emplace_back(std::forward<argumentst>(arguments)...);
238 return array.begin();
241 arrayt::const_iterator
begin()
const
243 return array.begin();
248 return array.cbegin();
256 arrayt::const_iterator
end()
const
261 arrayt::const_iterator
cend()
const
277 #ifndef USE_STD_STRING
311 std::initializer_list<typename objectt::value_type> &&initializer_list)
316 template <
typename begin_iteratort,
typename end_iteratort>
317 json_objectt(begin_iteratort &&begin_iterator, end_iteratort &&end_iterator)
321 std::forward<begin_iteratort>(begin_iterator),
322 std::forward<end_iteratort>(end_iterator)))
326 typename std::decay<begin_iteratort>::type,
327 typename std::decay<end_iteratort>::type>::
value,
328 "The iterators must be of the same type.");
331 template <
typename iteratort>
353 return object.insert(it, std::move(
value));
358 return object.find(key);
363 return object.find(key);
368 return object.size();
373 return object.begin();
378 return object.begin();
383 return object.cbegin();
398 return object.cend();
493 #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)
A way of representing nested key/value data.
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 to_json(const structured_datat &data)
Convert the structured_datat into an json object.
jsont & push_back(const jsont &json)
json_stringt(std::string _value)