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_NNC_Polyhedron_defs_hh
00025 #define PPL_NNC_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
00033
00046 class Parma_Polyhedra_Library::NNC_Polyhedron : public Polyhedron {
00047 public:
00049
00062 explicit NNC_Polyhedron(dimension_type num_dimensions = 0,
00063 Degenerate_Element kind = UNIVERSE);
00064
00066
00072 explicit NNC_Polyhedron(const Constraint_System& cs);
00073
00075
00087 NNC_Polyhedron(Constraint_System& cs, Recycle_Input dummy);
00088
00090
00099 explicit NNC_Polyhedron(const Generator_System& gs);
00100
00102
00117 NNC_Polyhedron(Generator_System& gs, Recycle_Input dummy);
00118
00120
00128 explicit NNC_Polyhedron(const Congruence_System& cgs);
00129
00131
00144 NNC_Polyhedron(Congruence_System& cgs, Recycle_Input dummy);
00145
00147
00154 explicit NNC_Polyhedron(const C_Polyhedron& y,
00155 Complexity_Class complexity = ANY_COMPLEXITY);
00156
00158
00173 template <typename Interval>
00174 explicit NNC_Polyhedron(const Box<Interval>& box,
00175 Complexity_Class complexity = ANY_COMPLEXITY);
00176
00178
00189 explicit NNC_Polyhedron(const Grid& grid,
00190 Complexity_Class complexity = ANY_COMPLEXITY);
00191
00193
00204 template <typename U>
00205 explicit NNC_Polyhedron(const BD_Shape<U>& bd,
00206 Complexity_Class complexity = ANY_COMPLEXITY);
00207
00209
00220 template <typename U>
00221 explicit NNC_Polyhedron(const Octagonal_Shape<U>& os,
00222 Complexity_Class complexity = ANY_COMPLEXITY);
00223
00225 NNC_Polyhedron(const NNC_Polyhedron& y,
00226 Complexity_Class complexity = ANY_COMPLEXITY);
00227
00232 NNC_Polyhedron& operator=(const NNC_Polyhedron& y);
00233
00235 NNC_Polyhedron& operator=(const C_Polyhedron& y);
00236
00238 ~NNC_Polyhedron();
00239
00248 bool poly_hull_assign_if_exact(const NNC_Polyhedron& y);
00249
00251 bool upper_bound_assign_if_exact(const NNC_Polyhedron& y);
00252 };
00253
00254 #include "NNC_Polyhedron.inlines.hh"
00255
00256 #endif // !defined(PPL_NNC_Polyhedron_defs_hh)