Skip to content

Commit 31e6b52

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 d6bdee6 commit 31e6b52

14 files changed

+49
-69
lines changed

jbmc/src/jbmc/jbmc_parse_options.cpp

+3-6
Original file line numberDiff line numberDiff line change
@@ -560,8 +560,7 @@ int jbmc_parse_optionst::doit()
560560
path_strategy_chooser,
561561
options,
562562
goto_model,
563-
ui_message_handler.get_ui(),
564-
*this,
563+
ui_message_handler,
565564
configure_bmc);
566565
}
567566
else
@@ -605,8 +604,7 @@ int jbmc_parse_optionst::doit()
605604
path_strategy_chooser,
606605
options,
607606
lazy_goto_model,
608-
ui_message_handler.get_ui(),
609-
*this,
607+
ui_message_handler,
610608
configure_bmc,
611609
callback_after_symex);
612610
}
@@ -661,8 +659,7 @@ int jbmc_parse_optionst::get_goto_program(
661659
{
662660
class_hierarchyt hierarchy;
663661
hierarchy(lazy_goto_model.symbol_table);
664-
show_class_hierarchy(
665-
hierarchy, get_message_handler(), ui_message_handler.get_ui());
662+
show_class_hierarchy(hierarchy, ui_message_handler);
666663
return CPROVER_EXIT_SUCCESS;
667664
}
668665

src/cbmc/all_properties.cpp

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

158158
void bmc_all_propertiest::report(const cover_goalst &cover_goals)
159159
{
160-
switch(bmc.ui)
160+
switch(bmc.ui_message_handler.get_ui())
161161
{
162162
case ui_message_handlert::uit::PLAIN:
163163
{

src/cbmc/bmc.cpp

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

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

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

180-
switch(ui)
180+
switch(ui_message_handler.get_ui())
181181
{
182182
case ui_message_handlert::uit::PLAIN:
183183
break;
@@ -562,15 +562,14 @@ int bmct::do_language_agnostic_bmc(
562562
const path_strategy_choosert &path_strategy_chooser,
563563
const optionst &opts,
564564
abstract_goto_modelt &model,
565-
const ui_message_handlert::uit &ui,
566-
messaget &message,
565+
ui_message_handlert &ui,
567566
std::function<void(bmct &, const symbol_tablet &)> driver_configure_bmc,
568567
std::function<bool(void)> callback_after_symex)
569568
{
570569
safety_checkert::resultt final_result = safety_checkert::resultt::UNKNOWN;
571570
safety_checkert::resultt tmp_result = safety_checkert::resultt::UNKNOWN;
572571
const symbol_tablet &symbol_table = model.get_symbol_table();
573-
message_handlert &mh = message.get_message_handler();
572+
messaget message(ui);
574573
std::unique_ptr<path_storaget> worklist;
575574
std::string strategy = opts.get_option("exploration-strategy");
576575
INVARIANT(
@@ -580,13 +579,11 @@ int bmct::do_language_agnostic_bmc(
580579
try
581580
{
582581
{
583-
cbmc_solverst solvers(opts, symbol_table, message.get_message_handler());
584-
solvers.set_ui(ui);
582+
cbmc_solverst solvers(opts, symbol_table, ui);
585583
std::unique_ptr<cbmc_solverst::solvert> cbmc_solver;
586584
cbmc_solver = solvers.get_solver();
587585
prop_convt &pc = cbmc_solver->prop_conv();
588-
bmct bmc(opts, symbol_table, mh, pc, *worklist, callback_after_symex);
589-
bmc.set_ui(ui);
586+
bmct bmc(opts, symbol_table, ui, pc, *worklist, callback_after_symex);
590587
if(driver_configure_bmc)
591588
driver_configure_bmc(bmc, symbol_table);
592589
tmp_result = bmc.run(model);
@@ -621,16 +618,15 @@ int bmct::do_language_agnostic_bmc(
621618
<< "Starting new path (" << worklist->size()
622619
<< " to go)\n"
623620
<< message.eom;
624-
cbmc_solverst solvers(opts, symbol_table, message.get_message_handler());
625-
solvers.set_ui(ui);
621+
cbmc_solverst solvers(opts, symbol_table, ui);
626622
std::unique_ptr<cbmc_solverst::solvert> cbmc_solver;
627623
cbmc_solver = solvers.get_solver();
628624
prop_convt &pc = cbmc_solver->prop_conv();
629625
path_storaget::patht &resume = worklist->peek();
630626
path_explorert pe(
631627
opts,
632628
symbol_table,
633-
mh,
629+
ui,
634630
pc,
635631
resume.equation,
636632
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);
@@ -266,7 +263,7 @@ class path_explorert : public bmct
266263
path_explorert(
267264
const optionst &_options,
268265
const symbol_tablet &outer_symbol_table,
269-
message_handlert &_message_handler,
266+
ui_message_handlert &_message_handler,
270267
prop_convt &_prop_conv,
271268
symex_target_equationt &saved_equation,
272269
const goto_symex_statet &saved_state,

src/cbmc/bmc_cover.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ bool bmc_covert::operator()()
267267
if(g.second.satisfied)
268268
goals_covered++;
269269

270-
switch(bmc.ui)
270+
switch(bmc.ui_message_handler.get_ui())
271271
{
272272
case ui_message_handlert::uit::PLAIN:
273273
{
@@ -412,7 +412,7 @@ bool bmc_covert::operator()()
412412
<< (cover_goals.iterations()==1?"":"s")
413413
<< eom;
414414

415-
if(bmc.ui==ui_message_handlert::uit::PLAIN)
415+
if(bmc.ui_message_handler.get_ui() == ui_message_handlert::uit::PLAIN)
416416
{
417417
result() << "Test suite:" << '\n';
418418

src/cbmc/cbmc_parse_options.cpp

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

539538
bool cbmc_parse_optionst::set_properties()

src/cbmc/cbmc_solvers.cpp

+15-12
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ std::unique_ptr<cbmc_solverst::solvert> cbmc_solverst::get_default()
7070
solver->set_prop(util_make_unique<satcheckt>());
7171
}
7272

73-
solver->prop().set_message_handler(get_message_handler());
73+
solver->prop().set_message_handler(ui);
7474

7575
auto bv_cbmc=util_make_unique<bv_cbmct>(ns, solver->prop());
7676

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

9292
auto prop=util_make_unique<dimacs_cnft>();
93-
prop->set_message_handler(get_message_handler());
93+
prop->set_message_handler(ui);
9494

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

@@ -111,12 +111,12 @@ std::unique_ptr<cbmc_solverst::solvert> cbmc_solverst::get_bv_refinement()
111111
return util_make_unique<satcheck_no_simplifiert>();
112112
}();
113113

114-
prop->set_message_handler(get_message_handler());
114+
prop->set_message_handler(ui);
115115

116116
bv_refinementt::infot info;
117117
info.ns=&ns;
118118
info.prop=prop.get();
119-
info.ui=ui;
119+
info.ui=ui.get_ui();
120120

121121
// we allow setting some parameters
122122
if(options.get_bool_option("max-node-refinement"))
@@ -139,10 +139,10 @@ std::unique_ptr<cbmc_solverst::solvert> cbmc_solverst::get_string_refinement()
139139
string_refinementt::infot info;
140140
info.ns=&ns;
141141
auto prop=util_make_unique<satcheck_no_simplifiert>();
142-
prop->set_message_handler(get_message_handler());
142+
prop->set_message_handler(ui);
143143
info.prop=prop.get();
144144
info.refinement_bound=DEFAULT_MAX_NB_REFINEMENT;
145-
info.ui=ui;
145+
info.ui=ui.get_ui();
146146
if(options.get_bool_option("string-max-length"))
147147
info.max_string_length = options.get_signed_int_option("string-max-length");
148148
info.trace=options.get_bool_option("trace");
@@ -159,6 +159,7 @@ std::unique_ptr<cbmc_solverst::solvert> cbmc_solverst::get_string_refinement()
159159
std::unique_ptr<cbmc_solverst::solvert> cbmc_solverst::get_smt2(
160160
smt2_dect::solvert solver)
161161
{
162+
messaget msg(ui);
162163
no_beautification();
163164

164165
const std::string &filename=options.get_option("outfile");
@@ -167,7 +168,7 @@ std::unique_ptr<cbmc_solverst::solvert> cbmc_solverst::get_smt2(
167168
{
168169
if(solver==smt2_dect::solvert::GENERIC)
169170
{
170-
error() << "please use --outfile" << eom;
171+
msg.error() << "please use --outfile" << messaget::eom;
171172
throw 0;
172173
}
173174

@@ -198,7 +199,7 @@ std::unique_ptr<cbmc_solverst::solvert> cbmc_solverst::get_smt2(
198199
if(options.get_bool_option("fpa"))
199200
smt2_conv->use_FPA_theory=true;
200201

201-
smt2_conv->set_message_handler(get_message_handler());
202+
smt2_conv->set_message_handler(ui);
202203

203204
return util_make_unique<solvert>(std::move(smt2_conv));
204205
}
@@ -212,7 +213,7 @@ std::unique_ptr<cbmc_solverst::solvert> cbmc_solverst::get_smt2(
212213

213214
if(!*out)
214215
{
215-
error() << "failed to open " << filename << eom;
216+
msg.error() << "failed to open " << filename << messaget::eom;
216217
throw 0;
217218
}
218219

@@ -228,7 +229,7 @@ std::unique_ptr<cbmc_solverst::solvert> cbmc_solverst::get_smt2(
228229
if(options.get_bool_option("fpa"))
229230
smt2_conv->use_FPA_theory=true;
230231

231-
smt2_conv->set_message_handler(get_message_handler());
232+
smt2_conv->set_message_handler(ui);
232233

233234
return util_make_unique<solvert>(std::move(smt2_conv), std::move(out));
234235
}
@@ -238,7 +239,8 @@ void cbmc_solverst::no_beautification()
238239
{
239240
if(options.get_bool_option("beautify"))
240241
{
241-
error() << "sorry, this solver does not support beautification" << eom;
242+
messaget(ui).error() << "sorry, this solver does not support beautification"
243+
<< messaget::eom;
242244
throw 0;
243245
}
244246
}
@@ -249,7 +251,8 @@ void cbmc_solverst::no_incremental_check()
249251
options.get_option("cover")!="" ||
250252
options.get_option("incremental-check")!="")
251253
{
252-
error() << "sorry, this solver does not support incremental solving" << eom;
254+
messaget(ui).error() << "sorry, this solver does not support incremental "
255+
<< "solving" << messaget::eom;
253256
throw 0;
254257
}
255258
}

src/cbmc/cbmc_solvers.h

+4-9
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,17 @@ Author: Daniel Kroening, [email protected]
2929

3030
#include "bv_cbmc.h"
3131

32-
class cbmc_solverst:public messaget
32+
class cbmc_solverst
3333
{
3434
public:
3535
cbmc_solverst(
3636
const optionst &_options,
3737
const symbol_tablet &_symbol_table,
38-
message_handlert &_message_handler):
39-
messaget(_message_handler),
38+
ui_message_handlert &_message_handler):
4039
options(_options),
4140
symbol_table(_symbol_table),
4241
ns(_symbol_table),
43-
ui(ui_message_handlert::uit::PLAIN)
42+
ui(_message_handler)
4443
{
4544
}
4645

@@ -120,15 +119,11 @@ class cbmc_solverst:public messaget
120119
{
121120
}
122121

123-
void set_ui(ui_message_handlert::uit _ui) { ui=_ui; }
124-
125122
protected:
126123
const optionst &options;
127124
const symbol_tablet &symbol_table;
128125
namespacet ns;
129-
130-
// use gui format
131-
ui_message_handlert::uit ui;
126+
ui_message_handlert &ui;
132127

133128
std::unique_ptr<solvert> get_default();
134129
std::unique_ptr<solvert> get_dimacs();

src/cbmc/fault_localization.cpp

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

292-
switch(bmc.ui)
292+
switch(bmc.ui_message_handler.get_ui())
293293
{
294294
case ui_message_handlert::uit::PLAIN:
295295
{
@@ -356,7 +356,7 @@ void fault_localizationt::report(
356356
{
357357
bmc_all_propertiest::report(cover_goals);
358358

359-
switch(bmc.ui)
359+
switch(bmc.ui_message_handler.get_ui())
360360
{
361361
case ui_message_handlert::uit::PLAIN:
362362
if(cover_goals.number_covered()>0)

src/cbmc/show_vcc.cpp

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

149149
std::ostream &out=have_file?of:std::cout;
150150

151-
switch(ui)
151+
switch(ui_message_handler.get_ui())
152152
{
153153
case ui_message_handlert::uit::XML_UI:
154154
error() << "XML UI not supported" << eom;

0 commit comments

Comments
 (0)