24 #ifndef PPL_Determinate_defs_hh
25 #define PPL_Determinate_defs_hh
38 template <
typename PSET>
39 void swap(Determinate<PSET>& x, Determinate<PSET>& y);
47 template <
typename PSET>
48 bool operator==(
const Determinate<PSET>& x,
const Determinate<PSET>& y);
56 template <
typename PSET>
57 bool operator!=(
const Determinate<PSET>& x,
const Determinate<PSET>& y);
59 namespace IO_Operators {
63 template <
typename PSET>
65 operator<<(std::ostream&, const Determinate<PSET>&);
83 template <
typename PSET>
186 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
191 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
202 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
216 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
217 template <
typename Binary_Operator_Assign>
232 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
237 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
238 template <
typename Binary_Operator_Assign>
330 #endif // !defined(PPL_Determinate_defs_hh)
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 ...
bool operator!=(const Box< ITV > &x, const Box< ITV > &y)
void new_reference() const
Registers a new reference.
The possibly shared representation of a Determinate object.
memory_size_type external_memory_in_bytes() const
Returns a lower bound to the size in bytes of the memory managed by *this.
void swap(CO_Tree &x, CO_Tree &y)
size_t dimension_type
An unsigned integral type for representing space dimensions.
A function adapter for the Determinate class.
memory_size_type total_memory_in_bytes() const
Returns a lower bound to the total size in bytes of the memory occupied by *this. ...
bool is_top() const
Returns true if and only if *this embeds the universe element PSET.
Determinate & operator=(const Determinate &y)
Assignment operator.
void weakening_assign(const Determinate &y)
Assigns to *this the result of weakening *this with y.
void operator()(Determinate &x, const Determinate &y) const
Function-application operator.
void concatenate_assign(const Determinate &y)
Assigns to *this the concatenation of *this and y, taken in this order.
bool is_definitely_equivalent_to(const Determinate &y) const
Returns true if and only if *this and y are definitely equivalent.
void upper_bound_assign(const Determinate &y)
Assigns to *this the upper bound of *this and y.
void mutate()
On return from this method, the representation of *this is not shared by different Determinate object...
A wrapper for PPL pointsets, providing them with a determinate constraint system interface, as defined in [Bag98].
Determinate(const PSET &pset)
Constructs a COW-wrapped object corresponding to the pointset pset.
bool OK() const
Checks if all the invariants are satisfied.
bool definitely_entails(const Determinate &y) const
Returns true if and only if *this entails y.
Binary_Operator_Assign_Lifter(Binary_Operator_Assign op_assign)
Explicit unary constructor.
Degenerate_Element
Kinds of degenerate abstract elements.
Rep * prep
A pointer to the possibly shared representation of the base-level domain element. ...
bool is_bottom() const
Returns true if and only if *this embeds the empty element of PSET.
static bool has_nontrivial_weakening()
memory_size_type external_memory_in_bytes() const
Returns a lower bound to the size in bytes of the memory managed by *this.
The entire library is confined to this namespace.
memory_size_type total_memory_in_bytes() const
Returns a lower bound to the total size in bytes of the memory occupied by *this. ...
unsigned long references
Count the number of references:
Binary_Operator_Assign op_assign_
The function object to be lifted.
PSET pset
The possibly shared, embedded pointset.
bool del_reference() const
Unregisters one reference; returns true if and only if the representation has become unreferenced...
bool is_shared() const
True if and only if this representation is currently shared.
Rep & operator=(const Rep &y)
Private and unimplemented: assignment not allowed.
bool operator==(const Box< ITV > &x, const Box< ITV > &y)
void meet_assign(const Determinate &y)
Assigns to *this the meet of *this and y.
size_t memory_size_type
An unsigned integral type for representing memory size in bytes.
void m_swap(Determinate &y)
Swaps *this with y.
~Determinate()
Destructor.
Rep()
Private and unimplemented: default construction not allowed.
const PSET & pointset() const
Returns a const reference to the embedded pointset.