1 #ifndef ISL_VERTICES_PRIVATE_H 2 #define ISL_VERTICES_PRIVATE_H 3 4 #include <isl/set.h> 5 #include <isl/vertices.h> 6 7 #if defined(__cplusplus) 8 extern "C" { 9 #endif 10 11 struct isl_morph; 12 13 /* A parametric vertex. "vertex" contains the actual description 14 * of the vertex as a singleton parametric set. "dom" is the projection 15 * of "vertex" onto the parameter space, i.e., the activity domain 16 * of the vertex. 17 * During the construction of vertices and chambers, the activity domain 18 * of every parametric vertex is full-dimensional. 19 */ 20 struct isl_vertex { 21 isl_basic_set *dom; 22 isl_basic_set *vertex; 23 }; 24 25 /* A chamber in the chamber decomposition. The indices of the "n_vertices" 26 * active vertices are stored in "vertices". 27 */ 28 struct isl_chamber { 29 int n_vertices; 30 int *vertices; 31 isl_basic_set *dom; 32 }; 33 34 struct isl_vertices { 35 int ref; 36 37 /* The rational basic set spanned by the vertices. */ 38 isl_basic_set *bset; 39 40 int n_vertices; 41 struct isl_vertex *v; 42 43 int n_chambers; 44 struct isl_chamber *c; 45 }; 46 47 struct isl_cell { 48 int n_vertices; 49 int *ids; 50 isl_vertices *vertices; 51 isl_basic_set *dom; 52 }; 53 54 struct isl_external_vertex { 55 isl_vertices *vertices; 56 int id; 57 }; 58 59 isl_stat isl_vertices_foreach_disjoint_cell(__isl_keep isl_vertices *vertices, 60 isl_stat (*fn)(__isl_take isl_cell *cell, void *user), void *user); 61 isl_stat isl_cell_foreach_simplex(__isl_take isl_cell *cell, 62 isl_stat (*fn)(__isl_take isl_cell *simplex, void *user), void *user); 63 64 __isl_give isl_vertices *isl_morph_vertices(__isl_take struct isl_morph *morph, 65 __isl_take isl_vertices *vertices); 66 67 #if defined(__cplusplus) 68 } 69 #endif 70 71 #endif 72