12 #ifndef CBMC_ABSTRACT_OBJECT_SET_H
13 #define CBMC_ABSTRACT_OBJECT_SET_H
16 #include <unordered_set>
35 values.insert(std::move(o));
43 for(
auto const &value : rhs)
sharing_ptrt< class abstract_objectt > abstract_object_pointert
Common behaviour for abstract objects modelling values - constants, intervals, etc.
void insert(const abstract_object_sett &rhs)
value_sett::size_type size_type
const_iterator begin() const
value_sett::size_type size() const
void insert(const value_ranget &rhs)
value_sett::value_type value_type
void output(std::ostream &out, const ai_baset &ai, const namespacet &ns) const
void insert(const abstract_object_pointert &o)
value_sett::const_iterator const_iterator
abstract_object_pointert first() const
std::unordered_set< abstract_object_pointert, abstract_hashert, abstract_equalert > value_sett
void insert(abstract_object_pointert &&o)
const_iterator end() const
void push_back(const abstract_object_pointert &v)
bool operator==(const abstract_object_sett &rhs) const
constant_interval_exprt to_interval() const
Calculate the set of values as an interval.
This is the basic interface of the abstract interpreter with default implementations of the core func...
Represents an interval of values.
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
virtual const abstract_object_sett & get_values() const =0