# Parma_Polyhedra_Library::Determinate< PSET > Class Template Reference
[C++ Language Interface]

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

`#include <ppl.hh>`

List of all members.

## Public Member Functions

Constructors and Destructor
| Determinate (const PSET &p)
| Constructs a COW-wrapped object corresponding to the pointset `p`.
| 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 ()
Determinate & | operator= (const Determinate &y)
| Assignment operator.
void | swap (Determinate &y)
| Swaps `*this` with `y`.

## Friends

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.
bool | operator!= (const Determinate< PSET > &x, const Determinate< PSET > &y)
| Returns `true` if and only if `x` and `y` are different COW-wrapped pointsets.

## Related Functions

(Note that these are not member functions.)
template<typename PSET >
std::ostream & | operator<< (std::ostream &, const Determinate< PSET > &)
| Output operator.
template<typename PSET >
void | swap (Parma_Polyhedra_Library::Determinate< PSET > &x, Parma_Polyhedra_Library::Determinate< PSET > &y)
| Specializes `std::swap`.

## 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 | ( |  | ) | `[inline, static]`

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

## Friends And Related Function Documentation

template<typename PSET >

bool operator== | ( | const Determinate< PSET > & | x,
|  | const Determinate< PSET > & | y |
| ) |  |  | `[friend]`

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 |
| ) |  |  | `[friend]`

Returns `true` if and only if `x` and `y` are different COW-wrapped pointsets.

template<typename PSET >

std::ostream & operator<< | ( | std::ostream & | s,
|  | const Determinate< PSET > & | x |
| ) |  |  | `[related]`

Output operator.

template<typename PSET >

void swap | ( | Parma_Polyhedra_Library::Determinate< PSET > & | x,
|  | Parma_Polyhedra_Library::Determinate< PSET > & | y |
| ) |  |  | `[related]`

Specializes `std::swap`.

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

- ppl.hh