Skip to content

Commit c03cf15

Browse files
authored
Merge pull request #1594 from diffblue/use-output_filet-ebmc_solvert
use `output_filet` in `ebmc_solvert`
2 parents 53cbdad + c98a2e7 commit c03cf15

File tree

2 files changed

+18
-23
lines changed

2 files changed

+18
-23
lines changed

src/ebmc/ebmc_solver_factory.cpp

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ Author: Daniel Kroening, [email protected]
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

src/ebmc/ebmc_solver_factory.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ Author: Daniel Kroening, [email protected]
1616
#include <solvers/decision_procedure.h>
1717
#include <solvers/prop/prop.h>
1818

19+
#include "output_file.h"
20+
1921
#include <fstream>
2022
#include <memory>
2123

@@ -35,9 +37,9 @@ class ebmc_solvert final
3537
}
3638

3739
ebmc_solvert(
38-
std::unique_ptr<std::ofstream> p1,
40+
std::unique_ptr<output_filet> p1,
3941
std::unique_ptr<decision_proceduret> p2)
40-
: ofstream_ptr(std::move(p1)), decision_procedure_ptr(std::move(p2))
42+
: output_file_ptr(std::move(p1)), decision_procedure_ptr(std::move(p2))
4143
{
4244
}
4345

@@ -48,7 +50,7 @@ class ebmc_solvert final
4850
}
4951

5052
// the objects are deleted in the opposite order they appear below
51-
std::unique_ptr<std::ofstream> ofstream_ptr;
53+
std::unique_ptr<output_filet> output_file_ptr;
5254
std::unique_ptr<propt> prop_ptr;
5355
std::unique_ptr<decision_proceduret> decision_procedure_ptr;
5456
};

0 commit comments

Comments
 (0)