Go to the documentation of this file.
12 #ifndef CPROVER_ANSI_C_C_NONDET_SYMBOL_FACTORY_H
13 #define CPROVER_ANSI_C_C_NONDET_SYMBOL_FACTORY_H
55 const std::size_t depth = 0,
57 const bool assign_const =
true);
97 #endif // CPROVER_ANSI_C_C_NONDET_SYMBOL_FACTORY_H
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
A codet representing sequential composition of program statements.
The type of an expression, extends irept.
const c_object_factory_parameterst & object_factory_params
Base class for all expressions.
void gen_nondet_array_init(code_blockt &assignments, const exprt &expr, std::size_t depth, const recursion_sett &recursion_set)
Generate initialisation code for each array element.
Expression to hold a symbol (variable)
symbol_factoryt(symbol_tablet &_symbol_table, const source_locationt &loc, const irep_idt &name_prefix, const c_object_factory_parameterst &object_factory_params, const lifetimet lifetime)
symbol_exprt c_nondet_symbol_factory(code_blockt &init_code, symbol_tablet &symbol_table, const irep_idt base_name, const typet &type, const source_locationt &, const c_object_factory_parameterst &object_factory_parameters, const lifetimet lifetime)
Creates a symbol and generates code so that it can vary over all possible values for its type.
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
void add_created_symbol(const symbolt &symbol)
Add a pointer to a symbol to the list of pointers to symbols created so far.
void add_created_symbol(const symbolt &symbol)
void declare_created_symbols(code_blockt &init_code)
Adds declarations for all non-static symbols created.
lifetimet
Selects the kind of objects allocated.
void gen_nondet_init(code_blockt &assignments, const exprt &expr, const std::size_t depth=0, recursion_sett recursion_set=recursion_sett(), const bool assign_const=true)
Creates a nondet for expr, including calling itself recursively to make appropriate symbols to point ...
const source_locationt & loc
allocate_objectst allocate_objects
symbol_tablet & symbol_table
void mark_created_symbols_as_input(code_blockt &init_code)
Adds code to mark the created symbols as input.
std::set< irep_idt > recursion_sett
void mark_created_symbols_as_input(code_blockt &init_code)
void declare_created_symbols(code_blockt &init_code)