cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
abstract_object_set.h
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: analyses variable-sensitivity
4
5
Author: Jez Higgins, jez@jezuk.co.uk
6
7
\*******************************************************************/
8
11
12
#ifndef CBMC_ABSTRACT_OBJECT_SET_H
13
#define CBMC_ABSTRACT_OBJECT_SET_H
14
15
#include <
analyses/variable-sensitivity/abstract_value_object.h
>
16
#include <unordered_set>
17
18
class
abstract_object_sett
19
{
20
public
:
21
using
value_sett
= std::unordered_set<
22
abstract_object_pointert
,
23
abstract_hashert
,
24
abstract_equalert
>;
25
using
const_iterator
= value_sett::const_iterator;
26
using
value_type
= value_sett::value_type;
27
using
size_type
= value_sett::size_type;
28
29
void
insert
(
const
abstract_object_pointert
&o)
30
{
31
values
.insert(o);
32
}
33
void
insert
(
abstract_object_pointert
&&o)
34
{
35
values
.insert(std::move(o));
36
}
37
void
insert
(
const
abstract_object_sett
&rhs)
38
{
39
values
.insert(rhs.
begin
(), rhs.
end
());
40
}
41
void
insert
(
const
value_ranget
&rhs)
42
{
43
for
(
auto
const
&value : rhs)
44
insert
(value);
45
}
46
47
void
push_back
(
const
abstract_object_pointert
&v)
48
{
49
// alias for insert so we can use back_inserter
50
values
.insert(v);
51
}
52
53
abstract_object_pointert
first
()
const
54
{
55
return
*
begin
();
56
}
57
58
const_iterator
begin
()
const
59
{
60
return
values
.begin();
61
}
62
const_iterator
end
()
const
63
{
64
return
values
.end();
65
}
66
67
value_sett::size_type
size
()
const
68
{
69
return
values
.size();
70
}
71
bool
empty
()
const
72
{
73
return
values
.empty();
74
}
75
76
bool
operator==
(
const
abstract_object_sett
&rhs)
const
77
{
78
return
values
== rhs.
values
;
79
}
80
81
void
clear
()
82
{
83
values
.clear();
84
}
85
86
void
87
output
(std::ostream &out,
const
ai_baset
&ai,
const
namespacet
&ns)
const
;
88
91
constant_interval_exprt
to_interval
()
const
;
92
93
private
:
94
value_sett
values
;
95
};
96
97
class
value_set_tag
98
{
99
public
:
100
virtual
const
abstract_object_sett
&
get_values
()
const
= 0;
101
};
102
103
#endif
//CBMC_ABSTRACT_OBJECT_SET_H
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_object_sett
Definition
abstract_object_set.h:19
abstract_object_sett::insert
void insert(const abstract_object_sett &rhs)
Definition
abstract_object_set.h:37
abstract_object_sett::size_type
value_sett::size_type size_type
Definition
abstract_object_set.h:27
abstract_object_sett::begin
const_iterator begin() const
Definition
abstract_object_set.h:58
abstract_object_sett::size
value_sett::size_type size() const
Definition
abstract_object_set.h:67
abstract_object_sett::insert
void insert(const value_ranget &rhs)
Definition
abstract_object_set.h:41
abstract_object_sett::value_type
value_sett::value_type value_type
Definition
abstract_object_set.h:26
abstract_object_sett::output
void output(std::ostream &out, const ai_baset &ai, const namespacet &ns) const
Definition
abstract_object_set.cpp:25
abstract_object_sett::clear
void clear()
Definition
abstract_object_set.h:81
abstract_object_sett::insert
void insert(const abstract_object_pointert &o)
Definition
abstract_object_set.h:29
abstract_object_sett::const_iterator
value_sett::const_iterator const_iterator
Definition
abstract_object_set.h:25
abstract_object_sett::value_sett
std::unordered_set< abstract_object_pointert, abstract_hashert, abstract_equalert > value_sett
Definition
abstract_object_set.h:21
abstract_object_sett::first
abstract_object_pointert first() const
Definition
abstract_object_set.h:53
abstract_object_sett::empty
bool empty() const
Definition
abstract_object_set.h:71
abstract_object_sett::values
value_sett values
Definition
abstract_object_set.h:94
abstract_object_sett::insert
void insert(abstract_object_pointert &&o)
Definition
abstract_object_set.h:33
abstract_object_sett::end
const_iterator end() const
Definition
abstract_object_set.h:62
abstract_object_sett::push_back
void push_back(const abstract_object_pointert &v)
Definition
abstract_object_set.h:47
abstract_object_sett::operator==
bool operator==(const abstract_object_sett &rhs) const
Definition
abstract_object_set.h:76
abstract_object_sett::to_interval
constant_interval_exprt to_interval() const
Calculate the set of values as an interval.
Definition
abstract_object_set.cpp:42
ai_baset
This is the basic interface of the abstract interpreter with default implementations of the core func...
Definition
ai.h:117
constant_interval_exprt
Represents an interval of values.
Definition
interval.h:52
namespacet
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition
namespace.h:91
value_ranget
Definition
abstract_value_object.h:190
value_set_tag
Definition
abstract_object_set.h:98
value_set_tag::get_values
virtual const abstract_object_sett & get_values() const =0
abstract_equalert
Definition
abstract_object.h:487
abstract_hashert
Definition
abstract_object.h:477
analyses
variable-sensitivity
abstract_object_set.h
Generated by
1.17.0