cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
two_value_pointer_abstract_object.h
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: analyses variable-sensitivity
4
5
Author: Thomas Kiley, thomas.kiley@diffblue.com
6
7
\*******************************************************************/
8
#ifndef CPROVER_ANALYSES_VARIABLE_SENSITIVITY_TWO_VALUE_POINTER_ABSTRACT_OBJECT_H
9
#define CPROVER_ANALYSES_VARIABLE_SENSITIVITY_TWO_VALUE_POINTER_ABSTRACT_OBJECT_H
10
11
#include <
analyses/variable-sensitivity/abstract_pointer_object.h
>
12
13
class
two_value_pointer_abstract_objectt
:
public
abstract_pointer_objectt
14
{
15
public
:
22
two_value_pointer_abstract_objectt
(
const
typet
&
type
,
bool
top
,
bool
bottom
);
23
29
two_value_pointer_abstract_objectt
(
30
const
exprt
&expr,
31
const
abstract_environmentt
&environment,
32
const
namespacet
&ns);
33
34
abstract_object_pointert
read_dereference
(
35
const
abstract_environmentt
&env,
36
const
namespacet
&ns)
const override
;
37
38
abstract_object_pointert
write_dereference
(
39
abstract_environmentt
&environment,
40
const
namespacet
&ns,
41
const
std::stack<exprt> &stack,
42
const
abstract_object_pointert
&value,
43
bool
merging_write)
const override
;
44
45
abstract_object_pointert
typecast
(
46
const
typet
&new_type,
47
const
abstract_environmentt
&environment,
48
const
namespacet
&ns)
const override
;
49
50
abstract_object_pointert
ptr_diff
(
51
const
exprt
&expr,
52
const
std::vector<abstract_object_pointert> &operands,
53
const
abstract_environmentt
&environment,
54
const
namespacet
&ns)
const override
;
55
56
exprt
ptr_comparison_expr
(
57
const
exprt
&expr,
58
const
std::vector<abstract_object_pointert> &operands,
59
const
abstract_environmentt
&environment,
60
const
namespacet
&ns)
const override
;
61
};
62
63
#endif
// CPROVER_ANALYSES_VARIABLE_SENSITIVITY_TWO_VALUE_POINTER_ABSTRACT_OBJECT_H
abstract_object_pointert
sharing_ptrt< class abstract_objectt > abstract_object_pointert
Definition
abstract_object.h:69
abstract_pointer_object.h
The base of all pointer abstractions.
abstract_environmentt
Definition
abstract_environment.h:39
abstract_objectt::top
bool top
Definition
abstract_object.h:371
abstract_objectt::bottom
bool bottom
Definition
abstract_object.h:370
abstract_objectt::type
virtual const typet & type() const
Get the real type of the variable this abstract object is representing.
Definition
abstract_object.cpp:33
abstract_pointer_objectt::abstract_pointer_objectt
abstract_pointer_objectt(const typet &type, bool top, bool bottom)
Start the abstract object at either top or bottom or neither Asserts if both top and bottom are true.
Definition
abstract_pointer_object.cpp:16
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
two_value_pointer_abstract_objectt::write_dereference
abstract_object_pointert write_dereference(abstract_environmentt &environment, const namespacet &ns, const std::stack< exprt > &stack, const abstract_object_pointert &value, bool merging_write) const override
Evaluate writing to a pointer's value.
Definition
two_value_pointer_abstract_object.cpp:40
two_value_pointer_abstract_objectt::typecast
abstract_object_pointert typecast(const typet &new_type, const abstract_environmentt &environment, const namespacet &ns) const override
Definition
two_value_pointer_abstract_object.cpp:57
two_value_pointer_abstract_objectt::read_dereference
abstract_object_pointert read_dereference(const abstract_environmentt &env, const namespacet &ns) const override
A helper function to read elements from an array.
Definition
two_value_pointer_abstract_object.cpp:30
two_value_pointer_abstract_objectt::two_value_pointer_abstract_objectt
two_value_pointer_abstract_objectt(const typet &type, bool top, bool bottom)
Start the abstract object at either top or bottom or neither Asserts if both top and bottom are true.
Definition
two_value_pointer_abstract_object.cpp:14
two_value_pointer_abstract_objectt::ptr_diff
abstract_object_pointert ptr_diff(const exprt &expr, const std::vector< abstract_object_pointert > &operands, const abstract_environmentt &environment, const namespacet &ns) const override
Definition
two_value_pointer_abstract_object.cpp:67
two_value_pointer_abstract_objectt::ptr_comparison_expr
exprt ptr_comparison_expr(const exprt &expr, const std::vector< abstract_object_pointert > &operands, const abstract_environmentt &environment, const namespacet &ns) const override
Definition
two_value_pointer_abstract_object.cpp:76
typet
The type of an expression, extends irept.
Definition
type.h:29
analyses
variable-sensitivity
two_value_pointer_abstract_object.h
Generated by
1.17.0