88
99#include " ebmc_solver_factory.h"
1010
11- #include < util/unicode.h>
12-
1311#include < solvers/flattening/boolbv.h>
1412#include < solvers/prop/prop.h>
1513#include < solvers/sat/satcheck.h>
@@ -34,19 +32,17 @@ ebmc_solver_factoryt ebmc_solver_factory(const cmdlinet &cmdline)
3432
3533 return [filename](const namespacet &ns, message_handlert &message_handler)
3634 {
37- std::unique_ptr<std::ofstream> outfile_ptr{
38- new std::ofstream (widen_if_needed (filename))};
39-
40- if (!*outfile_ptr)
41- throw ebmc_errort () << " Failed to open `" << filename << " '" ;
35+ std::unique_ptr<output_filet> output_file_ptr{
36+ new output_filet{filename}};
4237
4338 messaget message (message_handler);
44- message.status () << " Writing formula to `" << filename << " ' "
45- << messaget::eom;
39+ message.status () << " Writing formula to `" << output_file_ptr-> name ()
40+ << " ' " << messaget::eom;
4641
47- auto dec = std::make_unique<show_formula_solvert>(*outfile_ptr);
42+ auto dec =
43+ std::make_unique<show_formula_solvert>(output_file_ptr->stream ());
4844
49- return ebmc_solvert{std::move (outfile_ptr ), std::move (dec)};
45+ return ebmc_solvert{std::move (output_file_ptr ), std::move (dec)};
5046 };
5147 }
5248 else
@@ -79,25 +75,22 @@ ebmc_solver_factoryt ebmc_solver_factory(const cmdlinet &cmdline)
7975 return [filename, smt2_solver](
8076 const namespacet &ns, message_handlert &message_handler)
8177 {
82- std::unique_ptr<std::ofstream> outfile_ptr{
83- new std::ofstream (widen_if_needed (filename))};
84-
85- if (!*outfile_ptr)
86- throw ebmc_errort () << " Failed to open `" << filename << " '" ;
78+ std::unique_ptr<output_filet> output_file_ptr{
79+ new output_filet{filename}};
8780
8881 messaget message (message_handler);
89- message.status () << " Writing SMT2 formula to `" << filename << " ' "
90- << messaget::eom;
82+ message.status () << " Writing SMT2 formula to `"
83+ << output_file_ptr-> name () << " ' " << messaget::eom;
9184
9285 auto dec = std::make_unique<smt2_convt>(
9386 ns,
9487 " ebmc" ,
9588 std::string (" Generated by EBMC " ) + EBMC_VERSION,
9689 " QF_AUFBV" ,
9790 smt2_solver.value (),
98- *outfile_ptr );
91+ output_file_ptr-> stream () );
9992
100- return ebmc_solvert{std::move (outfile_ptr ), std::move (dec)};
93+ return ebmc_solvert{std::move (output_file_ptr ), std::move (dec)};
10194 };
10295 }
10396 else
0 commit comments