PPL  1.2
Parma_Polyhedra_Library::Poly_Con_Relation Class Reference

The relation between a polyhedron and a constraint. More...

#include <Poly_Con_Relation_defs.hh>

Public Member Functions

flags_t get_flags () const
 Access the internal flags: this is needed for some language interfaces. More...
 
void ascii_dump () const
 Writes to std::cerr an ASCII representation of *this. More...
 
void ascii_dump (std::ostream &s) const
 Writes to s an ASCII representation of *this. More...
 
void print () const
 Prints *this to std::cerr using operator<<. More...
 
bool implies (const Poly_Con_Relation &y) const
 True if and only if *this implies y. More...
 
bool OK () const
 Checks if all the invariants are satisfied. More...
 

Static Public Member Functions

static Poly_Con_Relation nothing ()
 The assertion that says nothing. More...
 
static Poly_Con_Relation is_disjoint ()
 The polyhedron and the set of points satisfying the constraint are disjoint. More...
 
static Poly_Con_Relation strictly_intersects ()
 The polyhedron intersects the set of points satisfying the constraint, but it is not included in it. More...
 
static Poly_Con_Relation is_included ()
 The polyhedron is included in the set of points satisfying the constraint. More...
 
static Poly_Con_Relation saturates ()
 The polyhedron is included in the set of points saturating the constraint. More...
 

Private Types

typedef unsigned int flags_t
 Poly_Con_Relation is implemented by means of a finite bitset. More...
 

Private Member Functions

 Poly_Con_Relation (flags_t mask)
 Construct from a bit-mask. More...
 

Static Private Member Functions

static bool implies (flags_t x, flags_t y)
 True if and only if the conjunction x implies the conjunction y. More...
 

Private Attributes

flags_t flags
 This holds the current bitset. More...
 

Static Private Attributes

static const flags_t EVERYTHING
 All assertions together. More...
 
Bit-masks for the individual assertions
static const flags_t NOTHING = 0U
 
static const flags_t IS_DISJOINT = 1U << 0
 
static const flags_t STRICTLY_INTERSECTS = 1U << 1
 
static const flags_t IS_INCLUDED = 1U << 2
 
static const flags_t SATURATES = 1U << 3
 

Friends

bool operator== (const Poly_Con_Relation &x, const Poly_Con_Relation &y)
 
bool operator!= (const Poly_Con_Relation &x, const Poly_Con_Relation &y)
 
Poly_Con_Relation operator&& (const Poly_Con_Relation &x, const Poly_Con_Relation &y)
 
Poly_Con_Relation operator- (const Poly_Con_Relation &x, const Poly_Con_Relation &y)
 
std::ostream & Parma_Polyhedra_Library::IO_Operators::operator<< (std::ostream &s, const Poly_Con_Relation &r)
 

Related Functions

(Note that these are not member functions.)

std::ostream & operator<< (std::ostream &s, const Poly_Con_Relation &r)
 
bool operator== (const Poly_Con_Relation &x, const Poly_Con_Relation &y)
 True if and only if x and y are logically equivalent. More...
 
bool operator!= (const Poly_Con_Relation &x, const Poly_Con_Relation &y)
 True if and only if x and y are not logically equivalent. More...
 
Poly_Con_Relation operator&& (const Poly_Con_Relation &x, const Poly_Con_Relation &y)
 Yields the logical conjunction of x and y. More...
 
Poly_Con_Relation operator- (const Poly_Con_Relation &x, const Poly_Con_Relation &y)
 Yields the assertion with all the conjuncts of x that are not in y. More...
 
std::ostream & operator<< (std::ostream &s, const Poly_Con_Relation &r)
 Output operator. More...
 
bool operator== (const Poly_Con_Relation &x, const Poly_Con_Relation &y)
 
bool operator!= (const Poly_Con_Relation &x, const Poly_Con_Relation &y)
 
Poly_Con_Relation operator&& (const Poly_Con_Relation &x, const Poly_Con_Relation &y)
 
Poly_Con_Relation operator- (const Poly_Con_Relation &x, const Poly_Con_Relation &y)
 

Detailed Description

The relation between a polyhedron and a constraint.

This class implements conjunctions of assertions on the relation between a polyhedron and a constraint.

Definition at line 73 of file Poly_Con_Relation_defs.hh.

Member Typedef Documentation

Poly_Con_Relation is implemented by means of a finite bitset.

Definition at line 76 of file Poly_Con_Relation_defs.hh.

Constructor & Destructor Documentation

Parma_Polyhedra_Library::Poly_Con_Relation::Poly_Con_Relation ( flags_t  mask)
inlineprivate

Construct from a bit-mask.

Definition at line 30 of file Poly_Con_Relation_inlines.hh.

Referenced by is_disjoint(), is_included(), nothing(), saturates(), and strictly_intersects().

31  : flags(mask) {
32 }
flags_t flags
This holds the current bitset.

Member Function Documentation

void Parma_Polyhedra_Library::Poly_Con_Relation::ascii_dump ( ) const

Writes to std::cerr an ASCII representation of *this.

void Parma_Polyhedra_Library::Poly_Con_Relation::ascii_dump ( std::ostream &  s) const

Writes to s an ASCII representation of *this.

Definition at line 33 of file Poly_Con_Relation.cc.

References flags, implies(), IS_DISJOINT, IS_INCLUDED, NOTHING, SATURATES, and STRICTLY_INTERSECTS.

33  {
34  flags_t f = flags;
35  if (f == NOTHING) {
36  s << "NOTHING";
37  return;
38  }
39 
40  while (true) {
41  if (implies(f, IS_DISJOINT)) {
42  s << "IS_DISJOINT";
43  f &= ~IS_DISJOINT;
44  }
45  else if (implies(f, STRICTLY_INTERSECTS)) {
46  s << "STRICTLY_INTERSECTS";
47  f &= ~STRICTLY_INTERSECTS;
48  }
49  else if (implies(f, IS_INCLUDED)) {
50  s << "IS_INCLUDED";
51  f &= ~IS_INCLUDED;
52  }
53  else if (implies(f, SATURATES)) {
54  s << "SATURATES";
55  f &= ~SATURATES;
56  }
57  if (f != NOTHING) {
58  s << " & ";
59  }
60  else {
61  break;
62  }
63  }
64 }
static bool implies(flags_t x, flags_t y)
True if and only if the conjunction x implies the conjunction y.
flags_t flags
This holds the current bitset.
unsigned int flags_t
Poly_Con_Relation is implemented by means of a finite bitset.
Poly_Con_Relation::flags_t Parma_Polyhedra_Library::Poly_Con_Relation::get_flags ( ) const
inline

Access the internal flags: this is needed for some language interfaces.

Definition at line 35 of file Poly_Con_Relation_inlines.hh.

References flags.

35  {
36  return flags;
37 }
flags_t flags
This holds the current bitset.
bool Parma_Polyhedra_Library::Poly_Con_Relation::implies ( const Poly_Con_Relation y) const
inline

True if and only if *this implies y.

Definition at line 70 of file Poly_Con_Relation_inlines.hh.

References flags, and implies().

70  {
71  return implies(flags, y.flags);
72 }
static bool implies(flags_t x, flags_t y)
True if and only if the conjunction x implies the conjunction y.
flags_t flags
This holds the current bitset.
Poly_Con_Relation Parma_Polyhedra_Library::Poly_Con_Relation::is_included ( )
inlinestatic

The polyhedron is included in the set of points satisfying the constraint.

Definition at line 55 of file Poly_Con_Relation_inlines.hh.

References IS_INCLUDED, and Poly_Con_Relation().

Referenced by Parma_Polyhedra_Library::Polyhedron::BFT00_poly_hull_assign_if_exact(), Parma_Polyhedra_Library::Polyhedron::BHZ09_C_poly_hull_assign_if_exact(), Parma_Polyhedra_Library::Polyhedron::BHZ09_NNC_poly_hull_assign_if_exact(), Parma_Polyhedra_Library::Grid::difference_assign(), Parma_Polyhedra_Library::Octagonal_Shape< T >::difference_assign(), Parma_Polyhedra_Library::BD_Shape< T >::difference_assign(), Parma_Polyhedra_Library::Box< ITV >::get_limiting_box(), Parma_Polyhedra_Library::interval_relation(), Parma_Polyhedra_Library::Grid::limited_congruence_extrapolation_assign(), Parma_Polyhedra_Library::Grid::limited_extrapolation_assign(), Parma_Polyhedra_Library::Grid::limited_generator_extrapolation_assign(), Parma_Polyhedra_Library::Polyhedron::poly_difference_assign(), Parma_Polyhedra_Library::Box< ITV >::relation_with(), Parma_Polyhedra_Library::Polyhedron::relation_with(), Parma_Polyhedra_Library::Generator_System::relation_with(), Parma_Polyhedra_Library::Grid::relation_with(), Parma_Polyhedra_Library::Octagonal_Shape< T >::relation_with(), Parma_Polyhedra_Library::Partially_Reduced_Product< D1, D2, R >::relation_with(), Parma_Polyhedra_Library::BD_Shape< T >::relation_with(), Parma_Polyhedra_Library::Pointset_Powerset< PSET >::relation_with_aux(), Parma_Polyhedra_Library::shrink_to_congruence_no_check(), and Parma_Polyhedra_Library::Grid::simplify_using_context_assign().

55  {
57 }
Poly_Con_Relation(flags_t mask)
Construct from a bit-mask.
bool Parma_Polyhedra_Library::Poly_Con_Relation::OK ( ) const

Checks if all the invariants are satisfied.

Definition at line 76 of file Poly_Con_Relation.cc.

76  {
77  return true;
78 }
void Parma_Polyhedra_Library::Poly_Con_Relation::print ( ) const

Prints *this to std::cerr using operator<<.

Friends And Related Function Documentation

bool operator!= ( const Poly_Con_Relation x,
const Poly_Con_Relation y 
)
related

True if and only if x and y are not logically equivalent.

bool operator!= ( const Poly_Con_Relation x,
const Poly_Con_Relation y 
)
related

Definition at line 82 of file Poly_Con_Relation_inlines.hh.

References flags.

82  {
83  return x.flags != y.flags;
84 }
bool operator!= ( const Poly_Con_Relation x,
const Poly_Con_Relation y 
)
friend
Poly_Con_Relation operator&& ( const Poly_Con_Relation x,
const Poly_Con_Relation y 
)
related

Yields the logical conjunction of x and y.

Poly_Con_Relation operator&& ( const Poly_Con_Relation x,
const Poly_Con_Relation y 
)
related

Definition at line 88 of file Poly_Con_Relation_inlines.hh.

References flags.

88  {
89  return Poly_Con_Relation(x.flags | y.flags);
90 }
Poly_Con_Relation(flags_t mask)
Construct from a bit-mask.
Poly_Con_Relation operator&& ( const Poly_Con_Relation x,
const Poly_Con_Relation y 
)
friend
Poly_Con_Relation operator- ( const Poly_Con_Relation x,
const Poly_Con_Relation y 
)
related

Yields the assertion with all the conjuncts of x that are not in y.

Poly_Con_Relation operator- ( const Poly_Con_Relation x,
const Poly_Con_Relation y 
)
related

Definition at line 94 of file Poly_Con_Relation_inlines.hh.

References flags.

94  {
95  return Poly_Con_Relation(x.flags & ~y.flags);
96 }
Poly_Con_Relation(flags_t mask)
Construct from a bit-mask.
Poly_Con_Relation operator- ( const Poly_Con_Relation x,
const Poly_Con_Relation y 
)
friend
std::ostream & operator<< ( std::ostream &  s,
const Poly_Con_Relation r 
)
related

Output operator.

std::ostream & operator<< ( std::ostream &  s,
const Poly_Con_Relation r 
)
related

Definition at line 70 of file Poly_Con_Relation.cc.

70  {
71  r.ascii_dump(s);
72  return s;
73 }
bool operator== ( const Poly_Con_Relation x,
const Poly_Con_Relation y 
)
related

True if and only if x and y are logically equivalent.

bool operator== ( const Poly_Con_Relation x,
const Poly_Con_Relation y 
)
related

Definition at line 76 of file Poly_Con_Relation_inlines.hh.

References flags.

76  {
77  return x.flags == y.flags;
78 }
bool operator== ( const Poly_Con_Relation x,
const Poly_Con_Relation y 
)
friend
std::ostream& Parma_Polyhedra_Library::IO_Operators::operator<< ( std::ostream &  s,
const Poly_Con_Relation r 
)
friend

Member Data Documentation

const flags_t Parma_Polyhedra_Library::Poly_Con_Relation::EVERYTHING
staticprivate
Initial value:

All assertions together.

Definition at line 89 of file Poly_Con_Relation_defs.hh.

flags_t Parma_Polyhedra_Library::Poly_Con_Relation::flags
private

This holds the current bitset.

Definition at line 95 of file Poly_Con_Relation_defs.hh.

Referenced by ascii_dump(), get_flags(), implies(), operator!=(), operator&&(), operator-(), and operator==().

const flags_t Parma_Polyhedra_Library::Poly_Con_Relation::IS_DISJOINT = 1U << 0
staticprivate

Definition at line 81 of file Poly_Con_Relation_defs.hh.

Referenced by ascii_dump(), and is_disjoint().

const flags_t Parma_Polyhedra_Library::Poly_Con_Relation::IS_INCLUDED = 1U << 2
staticprivate

Definition at line 83 of file Poly_Con_Relation_defs.hh.

Referenced by ascii_dump(), and is_included().

const flags_t Parma_Polyhedra_Library::Poly_Con_Relation::NOTHING = 0U
staticprivate

Definition at line 80 of file Poly_Con_Relation_defs.hh.

Referenced by ascii_dump(), and nothing().

const flags_t Parma_Polyhedra_Library::Poly_Con_Relation::SATURATES = 1U << 3
staticprivate

Definition at line 84 of file Poly_Con_Relation_defs.hh.

Referenced by ascii_dump(), and saturates().

const flags_t Parma_Polyhedra_Library::Poly_Con_Relation::STRICTLY_INTERSECTS = 1U << 1
staticprivate

Definition at line 82 of file Poly_Con_Relation_defs.hh.

Referenced by ascii_dump(), and strictly_intersects().


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