PPL  1.2
Parma_Polyhedra_Library::Determinate< PSET > Class Template Reference

A wrapper for PPL pointsets, providing them with a determinate constraint system interface, as defined in [Bag98]. More...

#include <ppl.hh>

Public Member Functions

Constructors and Destructor
 Determinate (const PSET &pset)
 Constructs a COW-wrapped object corresponding to the pointset pset.
 
 Determinate (const Constraint_System &cs)
 Constructs a COW-wrapped object corresponding to the pointset defined by cs.
 
 Determinate (const Congruence_System &cgs)
 Constructs a COW-wrapped object corresponding to the pointset defined by cgs.
 
 Determinate (const Determinate &y)
 Copy constructor.
 
 ~Determinate ()
 Destructor.
 
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.
 
void meet_assign (const Determinate &y)
 Assigns to *this the meet of *this and y.
 
void weakening_assign (const Determinate &y)
 Assigns to *this the result of weakening *this with y.
 
void concatenate_assign (const Determinate &y)
 Assigns to *this the concatenation of *this and y, taken in this order.
 
PSET & pointset ()
 Returns a reference to the embedded element.
 
void mutate ()
 
Determinateoperator= (const Determinate &y)
 Assignment operator.
 
void m_swap (Determinate &y)
 Swaps *this with 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.
 
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.
 
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.
 
bool is_top () const
 Returns true if and only if *this embeds the universe element PSET.
 
bool is_bottom () const
 Returns true if and only if *this embeds the empty element of PSET.
 
bool definitely_entails (const Determinate &y) const
 Returns true if and only if *this entails y.
 
bool is_definitely_equivalent_to (const Determinate &y) const
 Returns true if and only if *this and y are definitely equivalent.
 
memory_size_type total_memory_in_bytes () const
 Returns a lower bound to the total size in bytes of the memory occupied by *this.
 
memory_size_type external_memory_in_bytes () const
 Returns a lower bound to the size in bytes of the memory managed by *this.
 
bool OK () const
 Checks if all the invariants are satisfied.
 
static bool has_nontrivial_weakening ()
 

Detailed Description

template<typename PSET>
class Parma_Polyhedra_Library::Determinate< PSET >

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.

Member Function Documentation

template<typename PSET >
bool Parma_Polyhedra_Library::Determinate< PSET >::has_nontrivial_weakening ( )
inlinestatic

Returns true if and only if this domain has a nontrivial weakening operator.

Friends And Related Function Documentation

template<typename PSET >
void swap ( Determinate< PSET > &  x,
Determinate< PSET > &  y 
)
related

Swaps x with y.

template<typename PSET >
std::ostream & operator<< ( std::ostream &  ,
const Determinate< PSET > &   
)
related

Output operator.

template<typename PSET >
std::ostream & operator<< ( std::ostream &  s,
const Determinate< PSET > &  x 
)
related
template<typename PSET >
bool operator== ( const Determinate< PSET > &  x,
const Determinate< PSET > &  y 
)
related
template<typename PSET >
bool operator!= ( const Determinate< PSET > &  x,
const Determinate< PSET > &  y 
)
related
template<typename PSET >
void swap ( Determinate< PSET > &  x,
Determinate< PSET > &  y 
)
related

The documentation for this class was generated from the following file: