00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef PPL_Poly_Gen_Relation_defs_hh
00025 #define PPL_Poly_Gen_Relation_defs_hh 1
00026
00027 #include "Poly_Gen_Relation.types.hh"
00028 #include "globals.defs.hh"
00029 #include <iosfwd>
00030
00031 namespace Parma_Polyhedra_Library {
00032
00033
00034
00036
00037 bool operator==(const Poly_Gen_Relation& x, const Poly_Gen_Relation& y);
00038
00040
00041 bool operator!=(const Poly_Gen_Relation& x, const Poly_Gen_Relation& y);
00042
00044
00045 Poly_Gen_Relation operator&&(const Poly_Gen_Relation& x,
00046 const Poly_Gen_Relation& y);
00047
00054 Poly_Gen_Relation operator-(const Poly_Gen_Relation& x,
00055 const Poly_Gen_Relation& y);
00056
00057 namespace IO_Operators {
00058
00060
00061 std::ostream& operator<<(std::ostream& s, const Poly_Gen_Relation& r);
00062
00063 }
00064
00065 }
00066
00067
00069
00073 class Parma_Polyhedra_Library::Poly_Gen_Relation {
00074 private:
00076 typedef unsigned int flags_t;
00077
00079
00080 static const flags_t NOTHING = 0U;
00081 static const flags_t SUBSUMES = 1U << 0;
00083
00085 static const flags_t EVERYTHING
00086 = SUBSUMES;
00087
00089 flags_t flags;
00090
00092 static bool implies(flags_t x, flags_t y);
00093
00095 Poly_Gen_Relation(flags_t mask);
00096
00097 friend bool
00098 operator==(const Poly_Gen_Relation& x, const Poly_Gen_Relation& y);
00099 friend bool
00100 operator!=(const Poly_Gen_Relation& x, const Poly_Gen_Relation& y);
00101
00102 friend Poly_Gen_Relation
00103 operator&&(const Poly_Gen_Relation& x, const Poly_Gen_Relation& y);
00104
00105 friend Poly_Gen_Relation
00106 operator-(const Poly_Gen_Relation& x, const Poly_Gen_Relation& y);
00107
00108 friend std::ostream&
00109 Parma_Polyhedra_Library::
00110 IO_Operators::operator<<(std::ostream& s, const Poly_Gen_Relation& r);
00111
00112 public:
00113 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
00114
00118 #endif
00119 flags_t get_flags() const;
00120
00121 public:
00123 static Poly_Gen_Relation nothing();
00124
00126 static Poly_Gen_Relation subsumes();
00127
00128 PPL_OUTPUT_DECLARATIONS
00129
00131 bool implies(const Poly_Gen_Relation& y) const;
00132
00134 bool OK() const;
00135 };
00136
00137 #include "Poly_Gen_Relation.inlines.hh"
00138
00139 #endif // !defined(PPL_Poly_Gen_Relation_defs_hh)