CBMC
json_parser.cpp
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module:
4 
5 Author: Daniel Kroening, kroening@kroening.com
6 
7 \*******************************************************************/
8 
9 #include "json_parser.h"
10 
11 #include <fstream>
12 
14 
15 // 'do it all' function
17  std::istream &in,
18  const std::string &filename,
19  message_handlert &message_handler,
20  jsont &dest)
21 {
23  json_parser.set_file(filename);
24  json_parser.in=&in;
25  json_parser.set_message_handler(message_handler);
26 
27  bool result=json_parser.parse();
28 
29  // save result
30  if(json_parser.stack.size()==1)
31  dest.swap(json_parser.stack.top());
32 
33  // save some memory
35 
36  return result;
37 }
38 
39 // 'do it all' function
41  const std::string &filename,
42  message_handlert &message_handler,
43  jsont &dest)
44 {
45  std::ifstream in(filename);
46 
47  if(!in)
48  return true;
49 
50  return parse_json(in, filename, message_handler, dest);
51 }
json_parser
json_parsert json_parser
Definition: json_parser.cpp:13
json_parsert
Definition: json_parser.h:21
jsont
Definition: json.h:26
json_parser.h
json_parsert::clear
virtual void clear() override
Definition: json_parser.h:46
json_parsert::stack
stackt stack
Definition: json_parser.h:25
parsert::in
std::istream * in
Definition: parser.h:26
jsont::swap
void swap(jsont &other)
Definition: json.cpp:161
messaget::set_message_handler
virtual void set_message_handler(message_handlert &_message_handler)
Definition: message.h:179
message_handlert
Definition: message.h:27
json_parsert::parse
virtual bool parse() override
Definition: json_parser.h:29
parse_json
bool parse_json(std::istream &in, const std::string &filename, message_handlert &message_handler, jsont &dest)
Definition: json_parser.cpp:16
parsert::set_file
void set_file(const irep_idt &file)
Definition: parser.h:85