Skip to content

Commit d2e921a

Browse files
committed
Do not artificially separate message handler and uit
They were passed around independently, even though they originated from the very same object.
1 parent f25117b commit d2e921a

14 files changed

+47
-67
lines changed

jbmc/src/jbmc/jbmc_parse_options.cpp

+3-6
Original file line numberDiff line numberDiff line change
@@ -535,8 +535,7 @@ int jbmc_parse_optionst::doit()
535535
path_strategy_chooser,
536536
options,
537537
goto_model,
538-
ui_message_handler.get_ui(),
539-
*this,
538+
ui_message_handler,
540539
configure_bmc);
541540
}
542541
else
@@ -580,8 +579,7 @@ int jbmc_parse_optionst::doit()
580579
path_strategy_chooser,
581580
options,
582581
lazy_goto_model,
583-
ui_message_handler.get_ui(),
584-
*this,
582+
ui_message_handler,
585583
configure_bmc,
586584
callback_after_symex);
587585
}
@@ -636,8 +634,7 @@ int jbmc_parse_optionst::get_goto_program(
636634
{
637635
class_hierarchyt hierarchy;
638636
hierarchy(lazy_goto_model.symbol_table);
639-
show_class_hierarchy(
640-
hierarchy, get_message_handler(), ui_message_handler.get_ui());
637+
show_class_hierarchy(hierarchy, ui_message_handler);
641638
return CPROVER_EXIT_SUCCESS;
642639
}
643640

src/cbmc/all_properties.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ safety_checkert::resultt bmc_all_propertiest::operator()()
152152

153153
void bmc_all_propertiest::report(const cover_goalst &cover_goals)
154154
{
155-
switch(bmc.ui)
155+
switch(bmc.ui_message_handler.get_ui())
156156
{
157157
case ui_message_handlert::uit::PLAIN:
158158
{

src/cbmc/bmc.cpp

+9-13
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ void bmct::error_trace()
5252
goto_tracet &goto_trace=safety_checkert::error_trace;
5353
build_goto_trace(equation, prop_conv, ns, goto_trace);
5454

55-
switch(ui)
55+
switch(ui_message_handler.get_ui())
5656
{
5757
case ui_message_handlert::uit::PLAIN:
5858
result() << "Counterexample:" << eom;
@@ -151,7 +151,7 @@ void bmct::report_success()
151151
{
152152
result() << "VERIFICATION SUCCESSFUL" << eom;
153153

154-
switch(ui)
154+
switch(ui_message_handler.get_ui())
155155
{
156156
case ui_message_handlert::uit::PLAIN:
157157
break;
@@ -178,7 +178,7 @@ void bmct::report_failure()
178178
{
179179
result() << "VERIFICATION FAILED" << eom;
180180

181-
switch(ui)
181+
switch(ui_message_handler.get_ui())
182182
{
183183
case ui_message_handlert::uit::PLAIN:
184184
break;
@@ -477,15 +477,14 @@ int bmct::do_language_agnostic_bmc(
477477
const path_strategy_choosert &path_strategy_chooser,
478478
const optionst &opts,
479479
abstract_goto_modelt &model,
480-
const ui_message_handlert::uit &ui,
481-
messaget &message,
480+
ui_message_handlert &ui,
482481
std::function<void(bmct &, const symbol_tablet &)> driver_configure_bmc,
483482
std::function<bool(void)> callback_after_symex)
484483
{
485484
safety_checkert::resultt final_result = safety_checkert::resultt::UNKNOWN;
486485
safety_checkert::resultt tmp_result = safety_checkert::resultt::UNKNOWN;
487486
const symbol_tablet &symbol_table = model.get_symbol_table();
488-
message_handlert &mh = message.get_message_handler();
487+
messaget message(ui);
489488
std::unique_ptr<path_storaget> worklist;
490489
std::string strategy = opts.get_option("exploration-strategy");
491490
INVARIANT(
@@ -495,13 +494,11 @@ int bmct::do_language_agnostic_bmc(
495494
try
496495
{
497496
{
498-
cbmc_solverst solvers(opts, symbol_table, message.get_message_handler());
499-
solvers.set_ui(ui);
497+
cbmc_solverst solvers(opts, symbol_table, ui);
500498
std::unique_ptr<cbmc_solverst::solvert> cbmc_solver;
501499
cbmc_solver = solvers.get_solver();
502500
prop_convt &pc = cbmc_solver->prop_conv();
503-
bmct bmc(opts, symbol_table, mh, pc, *worklist, callback_after_symex);
504-
bmc.set_ui(ui);
501+
bmct bmc(opts, symbol_table, ui, pc, *worklist, callback_after_symex);
505502
if(driver_configure_bmc)
506503
driver_configure_bmc(bmc, symbol_table);
507504
tmp_result = bmc.run(model);
@@ -545,16 +542,15 @@ int bmct::do_language_agnostic_bmc(
545542
<< "Starting new path (" << worklist->size()
546543
<< " to go)\n"
547544
<< message.eom;
548-
cbmc_solverst solvers(opts, symbol_table, message.get_message_handler());
549-
solvers.set_ui(ui);
545+
cbmc_solverst solvers(opts, symbol_table, ui);
550546
std::unique_ptr<cbmc_solverst::solvert> cbmc_solver;
551547
cbmc_solver = solvers.get_solver();
552548
prop_convt &pc = cbmc_solver->prop_conv();
553549
path_storaget::patht &resume = worklist->peek();
554550
path_explorert pe(
555551
opts,
556552
symbol_table,
557-
mh,
553+
ui,
558554
pc,
559555
resume.equation,
560556
resume.state,

src/cbmc/bmc.h

+7-10
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class bmct:public safety_checkert
6666
bmct(
6767
const optionst &_options,
6868
const symbol_tablet &outer_symbol_table,
69-
message_handlert &_message_handler,
69+
ui_message_handlert &_message_handler,
7070
prop_convt &_prop_conv,
7171
path_storaget &_path_storage,
7272
std::function<bool(void)> callback_after_symex)
@@ -83,7 +83,7 @@ class bmct:public safety_checkert
8383
options,
8484
path_storage),
8585
prop_conv(_prop_conv),
86-
ui(ui_message_handlert::uit::PLAIN),
86+
ui_message_handler(_message_handler),
8787
driver_callback_after_symex(callback_after_symex)
8888
{
8989
symex.constant_propagation=options.get_bool_option("propagation");
@@ -103,8 +103,6 @@ class bmct:public safety_checkert
103103
safety_checkert::resultt execute(abstract_goto_modelt &);
104104
virtual ~bmct() { }
105105

106-
void set_ui(ui_message_handlert::uit _ui) { ui=_ui; }
107-
108106
// the safety_checkert interface
109107
virtual resultt operator()(
110108
const goto_functionst &goto_functions)
@@ -127,8 +125,7 @@ class bmct:public safety_checkert
127125
const path_strategy_choosert &path_strategy_chooser,
128126
const optionst &opts,
129127
abstract_goto_modelt &goto_model,
130-
const ui_message_handlert::uit &ui,
131-
messaget &message,
128+
ui_message_handlert &ui,
132129
std::function<void(bmct &, const symbol_tablet &)>
133130
driver_configure_bmc = nullptr,
134131
std::function<bool(void)> callback_after_symex = nullptr);
@@ -144,7 +141,7 @@ class bmct:public safety_checkert
144141
bmct(
145142
const optionst &_options,
146143
const symbol_tablet &outer_symbol_table,
147-
message_handlert &_message_handler,
144+
ui_message_handlert &_message_handler,
148145
prop_convt &_prop_conv,
149146
symex_target_equationt &_equation,
150147
path_storaget &_path_storage,
@@ -162,7 +159,7 @@ class bmct:public safety_checkert
162159
options,
163160
path_storage),
164161
prop_conv(_prop_conv),
165-
ui(ui_message_handlert::uit::PLAIN),
162+
ui_message_handler(_message_handler),
166163
driver_callback_after_symex(callback_after_symex)
167164
{
168165
symex.constant_propagation = options.get_bool_option("propagation");
@@ -186,7 +183,7 @@ class bmct:public safety_checkert
186183
prop_convt &prop_conv;
187184
std::unique_ptr<memory_model_baset> memory_model;
188185
// use gui format
189-
ui_message_handlert::uit ui;
186+
ui_message_handlert &ui_message_handler;
190187

191188
virtual decision_proceduret::resultt
192189
run_decision_procedure(prop_convt &prop_conv);
@@ -263,7 +260,7 @@ class path_explorert : public bmct
263260
path_explorert(
264261
const optionst &_options,
265262
const symbol_tablet &outer_symbol_table,
266-
message_handlert &_message_handler,
263+
ui_message_handlert &_message_handler,
267264
prop_convt &_prop_conv,
268265
symex_target_equationt &saved_equation,
269266
const goto_symex_statet &saved_state,

src/cbmc/bmc_cover.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ bool bmc_covert::operator()()
259259
if(g.second.satisfied)
260260
goals_covered++;
261261

262-
switch(bmc.ui)
262+
switch(bmc.ui_message_handler.get_ui())
263263
{
264264
case ui_message_handlert::uit::PLAIN:
265265
{
@@ -404,7 +404,7 @@ bool bmc_covert::operator()()
404404
<< (cover_goals.iterations()==1?"":"s")
405405
<< eom;
406406

407-
if(bmc.ui==ui_message_handlert::uit::PLAIN)
407+
if(bmc.ui_message_handler.get_ui() == ui_message_handlert::uit::PLAIN)
408408
{
409409
result() << "Test suite:" << '\n';
410410

src/cbmc/cbmc_parse_options.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -533,8 +533,7 @@ int cbmc_parse_optionst::doit()
533533
path_strategy_chooser,
534534
options,
535535
goto_model,
536-
ui_message_handler.get_ui(),
537-
*this);
536+
ui_message_handler);
538537
}
539538

540539
bool cbmc_parse_optionst::set_properties()

src/cbmc/cbmc_solvers.cpp

+14-10
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ std::unique_ptr<cbmc_solverst::solvert> cbmc_solverst::get_default()
6969
solver->set_prop(util_make_unique<satcheckt>());
7070
}
7171

72-
solver->prop().set_message_handler(get_message_handler());
72+
solver->prop().set_message_handler(message_handler);
7373

7474
auto bv_pointers = util_make_unique<bv_pointerst>(ns, solver->prop());
7575

@@ -89,7 +89,7 @@ std::unique_ptr<cbmc_solverst::solvert> cbmc_solverst::get_dimacs()
8989
no_incremental_check();
9090

9191
auto prop=util_make_unique<dimacs_cnft>();
92-
prop->set_message_handler(get_message_handler());
92+
prop->set_message_handler(message_handler);
9393

9494
std::string filename=options.get_option("outfile");
9595

@@ -110,7 +110,7 @@ std::unique_ptr<cbmc_solverst::solvert> cbmc_solverst::get_bv_refinement()
110110
return util_make_unique<satcheck_no_simplifiert>();
111111
}();
112112

113-
prop->set_message_handler(get_message_handler());
113+
prop->set_message_handler(message_handler);
114114

115115
bv_refinementt::infot info;
116116
info.ns=&ns;
@@ -137,7 +137,7 @@ std::unique_ptr<cbmc_solverst::solvert> cbmc_solverst::get_string_refinement()
137137
string_refinementt::infot info;
138138
info.ns=&ns;
139139
auto prop=util_make_unique<satcheck_no_simplifiert>();
140-
prop->set_message_handler(get_message_handler());
140+
prop->set_message_handler(message_handler);
141141
info.prop=prop.get();
142142
info.refinement_bound=DEFAULT_MAX_NB_REFINEMENT;
143143
if(options.get_bool_option("max-node-refinement"))
@@ -153,6 +153,7 @@ std::unique_ptr<cbmc_solverst::solvert> cbmc_solverst::get_string_refinement()
153153
std::unique_ptr<cbmc_solverst::solvert> cbmc_solverst::get_smt2(
154154
smt2_dect::solvert solver)
155155
{
156+
messaget msg(message_handler);
156157
no_beautification();
157158

158159
const std::string &filename=options.get_option("outfile");
@@ -161,7 +162,7 @@ std::unique_ptr<cbmc_solverst::solvert> cbmc_solverst::get_smt2(
161162
{
162163
if(solver==smt2_dect::solvert::GENERIC)
163164
{
164-
error() << "please use --outfile" << eom;
165+
msg.error() << "please use --outfile" << messaget::eom;
165166
throw 0;
166167
}
167168

@@ -190,7 +191,7 @@ std::unique_ptr<cbmc_solverst::solvert> cbmc_solverst::get_smt2(
190191
if(options.get_bool_option("fpa"))
191192
smt2_conv->use_FPA_theory=true;
192193

193-
smt2_conv->set_message_handler(get_message_handler());
194+
smt2_conv->set_message_handler(message_handler);
194195

195196
return util_make_unique<solvert>(std::move(smt2_conv));
196197
}
@@ -204,7 +205,7 @@ std::unique_ptr<cbmc_solverst::solvert> cbmc_solverst::get_smt2(
204205

205206
if(!*out)
206207
{
207-
error() << "failed to open " << filename << eom;
208+
msg.error() << "failed to open " << filename << messaget::eom;
208209
throw 0;
209210
}
210211

@@ -219,7 +220,7 @@ std::unique_ptr<cbmc_solverst::solvert> cbmc_solverst::get_smt2(
219220
if(options.get_bool_option("fpa"))
220221
smt2_conv->use_FPA_theory=true;
221222

222-
smt2_conv->set_message_handler(get_message_handler());
223+
smt2_conv->set_message_handler(message_handler);
223224

224225
return util_make_unique<solvert>(std::move(smt2_conv), std::move(out));
225226
}
@@ -229,7 +230,8 @@ void cbmc_solverst::no_beautification()
229230
{
230231
if(options.get_bool_option("beautify"))
231232
{
232-
error() << "sorry, this solver does not support beautification" << eom;
233+
messaget(message_handler).error()
234+
<< "sorry, this solver does not support beautification" << messaget::eom;
233235
throw 0;
234236
}
235237
}
@@ -240,7 +242,9 @@ void cbmc_solverst::no_incremental_check()
240242
options.get_option("cover")!="" ||
241243
options.get_option("incremental-check")!="")
242244
{
243-
error() << "sorry, this solver does not support incremental solving" << eom;
245+
messaget(message_handler).error()
246+
<< "sorry, this solver does not support incremental solving"
247+
<< messaget::eom;
244248
throw 0;
245249
}
246250
}

src/cbmc/cbmc_solvers.h

+3-9
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ Author: Daniel Kroening, [email protected]
1717
#include <memory>
1818

1919
#include <util/options.h>
20-
#include <util/ui_message.h>
2120

2221
#include <solvers/prop/prop.h>
2322
#include <solvers/prop/prop_conv.h>
@@ -26,18 +25,17 @@ Author: Daniel Kroening, [email protected]
2625
#include <solvers/smt2/smt2_dec.h>
2726
#include <goto-symex/symex_target_equation.h>
2827

29-
class cbmc_solverst:public messaget
28+
class cbmc_solverst
3029
{
3130
public:
3231
cbmc_solverst(
3332
const optionst &_options,
3433
const symbol_tablet &_symbol_table,
3534
message_handlert &_message_handler):
36-
messaget(_message_handler),
3735
options(_options),
3836
symbol_table(_symbol_table),
3937
ns(_symbol_table),
40-
ui(ui_message_handlert::uit::PLAIN)
38+
message_handler(_message_handler)
4139
{
4240
}
4341

@@ -117,15 +115,11 @@ class cbmc_solverst:public messaget
117115
{
118116
}
119117

120-
void set_ui(ui_message_handlert::uit _ui) { ui=_ui; }
121-
122118
protected:
123119
const optionst &options;
124120
const symbol_tablet &symbol_table;
125121
namespacet ns;
126-
127-
// use gui format
128-
ui_message_handlert::uit ui;
122+
message_handlert &message_handler;
129123

130124
std::unique_ptr<solvert> get_default();
131125
std::unique_ptr<solvert> get_dimacs();

src/cbmc/fault_localization.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ safety_checkert::resultt fault_localizationt::stop_on_fail()
288288
// localize faults
289289
run(ID_nil);
290290

291-
switch(bmc.ui)
291+
switch(bmc.ui_message_handler.get_ui())
292292
{
293293
case ui_message_handlert::uit::PLAIN:
294294
{
@@ -353,7 +353,7 @@ void fault_localizationt::report(
353353
{
354354
bmc_all_propertiest::report(cover_goals);
355355

356-
switch(bmc.ui)
356+
switch(bmc.ui_message_handler.get_ui())
357357
{
358358
case ui_message_handlert::uit::PLAIN:
359359
if(cover_goals.number_covered()>0)

src/cbmc/show_vcc.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ void bmct::show_vcc()
153153

154154
std::ostream &out=have_file?of:std::cout;
155155

156-
switch(ui)
156+
switch(ui_message_handler.get_ui())
157157
{
158158
case ui_message_handlert::uit::XML_UI:
159159
error() << "XML UI not supported" << eom;

0 commit comments

Comments
 (0)