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 */ MULTI(BASE)15struct 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