00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef PPL_C_Polyhedron_defs_hh
00024 #define PPL_C_Polyhedron_defs_hh 1
00025
00026 #include "C_Polyhedron.types.hh"
00027 #include "NNC_Polyhedron.types.hh"
00028 #include "Polyhedron.defs.hh"
00029 #include "Grid.types.hh"
00030 #include "BD_Shape.types.hh"
00031 #include "Octagonal_Shape.types.hh"
00032
00034
00058 class Parma_Polyhedra_Library::C_Polyhedron : public Polyhedron {
00059 public:
00061
00074 explicit C_Polyhedron(dimension_type num_dimensions = 0,
00075 Degenerate_Element kind = UNIVERSE);
00076
00078
00087 explicit C_Polyhedron(const Constraint_System& cs);
00088
00090
00105 C_Polyhedron(Constraint_System& cs, Recycle_Input dummy);
00106
00108
00118 explicit C_Polyhedron(const Generator_System& gs);
00119
00121
00137 C_Polyhedron(Generator_System& gs, Recycle_Input dummy);
00138
00140
00146 explicit C_Polyhedron(const Congruence_System& cgs);
00147
00149
00162 C_Polyhedron(Congruence_System& cgs, Recycle_Input dummy);
00163
00174 explicit C_Polyhedron(const NNC_Polyhedron& y,
00175 Complexity_Class complexity = ANY_COMPLEXITY);
00176
00178
00193 template <typename Interval>
00194 explicit C_Polyhedron(const Box<Interval>& box,
00195 Complexity_Class complexity = ANY_COMPLEXITY);
00196
00198
00209 template <typename U>
00210 explicit C_Polyhedron(const BD_Shape<U>& bd,
00211 Complexity_Class complexity = ANY_COMPLEXITY);
00212
00214
00225 template <typename U>
00226 explicit C_Polyhedron(const Octagonal_Shape<U>& os,
00227 Complexity_Class complexity = ANY_COMPLEXITY);
00228
00230
00241 explicit C_Polyhedron(const Grid& grid,
00242 Complexity_Class complexity = ANY_COMPLEXITY);
00243
00245
00248 C_Polyhedron(const C_Polyhedron& y,
00249 Complexity_Class complexity = ANY_COMPLEXITY);
00250
00255 C_Polyhedron& operator=(const C_Polyhedron& y);
00256
00258 C_Polyhedron& operator=(const NNC_Polyhedron& y);
00259
00261 ~C_Polyhedron();
00262
00271 bool poly_hull_assign_if_exact(const C_Polyhedron& y);
00272
00274 bool upper_bound_assign_if_exact(const C_Polyhedron& y);
00275 };
00276
00277 #include "C_Polyhedron.inlines.hh"
00278
00279 #endif // !defined(PPL_C_Polyhedron_defs_hh)