18
18
19
19
#include " goto_convert_functions.h"
20
20
#include " read_goto_binary.h"
21
- #include " get_goto_model .h"
21
+ #include " initialize_goto_model .h"
22
22
23
23
/* ******************************************************************\
24
24
25
- Function: get_goto_modelt::operator()
25
+ Function: initialize_goto_model
26
26
27
27
Inputs:
28
28
@@ -32,12 +32,16 @@ Function: get_goto_modelt::operator()
32
32
33
33
\*******************************************************************/
34
34
35
- bool get_goto_modelt::operator ()(const cmdlinet &_cmdline)
35
+ bool initialize_goto_model (
36
+ goto_modelt &goto_model,
37
+ const cmdlinet &cmdline,
38
+ message_handlert &message_handler)
36
39
{
37
- const std::vector<std::string> &files=_cmdline.args ;
40
+ messaget msg (message_handler);
41
+ const std::vector<std::string> &files=cmdline.args ;
38
42
if (files.empty ())
39
43
{
40
- error () << " Please provide a program" << eom;
44
+ msg. error () << " Please provide a program" << messaget:: eom;
41
45
return true ;
42
46
}
43
47
@@ -59,7 +63,7 @@ bool get_goto_modelt::operator()(const cmdlinet &_cmdline)
59
63
{
60
64
language_filest language_files;
61
65
62
- language_files.set_message_handler (get_message_handler () );
66
+ language_files.set_message_handler (message_handler );
63
67
64
68
for (const auto &filename : sources)
65
69
{
@@ -71,8 +75,8 @@ bool get_goto_modelt::operator()(const cmdlinet &_cmdline)
71
75
72
76
if (!infile)
73
77
{
74
- error () << " failed to open input file `" << filename
75
- << ' \' ' << eom;
78
+ msg. error () << " failed to open input file `" << filename
79
+ << ' \' ' << messaget:: eom;
76
80
return true ;
77
81
}
78
82
@@ -87,81 +91,78 @@ bool get_goto_modelt::operator()(const cmdlinet &_cmdline)
87
91
88
92
if (lf.language ==NULL )
89
93
{
90
- error (" failed to figure out type of file" , filename);
94
+ msg. error (" failed to figure out type of file" , filename);
91
95
return true ;
92
96
}
93
97
94
98
languaget &language=*lf.language ;
95
- language.set_message_handler (get_message_handler () );
96
- language.get_language_options (_cmdline );
99
+ language.set_message_handler (message_handler );
100
+ language.get_language_options (cmdline );
97
101
98
- status () << " Parsing " << filename << eom;
102
+ msg. status () << " Parsing " << filename << messaget:: eom;
99
103
100
104
if (language.parse (infile, filename))
101
105
{
102
- error () << " PARSING ERROR" << eom;
106
+ msg. error () << " PARSING ERROR" << messaget:: eom;
103
107
return true ;
104
108
}
105
109
106
110
lf.get_modules ();
107
111
}
108
112
109
- status () << " Converting" << eom;
113
+ msg. status () << " Converting" << messaget:: eom;
110
114
111
- if (language_files.typecheck (symbol_table))
115
+ if (language_files.typecheck (goto_model. symbol_table ))
112
116
{
113
- error () << " CONVERSION ERROR" << eom;
117
+ msg. error () << " CONVERSION ERROR" << messaget:: eom;
114
118
return true ;
115
119
}
116
120
117
121
if (binaries.empty ())
118
122
{
119
- if (language_files.final (symbol_table))
123
+ if (language_files.final (goto_model. symbol_table ))
120
124
{
121
- error () << " CONVERSION ERROR" << eom;
125
+ msg. error () << " CONVERSION ERROR" << messaget:: eom;
122
126
return true ;
123
127
}
124
128
}
125
129
}
126
130
127
131
for (const auto &file : binaries)
128
132
{
129
- status () << " Reading GOTO program from file" << eom;
133
+ msg. status () << " Reading GOTO program from file" << messaget:: eom;
130
134
131
- if (read_object_and_link (file, * this , get_message_handler () ))
135
+ if (read_object_and_link (file, goto_model, message_handler ))
132
136
return true ;
133
137
}
134
138
135
139
if (!binaries.empty ())
136
- config.set_from_symbol_table (symbol_table);
140
+ config.set_from_symbol_table (goto_model. symbol_table );
137
141
138
- status () << " Generating GOTO Program" << eom;
142
+ msg. status () << " Generating GOTO Program" << messaget:: eom;
139
143
140
- goto_convert (symbol_table,
141
- goto_functions,
142
- get_message_handler ());
144
+ goto_convert (
145
+ goto_model.symbol_table ,
146
+ goto_model.goto_functions ,
147
+ message_handler);
143
148
}
144
-
145
149
catch (const char *e)
146
150
{
147
- error () << e << eom;
151
+ msg. error () << e << messaget:: eom;
148
152
return true ;
149
153
}
150
-
151
154
catch (const std::string e)
152
155
{
153
- error () << e << eom;
156
+ msg. error () << e << messaget:: eom;
154
157
return true ;
155
158
}
156
-
157
159
catch (int )
158
160
{
159
161
return true ;
160
162
}
161
-
162
163
catch (std::bad_alloc)
163
164
{
164
- error () << " Out of memory" << eom;
165
+ msg. error () << " Out of memory" << messaget:: eom;
165
166
return true ;
166
167
}
167
168
0 commit comments