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