cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
pointer_logic.h
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: Pointer Logic
4
5
Author: Daniel Kroening, kroening@kroening.com
6
7
\*******************************************************************/
8
11
12
#ifndef CPROVER_SOLVERS_FLATTENING_POINTER_LOGIC_H
13
#define CPROVER_SOLVERS_FLATTENING_POINTER_LOGIC_H
14
15
#include <
util/mp_arith.h
>
16
#include <
util/expr.h
>
17
#include <
util/numbering.h
>
18
19
class
namespacet
;
20
class
pointer_typet
;
21
22
class
pointer_logict
23
{
24
public
:
25
// this numbers the objects
26
numberingt<exprt, irep_hash>
objects
;
27
28
struct
pointert
29
{
30
mp_integer
object
,
offset
;
31
32
pointert
(
mp_integer
_obj,
mp_integer
_off)
33
:
object
(
std
::move(_obj)),
offset
(
std
::move(_off))
34
{
35
}
36
};
37
39
exprt
pointer_expr
(
40
const
pointert &pointer,
41
const
pointer_typet
&type)
const
;
42
44
exprt
pointer_expr
(
const
mp_integer
&
object
,
const
pointer_typet
&type)
const
;
45
46
~pointer_logict
();
47
explicit
pointer_logict
(
const
namespacet
&_ns);
48
49
mp_integer
add_object
(
const
exprt
&expr);
50
52
const
mp_integer
&
get_null_object
()
const
53
{
54
return
null_object
;
55
}
56
58
const
mp_integer
&
get_invalid_object
()
const
59
{
60
return
invalid_object
;
61
}
62
63
bool
is_dynamic_object
(
const
exprt
&expr)
const
;
64
65
void
get_dynamic_objects
(std::vector<mp_integer> &
objects
)
const
;
66
67
protected
:
68
const
namespacet
&
ns
;
69
mp_integer
null_object
,
invalid_object
;
70
};
71
72
#endif
// CPROVER_SOLVERS_FLATTENING_POINTER_LOGIC_H
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
numberingt
Definition
numbering.h:22
pointer_logict::get_invalid_object
const mp_integer & get_invalid_object() const
Definition
pointer_logic.h:58
pointer_logict::get_null_object
const mp_integer & get_null_object() const
Definition
pointer_logic.h:52
pointer_logict::invalid_object
mp_integer invalid_object
Definition
pointer_logic.h:69
pointer_logict::objects
numberingt< exprt, irep_hash > objects
Definition
pointer_logic.h:26
pointer_logict::pointer_expr
exprt pointer_expr(const pointert &pointer, const pointer_typet &type) const
Convert an (object,offset) pair to an expression.
Definition
pointer_logic.cpp:67
pointer_logict::null_object
mp_integer null_object
Definition
pointer_logic.h:69
pointer_logict::get_dynamic_objects
void get_dynamic_objects(std::vector< mp_integer > &objects) const
Definition
pointer_logic.cpp:34
pointer_logict::add_object
mp_integer add_object(const exprt &expr)
Definition
pointer_logic.cpp:44
pointer_logict::ns
const namespacet & ns
Definition
pointer_logic.h:68
pointer_logict::is_dynamic_object
bool is_dynamic_object(const exprt &expr) const
Definition
pointer_logic.cpp:25
pointer_logict::pointer_logict
pointer_logict(const namespacet &_ns)
Definition
pointer_logic.cpp:159
pointer_logict::~pointer_logict
~pointer_logict()
Definition
pointer_logic.cpp:169
pointer_typet
The pointer type These are both 'bitvector_typet' (they have a width) and 'type_with_subtypet' (they ...
Definition
pointer_expr.h:24
expr.h
mp_arith.h
std
STL namespace.
numbering.h
mp_integer
BigInt mp_integer
Definition
smt_terms.h:17
pointer_logict::pointert::offset
mp_integer offset
Definition
pointer_logic.h:30
pointer_logict::pointert::object
mp_integer object
Definition
pointer_logic.h:30
pointer_logict::pointert::pointert
pointert(mp_integer _obj, mp_integer _off)
Definition
pointer_logic.h:32
solvers
flattening
pointer_logic.h
Generated by
1.17.0