Skip to content

Commit 969eaa6

Browse files
Replaced get_goto_modelt with initialize_goto_model
This initialisation does not need to be done by a derived class - it does not use any private members - and doing so prevents creating other derived classes
1 parent eac93e3 commit 969eaa6

6 files changed

+41
-45
lines changed

src/goto-analyzer/goto_analyzer_parse_options.cpp

+1-3
Original file line numberDiff line numberDiff line change
@@ -214,9 +214,7 @@ int goto_analyzer_parse_optionst::doit()
214214

215215
register_languages();
216216

217-
goto_model.set_message_handler(get_message_handler());
218-
219-
if(goto_model(cmdline))
217+
if(initialize_goto_model(goto_model, cmdline, get_message_handler()))
220218
return 6;
221219

222220
if(process_goto_program(options))

src/goto-analyzer/goto_analyzer_parse_options.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ class goto_analyzer_parse_optionst:
5656

5757
protected:
5858
ui_message_handlert ui_message_handler;
59-
get_goto_modelt goto_model;
59+
goto_modelt goto_model;
6060

6161
virtual void register_languages();
6262

src/goto-programs/get_goto_model.cpp

+32-31
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Author: Daniel Kroening, [email protected]
2222

2323
/*******************************************************************\
2424
25-
Function: get_goto_modelt::operator()
25+
Function: initialize_goto_model
2626
2727
Inputs:
2828
@@ -32,12 +32,16 @@ Function: get_goto_modelt::operator()
3232
3333
\*******************************************************************/
3434

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)
3639
{
37-
const std::vector<std::string> &files=_cmdline.args;
40+
messaget msg(message_handler);
41+
const std::vector<std::string> &files=cmdline.args;
3842
if(files.empty())
3943
{
40-
error() << "Please provide a program" << eom;
44+
msg.error() << "Please provide a program" << messaget::eom;
4145
return true;
4246
}
4347

@@ -59,7 +63,7 @@ bool get_goto_modelt::operator()(const cmdlinet &_cmdline)
5963
{
6064
language_filest language_files;
6165

62-
language_files.set_message_handler(get_message_handler());
66+
language_files.set_message_handler(message_handler);
6367

6468
for(const auto &filename : sources)
6569
{
@@ -71,8 +75,8 @@ bool get_goto_modelt::operator()(const cmdlinet &_cmdline)
7175

7276
if(!infile)
7377
{
74-
error() << "failed to open input file `" << filename
75-
<< '\'' << eom;
78+
msg.error() << "failed to open input file `" << filename
79+
<< '\'' << messaget::eom;
7680
return true;
7781
}
7882

@@ -87,81 +91,78 @@ bool get_goto_modelt::operator()(const cmdlinet &_cmdline)
8791

8892
if(lf.language==NULL)
8993
{
90-
error("failed to figure out type of file", filename);
94+
msg.error("failed to figure out type of file", filename);
9195
return true;
9296
}
9397

9498
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);
97101

98-
status() << "Parsing " << filename << eom;
102+
msg.status() << "Parsing " << filename << messaget::eom;
99103

100104
if(language.parse(infile, filename))
101105
{
102-
error() << "PARSING ERROR" << eom;
106+
msg.error() << "PARSING ERROR" << messaget::eom;
103107
return true;
104108
}
105109

106110
lf.get_modules();
107111
}
108112

109-
status() << "Converting" << eom;
113+
msg.status() << "Converting" << messaget::eom;
110114

111-
if(language_files.typecheck(symbol_table))
115+
if(language_files.typecheck(goto_model.symbol_table))
112116
{
113-
error() << "CONVERSION ERROR" << eom;
117+
msg.error() << "CONVERSION ERROR" << messaget::eom;
114118
return true;
115119
}
116120

117121
if(binaries.empty())
118122
{
119-
if(language_files.final(symbol_table))
123+
if(language_files.final(goto_model.symbol_table))
120124
{
121-
error() << "CONVERSION ERROR" << eom;
125+
msg.error() << "CONVERSION ERROR" << messaget::eom;
122126
return true;
123127
}
124128
}
125129
}
126130

127131
for(const auto &file : binaries)
128132
{
129-
status() << "Reading GOTO program from file" << eom;
133+
msg.status() << "Reading GOTO program from file" << messaget::eom;
130134

131-
if(read_object_and_link(file, *this, get_message_handler()))
135+
if(read_object_and_link(file, goto_model, message_handler))
132136
return true;
133137
}
134138

135139
if(!binaries.empty())
136-
config.set_from_symbol_table(symbol_table);
140+
config.set_from_symbol_table(goto_model.symbol_table);
137141

138-
status() << "Generating GOTO Program" << eom;
142+
msg.status() << "Generating GOTO Program" << messaget::eom;
139143

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);
143148
}
144-
145149
catch(const char *e)
146150
{
147-
error() << e << eom;
151+
msg.error() << e << messaget::eom;
148152
return true;
149153
}
150-
151154
catch(const std::string e)
152155
{
153-
error() << e << eom;
156+
msg.error() << e << messaget::eom;
154157
return true;
155158
}
156-
157159
catch(int)
158160
{
159161
return true;
160162
}
161-
162163
catch(std::bad_alloc)
163164
{
164-
error() << "Out of memory" << eom;
165+
msg.error() << "Out of memory" << messaget::eom;
165166
return true;
166167
}
167168

src/goto-programs/get_goto_model.h

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*******************************************************************\
22
3-
Module: Obtain a Goto Program
3+
Module: Initialize a Goto Program
44
55
Author: Daniel Kroening, [email protected]
66
@@ -14,10 +14,9 @@ Author: Daniel Kroening, [email protected]
1414

1515
#include "goto_model.h"
1616

17-
class get_goto_modelt:public goto_modelt, public messaget
18-
{
19-
public:
20-
bool operator()(const cmdlinet &);
21-
};
17+
bool initialize_goto_model(
18+
goto_modelt &goto_model,
19+
const cmdlinet &cmdline,
20+
message_handlert &message_handler);
2221

2322
#endif // CPROVER_GOTO_PROGRAMS_GET_GOTO_MODEL_H

src/symex/symex_parse_options.cpp

+1-3
Original file line numberDiff line numberDiff line change
@@ -177,9 +177,7 @@ int symex_parse_optionst::doit()
177177

178178
eval_verbosity();
179179

180-
goto_model.set_message_handler(get_message_handler());
181-
182-
if(goto_model(cmdline))
180+
if(initialize_goto_model(goto_model, cmdline, get_message_handler()))
183181
return 6;
184182

185183
if(process_goto_program(options))

src/symex/symex_parse_options.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class symex_parse_optionst:
5959

6060
protected:
6161
ui_message_handlert ui_message_handler;
62-
get_goto_modelt goto_model;
62+
goto_modelt goto_model;
6363

6464
void get_command_line_options(optionst &options);
6565
bool process_goto_program(const optionst &options);

0 commit comments

Comments
 (0)