cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
c_nondet_symbol_factory.h
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: C Nondet Symbol Factory
4
5
Author: Diffblue Ltd.
6
7
\*******************************************************************/
8
11
12
#ifndef CPROVER_ANSI_C_C_NONDET_SYMBOL_FACTORY_H
13
#define CPROVER_ANSI_C_C_NONDET_SYMBOL_FACTORY_H
14
15
#include "
allocate_objects.h
"
16
17
#include <set>
18
19
struct
c_object_factory_parameterst
;
20
21
class
symbol_factoryt
22
{
23
symbol_table_baset
&
symbol_table
;
24
const
source_locationt
&
loc
;
25
namespacet
ns
;
26
const
c_object_factory_parameterst
&
object_factory_params
;
27
28
allocate_objectst
allocate_objects
;
29
30
const
lifetimet
lifetime
;
31
32
public
:
33
typedef
std::set<irep_idt>
recursion_sett
;
34
35
symbol_factoryt
(
36
symbol_table_baset
&_symbol_table,
37
const
source_locationt
&
loc
,
38
const
irep_idt
&name_prefix,
39
const
c_object_factory_parameterst
&
object_factory_params
,
40
const
lifetimet
lifetime
)
41
:
symbol_table
(_symbol_table),
42
loc
(
loc
),
43
ns
(_symbol_table),
44
object_factory_params
(
object_factory_params
),
45
allocate_objects
(ID_C,
loc
, name_prefix,
symbol_table
),
46
lifetime
(
lifetime
)
47
{
48
}
49
50
void
gen_nondet_init
(
51
code_blockt
&assignments,
52
const
exprt
&expr,
53
const
std::size_t depth = 0,
54
recursion_sett
recursion_set =
recursion_sett
(),
55
const
bool
assign_const =
true
);
56
57
void
add_created_symbol
(
const
symbolt
&symbol)
58
{
59
allocate_objects
.add_created_symbol(symbol);
60
}
61
62
void
declare_created_symbols
(
code_blockt
&init_code)
63
{
64
allocate_objects
.declare_created_symbols(init_code);
65
}
66
67
void
mark_created_symbols_as_input
(
code_blockt
&init_code)
68
{
69
allocate_objects
.mark_created_symbols_as_input(init_code);
70
}
71
72
private
:
79
void
gen_nondet_array_init
(
80
code_blockt
&assignments,
81
const
exprt
&expr,
82
std::size_t depth,
83
const
recursion_sett
&recursion_set);
84
};
85
86
symbol_exprt
c_nondet_symbol_factory
(
87
code_blockt
&init_code,
88
symbol_table_baset
&symbol_table,
89
const
irep_idt
base_name,
90
const
typet
&type,
91
const
source_locationt
&,
92
const
c_object_factory_parameterst
&object_factory_parameters,
93
const
lifetimet
lifetime);
94
95
#endif
// CPROVER_ANSI_C_C_NONDET_SYMBOL_FACTORY_H
allocate_objects.h
lifetimet
lifetimet
Selects the kind of objects allocated.
Definition
allocate_objects.h:17
c_nondet_symbol_factory
symbol_exprt c_nondet_symbol_factory(code_blockt &init_code, symbol_table_baset &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.
Definition
c_nondet_symbol_factory.cpp:203
allocate_objectst
Definition
allocate_objects.h:27
code_blockt
A codet representing sequential composition of program statements.
Definition
std_code.h:130
exprt
Base class for all expressions.
Definition
expr.h:57
namespacet
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition
namespace.h:91
source_locationt
Definition
source_location.h:20
symbol_exprt
Expression to hold a symbol (variable).
Definition
std_expr.h:132
symbol_factoryt::gen_nondet_array_init
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.
Definition
c_nondet_symbol_factory.cpp:167
symbol_factoryt::gen_nondet_init
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 ...
Definition
c_nondet_symbol_factory.cpp:37
symbol_factoryt::allocate_objects
allocate_objectst allocate_objects
Definition
c_nondet_symbol_factory.h:28
symbol_factoryt::add_created_symbol
void add_created_symbol(const symbolt &symbol)
Definition
c_nondet_symbol_factory.h:57
symbol_factoryt::recursion_sett
std::set< irep_idt > recursion_sett
Definition
c_nondet_symbol_factory.h:33
symbol_factoryt::mark_created_symbols_as_input
void mark_created_symbols_as_input(code_blockt &init_code)
Definition
c_nondet_symbol_factory.h:67
symbol_factoryt::ns
namespacet ns
Definition
c_nondet_symbol_factory.h:25
symbol_factoryt::object_factory_params
const c_object_factory_parameterst & object_factory_params
Definition
c_nondet_symbol_factory.h:26
symbol_factoryt::symbol_table
symbol_table_baset & symbol_table
Definition
c_nondet_symbol_factory.h:23
symbol_factoryt::declare_created_symbols
void declare_created_symbols(code_blockt &init_code)
Definition
c_nondet_symbol_factory.h:62
symbol_factoryt::loc
const source_locationt & loc
Definition
c_nondet_symbol_factory.h:24
symbol_factoryt::symbol_factoryt
symbol_factoryt(symbol_table_baset &_symbol_table, const source_locationt &loc, const irep_idt &name_prefix, const c_object_factory_parameterst &object_factory_params, const lifetimet lifetime)
Definition
c_nondet_symbol_factory.h:35
symbol_factoryt::lifetime
const lifetimet lifetime
Definition
c_nondet_symbol_factory.h:30
symbol_table_baset
The symbol table base class interface.
Definition
symbol_table_base.h:23
symbolt
Symbol table entry.
Definition
symbol.h:28
typet
The type of an expression, extends irept.
Definition
type.h:29
c_object_factory_parameterst
Definition
c_object_factory_parameters.h:15
irep_idt
dstringt irep_idt
Definition
verification_result.h:16
ansi-c
c_nondet_symbol_factory.h
Generated by
1.17.0