doc: document Polyhedron_Reduced_Basis and Polyhedron_Sample
[barvinok.git] / decomposer.h
blobfadf727c8999bf839db3dcb90b778950343696c5
1 #ifndef DECOMPOSER_H
2 #define DECOMPOSER_H
4 #include <gmp.h>
5 extern "C" {
6 #include <polylib/polylibgmp.h>
8 #include <barvinok/options.h>
10 struct decomposer {
11 void decompose(Polyhedron *C, barvinok_options *options);
12 virtual void handle(Polyhedron *P, int sign) = 0;
15 struct polar_decomposer : public decomposer {
16 void decompose(Polyhedron *C, barvinok_options *options);
17 virtual void handle(Polyhedron *P, int sign);
18 virtual void handle_polar(Polyhedron *P, int sign) = 0;
21 struct vertex_decomposer {
22 Polyhedron *P;
23 unsigned nbV; // number of vertices
24 Param_Vertices *V; // current vertex
25 int vert; // current vertex index
26 polar_decomposer *pd;
28 vertex_decomposer(Polyhedron *P, unsigned nbV, polar_decomposer *pd) :
29 P(P), nbV(nbV), pd(pd) {}
30 void decompose_at_vertex(Param_Vertices *V, int _i, barvinok_options *options);
33 #endif