24 #ifndef PPL_Pointset_Ask_Tell_inlines_hh
25 #define PPL_Pointset_Ask_Tell_inlines_hh 1
40 template <
typename PSET>
46 template <
typename PSET>
52 template <
typename PSET>
56 :
Base(), space_dim(num_dimensions) {
61 PPL_ASSERT_HEAVY(
OK());
64 template <
typename PSET>
67 :
Base(y), space_dim(y.space_dim) {
70 template <
typename PSET>
73 :
Base(ph), space_dim(ph.space_dimension()) {
76 template <
typename PSET>
80 PPL_ASSERT_HEAVY(
OK());
83 template <
typename PSET>
87 PPL_ASSERT_HEAVY(
OK());
90 template <
typename PSET>
99 template <
typename PSET>
108 template <
typename PSET>
109 template <
typename QH>
118 template <
typename PSET>
122 x.pairwise_apply_assign
124 Det_PSET::lift_op_assign(std::mem_fun_ref(&PSET::intersection_assign)));
127 template <
typename PSET>
131 x.pairwise_apply_assign
133 Det_PSET::lift_op_assign(std::mem_fun_ref(&PSET::time_elapse_assign)));
136 template <
typename PSET>
145 template <
typename PSET>
162 template <
typename PSET>
168 template <
typename PSET>
174 template <
typename PSET>
191 template <
typename PSET>
196 return check_containment(pph, pps);
209 template <
typename PSET>
217 #endif // !defined(PPL_Pointset_Ask_Tell_inlines_hh)
void time_elapse_assign(const Pointset_Ask_Tell &y)
Assigns to *this the result of computing the time-elapse between *this and y.
The empty element, i.e., the empty set.
dimension_type max_space_dimension()
Returns the maximum space dimension this library can handle.
void swap(CO_Tree &x, CO_Tree &y)
void swap(Pointset_Ask_Tell< PSET > &x, Pointset_Ask_Tell< PSET > &y)
size_t dimension_type
An unsigned integral type for representing space dimensions.
dimension_type space_dimension() const
Returns the dimension of the vector space enclosing *this.
bool check_containment(const PSET &ph, const Pointset_Ask_Tell< PSET > &ps)
Pointset_Ask_Tell(dimension_type num_dimensions=0, Degenerate_Element kind=UNIVERSE)
Builds a universe (top) or empty (bottom) Pointset_Ask_Tell.
void intersection_assign(const Pointset_Ask_Tell &y)
Assigns to *this the intersection of *this and y.
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.
A wrapper for PPL pointsets, providing them with a determinate constraint system interface, as defined in [Bag98].
bool geometrically_covers(const Pointset_Ask_Tell &y) const
Returns true if and only if *this geometrically covers y, i.e., if any point (in some element) of y i...
static dimension_type max_space_dimension()
Returns the maximum space dimension a Pointset_Ask_Tell
can handle.
Degenerate_Element
Kinds of degenerate abstract elements.
The ask-and-tell construction instantiated on PPL polyhedra.
Enable_If< Is_Native< T >::value, memory_size_type >::type external_memory_in_bytes(const T &)
For native types, returns the size in bytes of the memory managed by the type of the (unused) paramet...
A not necessarily closed convex polyhedron.
A closed convex polyhedron.
int32_t hash_code_from_dimension(dimension_type dim)
Returns the hash code for space dimension dim.
bool OK() const
Checks if all the invariants are satisfied.
dimension_type space_dim
The number of dimensions of the enclosing vector space.
The universe element, i.e., the whole vector space.
void m_swap(Pointset_Ask_Tell &y)
Swaps *this with y.
The entire library is confined to this namespace.
Pointset_Ask_Tell & operator=(const Pointset_Ask_Tell &y)
The assignment operator (*this and y can be dimension-incompatible).
int32_t hash_code() const
Returns a 32-bit hash code for *this.
bool check_containment(const C_Polyhedron &ph, const Pointset_Ask_Tell< C_Polyhedron > &ps)
size_t memory_size_type
An unsigned integral type for representing memory size in bytes.
void pair_insert(const Parma_Polyhedra_Library::Determinate< PSET > &a, const Parma_Polyhedra_Library::Determinate< PSET > &t)
The ask and tell construction on a base-level domain.
bool geometrically_equals(const Pointset_Ask_Tell &y) const
Returns true if and only if *this is geometrically equal to y, i.e., if (the elements of) *this and y...
void poly_difference_assign(const Pointset_Ask_Tell &y)
Assigns to *this the difference of *this and y.