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_C_Polyhedron_defs_hh
00025 #define PPL_C_Polyhedron_defs_hh 1
00026
00027 #include "C_Polyhedron.types.hh"
00028 #include "NNC_Polyhedron.types.hh"
00029 #include "Polyhedron.defs.hh"
00030 #include "Grid.types.hh"
00031 #include "BD_Shape.types.hh"
00032 #include "Octagonal_Shape.types.hh"
00033
00035
00059 class Parma_Polyhedra_Library::C_Polyhedron : public Polyhedron {
00060 public:
00062
00075 explicit C_Polyhedron(dimension_type num_dimensions = 0,
00076 Degenerate_Element kind = UNIVERSE);
00077
00079
00088 explicit C_Polyhedron(const Constraint_System& cs);
00089
00091
00106 C_Polyhedron(Constraint_System& cs, Recycle_Input dummy);
00107
00109
00119 explicit C_Polyhedron(const Generator_System& gs);
00120
00122
00138 C_Polyhedron(Generator_System& gs, Recycle_Input dummy);
00139
00141
00147 explicit C_Polyhedron(const Congruence_System& cgs);
00148
00150
00163 C_Polyhedron(Congruence_System& cgs, Recycle_Input dummy);
00164
00175 explicit C_Polyhedron(const NNC_Polyhedron& y,
00176 Complexity_Class complexity = ANY_COMPLEXITY);
00177
00179
00194 template <typename Interval>
00195 explicit C_Polyhedron(const Box<Interval>& box,
00196 Complexity_Class complexity = ANY_COMPLEXITY);
00197
00199
00210 template <typename U>
00211 explicit C_Polyhedron(const BD_Shape<U>& bd,
00212 Complexity_Class complexity = ANY_COMPLEXITY);
00213
00215
00226 template <typename U>
00227 explicit C_Polyhedron(const Octagonal_Shape<U>& os,
00228 Complexity_Class complexity = ANY_COMPLEXITY);
00229
00231
00242 explicit C_Polyhedron(const Grid& grid,
00243 Complexity_Class complexity = ANY_COMPLEXITY);
00244
00246
00249 C_Polyhedron(const C_Polyhedron& y,
00250 Complexity_Class complexity = ANY_COMPLEXITY);
00251
00256 C_Polyhedron& operator=(const C_Polyhedron& y);
00257
00259 C_Polyhedron& operator=(const NNC_Polyhedron& y);
00260
00262 ~C_Polyhedron();
00263
00272 bool poly_hull_assign_if_exact(const C_Polyhedron& y);
00273
00275 bool upper_bound_assign_if_exact(const C_Polyhedron& y);
00276 };
00277
00278 #include "C_Polyhedron.inlines.hh"
00279
00280 #endif // !defined(PPL_C_Polyhedron_defs_hh)