cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
pointer_predicates.h
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: Various predicates over pointers in programs
4
5
Author: Daniel Kroening, kroening@kroening.com
6
7
\*******************************************************************/
8
11
12
#ifndef CPROVER_UTIL_POINTER_PREDICATES_H
13
#define CPROVER_UTIL_POINTER_PREDICATES_H
14
15
#include "
std_expr.h
"
16
17
#define SYMEX_DYNAMIC_PREFIX "symex_dynamic"
18
19
exprt
same_object
(
const
exprt
&p1,
const
exprt
&p2);
20
exprt
deallocated
(
const
exprt
&pointer,
const
namespacet
&);
21
exprt
dead_object
(
const
exprt
&pointer,
const
namespacet
&);
22
exprt
pointer_offset
(
const
exprt
&pointer);
23
exprt
pointer_object
(
const
exprt
&pointer);
24
exprt
object_size
(
const
exprt
&pointer);
25
exprt
null_object
(
const
exprt
&pointer);
26
27
exprt
integer_address
(
const
exprt
&pointer);
28
exprt
object_lower_bound
(
29
const
exprt
&pointer,
30
const
exprt
&offset);
31
exprt
object_upper_bound
(
32
const
exprt
&pointer,
33
const
exprt
&access_size);
34
35
class
is_invalid_pointer_exprt
:
public
unary_predicate_exprt
36
{
37
public
:
38
explicit
is_invalid_pointer_exprt
(
exprt
pointer)
39
:
unary_predicate_exprt
{ID_is_invalid_pointer,
std
::move(pointer)}
40
{
41
}
42
};
43
44
template
<>
45
inline
bool
can_cast_expr<is_invalid_pointer_exprt>
(
const
exprt
&base)
46
{
47
return
base.
id
() == ID_is_invalid_pointer;
48
}
49
50
inline
void
validate_expr
(
const
is_invalid_pointer_exprt
&value)
51
{
52
validate_operands
(value, 1,
"is_invalid_pointer must have one operand"
);
53
}
54
55
#endif
// CPROVER_UTIL_POINTER_PREDICATES_H
exprt
Base class for all expressions.
Definition
expr.h:57
irept::id
const irep_idt & id() const
Definition
irep.h:388
is_invalid_pointer_exprt
Definition
pointer_predicates.h:36
is_invalid_pointer_exprt::is_invalid_pointer_exprt
is_invalid_pointer_exprt(exprt pointer)
Definition
pointer_predicates.h:38
namespacet
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition
namespace.h:91
unary_predicate_exprt::unary_predicate_exprt
unary_predicate_exprt(const irep_idt &_id, exprt _op)
Definition
std_expr.h:566
validate_operands
void validate_operands(const exprt &value, exprt::operandst::size_type number, const char *message, bool allow_more=false)
Definition
expr_cast.h:250
std
STL namespace.
pointer_offset
exprt pointer_offset(const exprt &pointer)
Definition
pointer_predicates.cpp:38
integer_address
exprt integer_address(const exprt &pointer)
Definition
pointer_predicates.cpp:65
object_size
exprt object_size(const exprt &pointer)
Definition
pointer_predicates.cpp:33
dead_object
exprt dead_object(const exprt &pointer, const namespacet &)
Definition
pointer_predicates.cpp:51
object_upper_bound
exprt object_upper_bound(const exprt &pointer, const exprt &access_size)
Definition
pointer_predicates.cpp:72
validate_expr
void validate_expr(const is_invalid_pointer_exprt &value)
Definition
pointer_predicates.h:50
deallocated
exprt deallocated(const exprt &pointer, const namespacet &)
Definition
pointer_predicates.cpp:43
same_object
exprt same_object(const exprt &p1, const exprt &p2)
Definition
pointer_predicates.cpp:28
can_cast_expr< is_invalid_pointer_exprt >
bool can_cast_expr< is_invalid_pointer_exprt >(const exprt &base)
Definition
pointer_predicates.h:45
pointer_object
exprt pointer_object(const exprt &pointer)
Definition
pointer_predicates.cpp:23
null_object
exprt null_object(const exprt &pointer)
Definition
pointer_predicates.cpp:59
object_lower_bound
exprt object_lower_bound(const exprt &pointer, const exprt &offset)
Definition
pointer_predicates.cpp:117
std_expr.h
API to expression classes.
util
pointer_predicates.h
Generated by
1.17.0