cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
constant_abstract_value.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
11
12
#ifndef CPROVER_ANALYSES_VARIABLE_SENSITIVITY_CONSTANT_ABSTRACT_VALUE_H
13
#define CPROVER_ANALYSES_VARIABLE_SENSITIVITY_CONSTANT_ABSTRACT_VALUE_H
14
15
#include <iosfwd>
16
17
#include <
analyses/variable-sensitivity/abstract_value_object.h
>
18
19
class
constant_abstract_valuet
:
public
abstract_value_objectt
20
{
21
public
:
22
explicit
constant_abstract_valuet
(
const
exprt
&
t
);
23
constant_abstract_valuet
(
const
typet
&
t
,
bool
tp,
bool
bttm);
24
constant_abstract_valuet
(
25
const
exprt
&e,
26
const
abstract_environmentt
&environment,
27
const
namespacet
&ns);
28
29
~constant_abstract_valuet
()
override
=
default
;
30
31
index_range_implementation_ptrt
32
index_range_implementation
(
const
namespacet
&ns)
const override
;
33
34
value_range_implementation_ptrt
value_range_implementation
()
const override
;
35
36
exprt
to_constant
()
const override
;
37
constant_interval_exprt
to_interval
()
const override
;
38
39
abstract_value_pointert
40
constrain
(
const
exprt
&lower,
const
exprt
&upper)
const override
;
41
42
void
output
(
43
std::ostream &out,
44
const
class
ai_baset
&ai,
45
const
class
namespacet
&ns)
const override
;
46
47
void
get_statistics
(
48
abstract_object_statisticst
&statistics,
49
abstract_object_visitedt
&visited,
50
const
abstract_environmentt
&env,
51
const
namespacet
&ns)
const override
;
52
53
size_t
internal_hash
()
const override
54
{
55
return
std::hash<std::string>{}(
value
.pretty());
56
}
57
58
bool
internal_equality
(
const
abstract_object_pointert
&other)
const override
59
{
60
auto
cast_other =
61
std::dynamic_pointer_cast<const constant_abstract_valuet>(other);
62
return
cast_other &&
value
== cast_other->value;
63
}
64
65
protected
:
66
CLONE
67
76
abstract_object_pointert
merge_with_value
(
77
const
abstract_value_pointert
&other,
78
const
widen_modet
&widen_mode)
const override
;
79
80
abstract_object_pointert
81
meet_with_value
(
const
abstract_value_pointert
&other)
const override
;
82
83
exprt
to_predicate_internal
(
const
exprt
&name)
const override
;
84
85
private
:
86
exprt
value
;
87
};
88
89
#endif
// CPROVER_ANALYSES_VARIABLE_SENSITIVITY_CONSTANT_ABSTRACT_VALUE_H
widen_modet
widen_modet
Definition
abstract_environment.h:31
CLONE
#define CLONE
Definition
abstract_object.h:41
abstract_object_visitedt
std::set< abstract_object_pointert > abstract_object_visitedt
Definition
abstract_object.h:70
abstract_object_pointert
sharing_ptrt< class abstract_objectt > abstract_object_pointert
Definition
abstract_object.h:69
abstract_value_object.h
Common behaviour for abstract objects modelling values - constants, intervals, etc.
abstract_value_pointert
sharing_ptrt< const abstract_value_objectt > abstract_value_pointert
Definition
abstract_value_object.h:331
value_range_implementation_ptrt
std::unique_ptr< value_range_implementationt > value_range_implementation_ptrt
Definition
abstract_value_object.h:130
index_range_implementation_ptrt
std::unique_ptr< index_range_implementationt > index_range_implementation_ptrt
Definition
abstract_value_object.h:25
abstract_environmentt
Definition
abstract_environment.h:39
abstract_objectt::t
typet t
To enforce copy-on-write these are private and have read-only accessors.
Definition
abstract_object.h:369
abstract_value_objectt::abstract_value_objectt
abstract_value_objectt(const typet &type, bool tp, bool bttm)
Definition
abstract_value_object.h:243
abstract_value_objectt::abstract_value_pointert
sharing_ptrt< const abstract_value_objectt > abstract_value_pointert
Definition
abstract_value_object.h:298
ai_baset
This is the basic interface of the abstract interpreter with default implementations of the core func...
Definition
ai.h:117
constant_abstract_valuet::output
void output(std::ostream &out, const class ai_baset &ai, const class namespacet &ns) const override
Definition
constant_abstract_value.cpp:94
constant_abstract_valuet::value
exprt value
Definition
constant_abstract_value.h:86
constant_abstract_valuet::get_statistics
void get_statistics(abstract_object_statisticst &statistics, abstract_object_visitedt &visited, const abstract_environmentt &env, const namespacet &ns) const override
Definition
constant_abstract_value.cpp:147
constant_abstract_valuet::value_range_implementation
value_range_implementation_ptrt value_range_implementation() const override
Definition
constant_abstract_value.cpp:72
constant_abstract_valuet::internal_hash
size_t internal_hash() const override
Definition
constant_abstract_value.h:53
constant_abstract_valuet::constant_abstract_valuet
constant_abstract_valuet(const exprt &t)
Definition
constant_abstract_value.cpp:40
constant_abstract_valuet::to_interval
constant_interval_exprt to_interval() const override
Definition
constant_abstract_value.cpp:89
constant_abstract_valuet::index_range_implementation
index_range_implementation_ptrt index_range_implementation(const namespacet &ns) const override
Definition
constant_abstract_value.cpp:62
constant_abstract_valuet::~constant_abstract_valuet
~constant_abstract_valuet() override=default
constant_abstract_valuet::constrain
abstract_value_pointert constrain(const exprt &lower, const exprt &upper) const override
Definition
constant_abstract_value.cpp:135
constant_abstract_valuet::to_constant
exprt to_constant() const override
Converts to a constant expression if possible.
Definition
constant_abstract_value.cpp:77
constant_abstract_valuet::internal_equality
bool internal_equality(const abstract_object_pointert &other) const override
Definition
constant_abstract_value.h:58
constant_abstract_valuet::to_predicate_internal
exprt to_predicate_internal(const exprt &name) const override
to_predicate implementation - derived classes will override
Definition
constant_abstract_value.cpp:142
constant_abstract_valuet::merge_with_value
CLONE abstract_object_pointert merge_with_value(const abstract_value_pointert &other, const widen_modet &widen_mode) const override
Merges another abstract value into this one.
Definition
constant_abstract_value.cpp:109
constant_abstract_valuet::meet_with_value
abstract_object_pointert meet_with_value(const abstract_value_pointert &other) const override
Definition
constant_abstract_value.cpp:123
constant_interval_exprt
Represents an interval of values.
Definition
interval.h:52
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
typet
The type of an expression, extends irept.
Definition
type.h:29
abstract_object_statisticst
Definition
abstract_object_statistics.h:19
analyses
variable-sensitivity
constant_abstract_value.h
Generated by
1.17.0