Home | History | Annotate | Line # | Download | only in dist
      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