@@ -22,6 +22,7 @@ Author: Daniel Kroening, kroening@kroening.com
2222
2323#include " ebmc_base.h"
2424#include " ebmc_error.h"
25+ #include " output_file.h"
2526#include " waveform.h"
2627
2728#include < algorithm>
@@ -182,15 +183,12 @@ int random_traces(const cmdlinet &cmdline, message_handlert &message_handler)
182183 {
183184 PRECONDITION (outfile_prefix.has_value ());
184185 auto filename = outfile_prefix.value () + std::to_string (trace_nr + 1 );
185- std::ofstream out ( widen_if_needed ( filename)) ;
186+ auto outfile = output_filet{ filename} ;
186187
187- if (!out)
188- throw ebmc_errort () << " failed to write trace to " << filename;
189-
190- consolet::out () << " *** Writing " << filename << ' \n ' ;
188+ consolet::out () << " *** Writing " << outfile.name () << ' \n ' ;
191189
192190 messaget message (message_handler);
193- show_trans_trace_vcd (trace, message, ns, out );
191+ show_trans_trace_vcd (trace, message, ns, outfile. stream () );
194192 }
195193 else if (cmdline.isset (" waveform" ))
196194 {
@@ -294,23 +292,13 @@ int random_trace(const cmdlinet &cmdline, message_handlert &message_handler)
294292 else if (cmdline.isset (" vcd" ))
295293 {
296294 auto filename = cmdline.get_value (" vcd" );
297- messaget message (message_handler);
298-
299- if (filename == " -" )
300- {
301- show_trans_trace_vcd (trace, message, ns, std::cout);
302- }
303- else
304- {
305- std::ofstream out (widen_if_needed (filename));
306-
307- if (!out)
308- throw ebmc_errort () << " failed to write trace to " << filename;
295+ auto outfile = output_filet{filename};
309296
297+ if (filename != " -" )
310298 consolet::out () << " *** Writing " << filename << ' \n ' ;
311299
312- show_trans_trace_vcd (trace, message, ns, out );
313- }
300+ messaget message (message_handler );
301+ show_trans_trace_vcd (trace, message, ns, outfile. stream ());
314302 }
315303 else // default
316304 {
@@ -352,13 +340,9 @@ void random_traces(
352340 auto consumer = [&, trace_nr = 0ull ](trans_tracet trace) mutable -> void {
353341 namespacet ns (transition_system.symbol_table );
354342 auto filename = outfile_prefix + std::to_string (trace_nr + 1 );
355- std::ofstream out (widen_if_needed (filename));
356-
357- if (!out)
358- throw ebmc_errort () << " failed to write trace to " << filename;
359-
343+ auto outfile = output_filet{filename};
360344 messaget message (message_handler);
361- show_trans_trace_vcd (trace, message, ns, out );
345+ show_trans_trace_vcd (trace, message, ns, outfile. stream () );
362346
363347 trace_nr++;
364348 };
0 commit comments