• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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