1 | #include <isl/space.h> |
2 | |
3 | #include <isl_multi_macro.h> |
4 | |
5 | /* A multiple expression with base expressions of type EL. |
6 | * |
7 | * "space" is the space in which the multiple expression lives. |
8 | * "n" is the number of base expression and is equal |
9 | * to the output or set dimension of "space". |
10 | * "p" is an array of size "n" of base expressions. |
11 | * The array is only accessible when n > 0. |
12 | * "dom" is the explicit domain, if present |
13 | * The explicit domain is only accessible when n == 0. |
14 | */ |
15 | struct MULTI(BASE) { |
16 | int ref; |
17 | isl_space *space; |
18 | |
19 | int n; |
20 | struct { |
21 | #ifdef EXPLICIT_DOMAIN |
22 | DOM *dom; |
23 | #endif |
24 | EL *p[1]; |
25 | } u; |
26 | }; |
27 | |
28 | __isl_give MULTI(BASE) *CAT(MULTI(BASE),_alloc)(__isl_take isl_space *space); |
29 | __isl_keep isl_space *FN(MULTI(BASE),peek_space)(__isl_keep MULTI(BASE) *multi); |
30 | |
31 | #ifdef EXPLICIT_DOMAIN |
32 | isl_bool CAT(MULTI(BASE),_has_non_trivial_domain)( |
33 | __isl_keep MULTI(BASE) *multi); |
34 | #endif |
35 | |