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