PPL
1.2
|
A wrapper for PPL pointsets, providing them with a determinate constraint system interface, as defined in [Bag98]. More...
#include <Determinate_defs.hh>
Classes | |
class | Binary_Operator_Assign_Lifter |
A function adapter for the Determinate class. More... | |
class | Rep |
The possibly shared representation of a Determinate object. More... | |
Public Member Functions | |
Constructors and Destructor | |
Determinate (const PSET &pset) | |
Constructs a COW-wrapped object corresponding to the pointset pset . More... | |
Determinate (const Constraint_System &cs) | |
Constructs a COW-wrapped object corresponding to the pointset defined by cs . More... | |
Determinate (const Congruence_System &cgs) | |
Constructs a COW-wrapped object corresponding to the pointset defined by cgs . More... | |
Determinate (const Determinate &y) | |
Copy constructor. More... | |
~Determinate () | |
Destructor. More... | |
Member Functions that May Modify the Domain Element | |
void | upper_bound_assign (const Determinate &y) |
Assigns to *this the upper bound of *this and y . More... | |
void | meet_assign (const Determinate &y) |
Assigns to *this the meet of *this and y . More... | |
void | weakening_assign (const Determinate &y) |
Assigns to *this the result of weakening *this with y . More... | |
void | concatenate_assign (const Determinate &y) |
Assigns to *this the concatenation of *this and y , taken in this order. More... | |
PSET & | pointset () |
Returns a reference to the embedded element. More... | |
void | mutate () |
On return from this method, the representation of *this is not shared by different Determinate objects. More... | |
Determinate & | operator= (const Determinate &y) |
Assignment operator. More... | |
void | m_swap (Determinate &y) |
Swaps *this with y . More... | |
Static Public Member Functions | |
template<typename Binary_Operator_Assign > | |
static Binary_Operator_Assign_Lifter< Binary_Operator_Assign > | lift_op_assign (Binary_Operator_Assign op_assign) |
Helper function returning a Binary_Operator_Assign_Lifter object, also allowing for the deduction of template arguments. More... | |
Private Attributes | |
Rep * | prep |
A pointer to the possibly shared representation of the base-level domain element. More... | |
Friends | |
bool | operator== (const Determinate< PSET > &x, const Determinate< PSET > &y) |
bool | operator!= (const Determinate< PSET > &x, const Determinate< PSET > &y) |
Related Functions | |
(Note that these are not member functions.) | |
template<typename PSET > | |
void | swap (Determinate< PSET > &x, Determinate< PSET > &y) |
Swaps x with y . More... | |
template<typename PSET > | |
bool | operator== (const Determinate< PSET > &x, const Determinate< PSET > &y) |
Returns true if and only if x and y are the same COW-wrapped pointset. More... | |
template<typename PSET > | |
bool | operator!= (const Determinate< PSET > &x, const Determinate< PSET > &y) |
Returns true if and only if x and y are different COW-wrapped pointsets. More... | |
template<typename PSET > | |
std::ostream & | operator<< (std::ostream &, const Determinate< PSET > &) |
Output operator. More... | |
template<typename PSET > | |
std::ostream & | operator<< (std::ostream &s, const Determinate< PSET > &x) |
template<typename PSET > | |
bool | operator== (const Determinate< PSET > &x, const Determinate< PSET > &y) |
template<typename PSET > | |
bool | operator!= (const Determinate< PSET > &x, const Determinate< PSET > &y) |
template<typename PSET > | |
void | swap (Determinate< PSET > &x, Determinate< PSET > &y) |
Member Functions that Do Not Modify the Domain Element | |
const PSET & | pointset () const |
Returns a const reference to the embedded pointset. More... | |
bool | is_top () const |
Returns true if and only if *this embeds the universe element PSET . More... | |
bool | is_bottom () const |
Returns true if and only if *this embeds the empty element of PSET . More... | |
bool | definitely_entails (const Determinate &y) const |
Returns true if and only if *this entails y . More... | |
bool | is_definitely_equivalent_to (const Determinate &y) const |
Returns true if and only if *this and y are definitely equivalent. More... | |
memory_size_type | total_memory_in_bytes () const |
Returns a lower bound to the total size in bytes of the memory occupied by *this . More... | |
memory_size_type | external_memory_in_bytes () const |
Returns a lower bound to the size in bytes of the memory managed by *this . More... | |
bool | OK () const |
Checks if all the invariants are satisfied. More... | |
static bool | has_nontrivial_weakening () |
A wrapper for PPL pointsets, providing them with a determinate constraint system interface, as defined in [Bag98].
The implementation uses a copy-on-write optimization, making the class suitable for constructions, like the finite powerset and ask-and-tell of [Bag98], that are likely to perform many copies.
Definition at line 84 of file Determinate_defs.hh.
|
inline |
Constructs a COW-wrapped object corresponding to the pointset pset
.
Definition at line 94 of file Determinate_inlines.hh.
References Parma_Polyhedra_Library::Determinate< PSET >::Rep::new_reference(), and Parma_Polyhedra_Library::Determinate< PSET >::prep.
|
inline |
Constructs a COW-wrapped object corresponding to the pointset defined by cs
.
Definition at line 101 of file Determinate_inlines.hh.
References Parma_Polyhedra_Library::Determinate< PSET >::Rep::new_reference(), and Parma_Polyhedra_Library::Determinate< PSET >::prep.
|
inline |
Constructs a COW-wrapped object corresponding to the pointset defined by cgs
.
Definition at line 108 of file Determinate_inlines.hh.
References Parma_Polyhedra_Library::Determinate< PSET >::Rep::new_reference(), and Parma_Polyhedra_Library::Determinate< PSET >::prep.
|
inline |
Copy constructor.
Definition at line 115 of file Determinate_inlines.hh.
References Parma_Polyhedra_Library::Determinate< PSET >::Rep::new_reference(), and Parma_Polyhedra_Library::Determinate< PSET >::prep.
|
inline |
Destructor.
Definition at line 122 of file Determinate_inlines.hh.
|
inline |
Assigns to *this
the concatenation of *this
and y
, taken in this order.
Definition at line 202 of file Determinate_inlines.hh.
References Parma_Polyhedra_Library::Determinate< PSET >::pointset().
Referenced by Parma_Polyhedra_Library::Pointset_Ask_Tell< PSET >::concatenate_assign(), and Parma_Polyhedra_Library::Pointset_Powerset< PSET >::concatenate_assign().
|
inline |
Returns true
if and only if *this
entails y
.
Definition at line 208 of file Determinate_inlines.hh.
References Parma_Polyhedra_Library::Determinate< PSET >::prep, and Parma_Polyhedra_Library::Determinate< PSET >::Rep::pset.
|
inline |
Returns a lower bound to the size in bytes of the memory managed by *this
.
Definition at line 232 of file Determinate_inlines.hh.
Referenced by Parma_Polyhedra_Library::Determinate< PSET >::Rep::total_memory_in_bytes().
|
inlinestatic |
Returns true
if and only if this domain has a nontrivial weakening operator.
Definition at line 184 of file Determinate_inlines.hh.
|
inline |
Returns true
if and only if *this
embeds the empty element of PSET
.
Definition at line 226 of file Determinate_inlines.hh.
Referenced by Parma_Polyhedra_Library::Pointset_Powerset< PSET >::concatenate_assign().
|
inline |
Returns true
if and only if *this
and y
are definitely equivalent.
Definition at line 214 of file Determinate_inlines.hh.
References Parma_Polyhedra_Library::Determinate< PSET >::prep, and Parma_Polyhedra_Library::Determinate< PSET >::Rep::pset.
|
inline |
Returns true
if and only if *this
embeds the universe element PSET
.
Definition at line 220 of file Determinate_inlines.hh.
|
inlinestatic |
Helper function returning a Binary_Operator_Assign_Lifter object, also allowing for the deduction of template arguments.
Definition at line 294 of file Determinate_inlines.hh.
|
inline |
Swaps *this
with y
.
Definition at line 141 of file Determinate_inlines.hh.
References Parma_Polyhedra_Library::Determinate< PSET >::prep, and Parma_Polyhedra_Library::swap().
Referenced by Parma_Polyhedra_Library::Determinate< PSET >::swap().
|
inline |
Assigns to *this
the meet of *this
and y
.
Definition at line 178 of file Determinate_inlines.hh.
References Parma_Polyhedra_Library::Determinate< PSET >::pointset().
|
inline |
On return from this method, the representation of *this
is not shared by different Determinate objects.
Definition at line 148 of file Determinate_inlines.hh.
References Parma_Polyhedra_Library::Determinate< PSET >::Rep::new_reference().
|
inline |
Checks if all the invariants are satisfied.
Definition at line 244 of file Determinate_inlines.hh.
|
inline |
Assignment operator.
Definition at line 130 of file Determinate_inlines.hh.
References Parma_Polyhedra_Library::Determinate< PSET >::Rep::new_reference(), and Parma_Polyhedra_Library::Determinate< PSET >::prep.
|
inline |
Returns a const reference to the embedded pointset.
Definition at line 159 of file Determinate_inlines.hh.
Referenced by Parma_Polyhedra_Library::Determinate< PSET >::concatenate_assign(), Parma_Polyhedra_Library::Determinate< PSET >::meet_assign(), Parma_Polyhedra_Library::Determinate< PSET >::Binary_Operator_Assign_Lifter< Binary_Operator_Assign >::operator()(), Parma_Polyhedra_Library::Determinate< PSET >::upper_bound_assign(), and Parma_Polyhedra_Library::Determinate< PSET >::weakening_assign().
|
inline |
Returns a reference to the embedded element.
Definition at line 165 of file Determinate_inlines.hh.
|
inline |
Returns a lower bound to the total size in bytes of the memory occupied by *this
.
Definition at line 238 of file Determinate_inlines.hh.
References Parma_Polyhedra_Library::external_memory_in_bytes().
|
inline |
Assigns to *this
the upper bound of *this
and y
.
Definition at line 172 of file Determinate_inlines.hh.
References Parma_Polyhedra_Library::Determinate< PSET >::pointset().
|
inline |
Assigns to *this
the result of weakening *this
with y
.
Definition at line 193 of file Determinate_inlines.hh.
References Parma_Polyhedra_Library::Determinate< PSET >::pointset().
|
related |
Returns true
if and only if x
and y
are different COW-wrapped pointsets.
|
related |
Definition at line 270 of file Determinate_inlines.hh.
References Parma_Polyhedra_Library::Determinate< PSET >::prep.
|
friend |
|
related |
Output operator.
|
related |
Definition at line 253 of file Determinate_inlines.hh.
|
related |
Returns true
if and only if x
and y
are the same COW-wrapped pointset.
|
related |
Definition at line 263 of file Determinate_inlines.hh.
References Parma_Polyhedra_Library::Determinate< PSET >::prep.
|
friend |
|
related |
Swaps x
with y
.
|
related |
Definition at line 301 of file Determinate_inlines.hh.
References Parma_Polyhedra_Library::Determinate< PSET >::m_swap().
|
private |
A pointer to the possibly shared representation of the base-level domain element.
Definition at line 319 of file Determinate_defs.hh.
Referenced by Parma_Polyhedra_Library::Determinate< PSET >::definitely_entails(), Parma_Polyhedra_Library::Determinate< PSET >::Determinate(), Parma_Polyhedra_Library::Determinate< PSET >::is_definitely_equivalent_to(), Parma_Polyhedra_Library::Determinate< PSET >::m_swap(), Parma_Polyhedra_Library::Determinate< PSET >::operator!=(), Parma_Polyhedra_Library::Determinate< PSET >::operator=(), and Parma_Polyhedra_Library::Determinate< PSET >::operator==().