Skip to content

Commit 9dd28e5

Browse files
committed
Pass c object factory parameters to function body generation
1 parent d902133 commit 9dd28e5

File tree

4 files changed

+29
-3
lines changed

4 files changed

+29
-3
lines changed

src/goto-instrument/goto_instrument_parse_options.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ Author: Daniel Kroening, [email protected]
1515
#include <iostream>
1616
#include <memory>
1717

18+
#include <ansi-c/c_object_factory_parameters.h>
19+
1820
#include <util/config.h>
1921
#include <util/exit_codes.h>
2022
#include <util/json.h>
@@ -1187,8 +1189,13 @@ void goto_instrument_parse_optionst::instrument_goto_program()
11871189

11881190
if(cmdline.isset("generate-function-body"))
11891191
{
1192+
optionst options;
1193+
parse_c_object_factory_options(cmdline, options);
1194+
c_object_factory_parameterst object_factory_parameters(options);
1195+
11901196
auto generate_implementation = generate_function_bodies_factory(
11911197
cmdline.get_value("generate-function-body-options"),
1198+
object_factory_parameters,
11921199
goto_model.symbol_table,
11931200
*message_handler);
11941201
generate_function_bodies(

src/goto-instrument/goto_instrument_parse_options.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ Author: Daniel Kroening, [email protected]
104104
OPT_REPLACE_CALLS \
105105
"(validate-goto-binary)" \
106106
OPT_VALIDATE \
107+
"(max-nondet-tree-depth):" \
108+
"(min-null-tree-depth):" \
107109
// empty last line
108110

109111
// clang-format on

src/goto-programs/generate_function_bodies.cpp

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ Author: Diffblue Ltd.
88

99
#include "generate_function_bodies.h"
1010

11+
#include <ansi-c/c_nondet_symbol_factory.h>
12+
#include <ansi-c/c_object_factory_parameters.h>
13+
14+
#include <goto-programs/goto_convert.h>
15+
1116
#include <util/arith_tools.h>
1217
#include <util/format_expr.h>
1318
#include <util/make_unique.h>
@@ -153,11 +158,13 @@ class havoc_generate_function_bodiest : public generate_function_bodiest,
153158
havoc_generate_function_bodiest(
154159
std::vector<irep_idt> globals_to_havoc,
155160
std::regex parameters_to_havoc,
161+
const c_object_factory_parameterst &object_factory_parameters,
156162
message_handlert &message_handler)
157163
: generate_function_bodiest(),
158164
messaget(message_handler),
159165
globals_to_havoc(std::move(globals_to_havoc)),
160-
parameters_to_havoc(std::move(parameters_to_havoc))
166+
parameters_to_havoc(std::move(parameters_to_havoc)),
167+
object_factory_parameters(object_factory_parameters)
161168
{
162169
}
163170

@@ -318,6 +325,7 @@ class havoc_generate_function_bodiest : public generate_function_bodiest,
318325
private:
319326
const std::vector<irep_idt> globals_to_havoc;
320327
std::regex parameters_to_havoc;
328+
const c_object_factory_parameterst &object_factory_parameters;
321329
};
322330

323331
class generate_function_bodies_errort : public std::runtime_error
@@ -334,13 +342,17 @@ class generate_function_bodies_errort : public std::runtime_error
334342
/// parameter
335343
std::unique_ptr<generate_function_bodiest> generate_function_bodies_factory(
336344
const std::string &options,
345+
const c_object_factory_parameterst &object_factory_parameters,
337346
const symbol_tablet &symbol_table,
338347
message_handlert &message_handler)
339348
{
340349
if(options.empty() || options == "nondet-return")
341350
{
342351
return util_make_unique<havoc_generate_function_bodiest>(
343-
std::vector<irep_idt>{}, std::regex{}, message_handler);
352+
std::vector<irep_idt>{},
353+
std::regex{},
354+
object_factory_parameters,
355+
message_handler);
344356
}
345357

346358
if(options == "assume-false")
@@ -409,7 +421,10 @@ std::unique_ptr<generate_function_bodiest> generate_function_bodies_factory(
409421
}
410422
}
411423
return util_make_unique<havoc_generate_function_bodiest>(
412-
std::move(globals_to_havoc), std::move(params_regex), message_handler);
424+
std::move(globals_to_havoc),
425+
std::move(params_regex),
426+
object_factory_parameters,
427+
message_handler);
413428
}
414429
throw generate_function_bodies_errort("Can't parse \"" + options + "\"");
415430
}

src/goto-programs/generate_function_bodies.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Author: Diffblue Ltd.
1212
#include <memory>
1313
#include <regex>
1414

15+
#include <ansi-c/c_object_factory_parameters.h>
1516
#include <goto-programs/goto_function.h>
1617
#include <goto-programs/goto_model.h>
1718
#include <util/cmdline.h>
@@ -59,6 +60,7 @@ class generate_function_bodiest
5960

6061
std::unique_ptr<generate_function_bodiest> generate_function_bodies_factory(
6162
const std::string &options,
63+
const c_object_factory_parameterst &object_factory_parameters,
6264
const symbol_tablet &symbol_table,
6365
message_handlert &message_handler);
6466

0 commit comments

Comments
 (0)