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_NNC_Polyhedron_defs_hh
00024 #define PPL_NNC_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
00032
00045 class Parma_Polyhedra_Library::NNC_Polyhedron : public Polyhedron {
00046 public:
00048
00061 explicit NNC_Polyhedron(dimension_type num_dimensions = 0,
00062 Degenerate_Element kind = UNIVERSE);
00063
00065
00071 explicit NNC_Polyhedron(const Constraint_System& cs);
00072
00074
00086 NNC_Polyhedron(Constraint_System& cs, Recycle_Input dummy);
00087
00089
00098 explicit NNC_Polyhedron(const Generator_System& gs);
00099
00101
00116 NNC_Polyhedron(Generator_System& gs, Recycle_Input dummy);
00117
00119
00127 explicit NNC_Polyhedron(const Congruence_System& cgs);
00128
00130
00143 NNC_Polyhedron(Congruence_System& cgs, Recycle_Input dummy);
00144
00146
00153 explicit NNC_Polyhedron(const C_Polyhedron& y,
00154 Complexity_Class complexity = ANY_COMPLEXITY);
00155
00157
00172 template <typename Interval>
00173 explicit NNC_Polyhedron(const Box<Interval>& box,
00174 Complexity_Class complexity = ANY_COMPLEXITY);
00175
00177
00188 explicit NNC_Polyhedron(const Grid& grid,
00189 Complexity_Class complexity = ANY_COMPLEXITY);
00190
00192
00203 template <typename U>
00204 explicit NNC_Polyhedron(const BD_Shape<U>& bd,
00205 Complexity_Class complexity = ANY_COMPLEXITY);
00206
00208
00219 template <typename U>
00220 explicit NNC_Polyhedron(const Octagonal_Shape<U>& os,
00221 Complexity_Class complexity = ANY_COMPLEXITY);
00222
00224 NNC_Polyhedron(const NNC_Polyhedron& y,
00225 Complexity_Class complexity = ANY_COMPLEXITY);
00226
00231 NNC_Polyhedron& operator=(const NNC_Polyhedron& y);
00232
00234 NNC_Polyhedron& operator=(const C_Polyhedron& y);
00235
00237 ~NNC_Polyhedron();
00238
00247 bool poly_hull_assign_if_exact(const NNC_Polyhedron& y);
00248
00250 bool upper_bound_assign_if_exact(const NNC_Polyhedron& y);
00251 };
00252
00253 #include "NNC_Polyhedron.inlines.hh"
00254
00255 #endif // !defined(PPL_NNC_Polyhedron_defs_hh)