25 return space ? space->ctx : NULL;
29 unsigned nparam,
unsigned n_in,
unsigned n_out)
74 if (space->n_in != 0 || space->nested[0])
157 unsigned nparam,
unsigned dim)
183 if (space->n_in != 0 || space->nested[0] ||
184 space->n_out != 0 || space->nested[1])
220 return pos + space->nparam;
222 return pos + space->nparam + space->n_in;
240 if (dim <= space->n_id)
252 for (i = space->n_id; i < dim; ++i)
253 space->ids[i] = NULL;
275 if (gpos >= space->n_id) {
283 space->ids[gpos] =
id;
300 if (gpos >= space->n_id)
302 return space->ids[gpos];
312 if (!space->nested[
pos])
314 "no nested space",
return NULL);
315 return space->nested[
pos];
323 case isl_dim_out:
return space->nparam + space->n_in;
335 return space->nparam + space->n_in + space->n_out;
344 return n(space,
type);
359 "only input, output and set tuples "
382 for (i = 0; i <
n(src, src_type); ++i) {
383 id =
get_id(src, src_type, i);
399 space->nparam, space->n_in, space->n_out);
402 if (space->tuple_id[0] &&
405 if (space->tuple_id[1] &&
408 if (space->nested[0] &&
411 if (space->nested[1] &&
452 if (--space->ref > 0)
461 for (i = 0; i < space->n_id; ++i)
558 "parameter spaces don't have tuple ids",
return 0);
561 "set spaces can only have a set id",
return 0);
564 "only input, output and set tuples can have ids",
610 "tuple has no id",
return NULL);
644 "only input, output and set tuples can have names",
687 "only input, output and set tuples can have names",
714 for (i = 0; i < 2; ++i) {
715 if (!space->nested[i])
720 if (!space->nested[i])
748 for (i = 0; i < 2; ++i) {
749 if (!space->nested[i])
754 if (!space->nested[i])
781 "dim has no id",
return NULL);
828 return id ?
id->name : NULL;
867 return id ?
id->name : NULL;
882 for (i = 0; i <
n &&
offset + i < space->n_id; ++i)
883 if (space->ids[
offset + i] ==
id)
901 for (i = 0; i <
n &&
offset + i < space->n_id; ++i) {
903 if (
id &&
id->name && !strcmp(
id->name,
name))
925 for (i = 0; i < space->nparam && i < space->n_id; ++i) {
939 for (i = 0; i < 2; ++i) {
940 if (!space->tuple_id[i])
950 space->tuple_id[i] =
id;
955 for (i = 0; i < 2; ++i) {
958 if (!space->nested[i])
976 return space->tuple_id[0];
978 return space->tuple_id[1];
999 if (!space1 || !space2)
1001 if (space1 == space2)
1054 if (!space1 || !space2)
1057 if (space1 == space2 && type1 == type2)
1060 if (
n(space1, type1) !=
n(space2, type2))
1066 if (id1 && id1 != id2)
1068 nested1 =
nested(space1, type1);
1069 nested2 =
nested(space2, type2);
1070 if (!nested1 ^ !nested2)
1091 "only input, output and set tuples "
1118 if (!space1 || !space2)
1121 if (space1 == space2 && type1 == type2)
1128 if (!space1->ids && !space2->ids)
1131 for (i = 0; i <
n(space1, type1); ++i) {
1132 if (
get_id(space1, type1, i) !=
get_id(space2, type2, i))
1163 return match(space1, type1, space2, type2);
1171 for (i = 0; i <
n ; ++i)
1176 unsigned nparam,
unsigned n_in,
unsigned n_out)
1182 if (space->nparam == nparam &&
1183 space->n_in == n_in && space->n_out == n_out)
1186 isl_assert(space->ctx, space->nparam <= nparam,
goto error);
1187 isl_assert(space->ctx, space->n_in <= n_in,
goto error);
1188 isl_assert(space->ctx, space->n_out <= n_out,
goto error);
1196 n = nparam + n_in + n_out;
1197 if (
n < nparam ||
n < n_in ||
n < n_out)
1199 "overflow in total number of dimensions",
1207 ids + nparam + n_in);
1210 space->n_id = nparam + n_in + n_out;
1212 space->nparam = nparam;
1214 space->n_out = n_out;
1224 unsigned nparam,
unsigned n_in,
unsigned n_out)
1238 space->nparam +
n, space->n_in, space->n_out);
1239 if (space && space->nested[0] &&
1243 if (space && space->nested[1] &&
1250 space->nparam, space->n_in +
n, space->n_out);
1253 space->nparam, space->n_in, space->n_out +
n);
1256 "cannot add dimensions of specified type",
goto error);
1305#define TYPE isl_space
1326 "cannot insert dimensions of specified type",
1341 space->nparam + space->n_in + space->n_out +
n);
1350 get_ids(space,
t, 0, s[
t - o], ids + off);
1357 off += s[
t - o] -
pos;
1362 space->n_id = space->nparam + space->n_in + space->n_out +
n;
1373 if (space && space->nested[0] &&
1377 if (space && space->nested[1] &&
1405 if (dst_type == src_type && dst_pos == src_pos)
1408 isl_assert(space->ctx, dst_type != src_type,
goto error);
1420 space->nparam + space->n_in + space->n_out);
1428 if (
t == dst_type) {
1429 get_ids(space,
t, 0, dst_pos, ids + off);
1431 get_ids(space, src_type, src_pos,
n, ids + off);
1433 get_ids(space,
t, dst_pos, s[
t - o] - dst_pos,
1435 off += s[
t - o] - dst_pos;
1436 }
else if (
t == src_type) {
1437 get_ids(space,
t, 0, src_pos, ids + off);
1440 s[
t - o] - src_pos -
n, ids + off);
1441 off += s[
t - o] - src_pos -
n;
1443 get_ids(space,
t, 0, s[
t - o], ids + off);
1449 space->n_id = space->nparam + space->n_in + space->n_out;
1469 for (i = 0; i < 2; ++i) {
1472 if (!space->nested[i])
1517 left->nparam, left->n_in, right->n_out);
1531 if (space && left->
nested[0] &&
1534 if (space && right->
nested[1] &&
1558 if (!left || !right)
1564 "expecting either two set spaces or two map spaces",
1600 "ranges need to match",
goto error);
1625 "domains need to match",
goto error);
1659 if (!
domain->tuple_id[0])
1694 if (!
range->tuple_id[0])
1699 if (!
range->nested[0])
1732 if (!
domain->tuple_id[1])
1807 if (!
range->tuple_id[1])
1812 if (!
range->nested[1])
1908 n_id = space->nparam + space->n_out + space->n_out;
1909 if (n_id > 0 && space->ids) {
1915 ids + space->nparam);
1917 space->n_in = space->n_out;
1925 space->tuple_id[0] =
isl_id_copy(space->tuple_id[1]);
1941 "domain is not a set space",
goto error);
1944 "range is not a set space",
goto error);
1958 for (i = 0; i <
n ; ++i)
1959 space =
set_id(space,
type, first + i, ids[i]);
1982 id = space->tuple_id[0];
1983 space->tuple_id[0] = space->tuple_id[1];
1984 space->tuple_id[1] =
id;
1991 int n_id = space->
n_in + space->n_out;
2000 space->n_in = space->n_out;
2006 ids + space->n_out);
2060 "cannot drop dimensions of specified type",
goto error);
2071 for (i = 0; i < num; ++i)
2073 for (i = first+num; i <
n(space,
type); ++i)
2095 if (space && space->nested[0] &&
2099 if (space && space->nested[1] &&
2111 unsigned first,
unsigned n)
2119 unsigned first,
unsigned n)
2154 "not a set space",
goto error);
2178 "not a set space",
goto error);
2219 if (n_in < 0 || n_out < 0)
2233 "not a parameter space",
goto error);
2255 if (is_params < 0 || is_set < 0)
2257 if (!is_params && !is_set)
2259 "cannot add tuple to map space",
2290 n = isl_multi_id_size(
tuple);
2293 for (i = 0; i <
n; ++i) {
2297 id = isl_multi_id_get_at(
tuple, i);
2320 n = isl_multi_id_size(
tuple);
2321 if (first < 0 ||
n < 0)
2324 for (i = 0; i <
n; ++i) {
2327 id = isl_multi_id_get_at(
tuple, i);
2348 tuple_space = isl_multi_id_peek_space(
tuple);
2371 tuple_space = isl_multi_id_peek_space(
tuple);
2395 tuple_space = isl_multi_id_peek_space(
tuple);
2420 if (is_params < 0) {
2423 }
else if (is_params) {
2453 n = isl_multi_id_size(
tuple);
2454 if (!space ||
n < 0)
2456 for (i =
n - 1; i >= 0; --i) {
2460 id = isl_multi_id_get_id(
tuple, i);
2469 tuple_space = isl_multi_id_get_space(
tuple);
2470 for (i = 0; i <
n; ++i) {
2473 id = isl_multi_id_get_id(
tuple, i);
2489 if (n_div == 0 && is_set &&
2490 space->nparam == 0 && space->n_in == 0 && space->n_id == 0)
2495 space->n_out += space->nparam + space->n_in + n_div;
2499 for (i = 0; i < space->n_id; ++i)
2516 if (!space1 || !space2)
2518 if (space1 == space2)
2538 if (is_set < 0 || !is_set)
2556 if (is_set < 0 || !is_set)
2604 if (!space1 || !space2)
2607 if (equal_params < 0 || !equal_params)
2608 return equal_params;
2634 if (!space1 || !space2)
2637 if (equal_params < 0 || !equal_params)
2638 return equal_params;
2666 for (i = 0; i < space->nparam; ++i) {
2827 if (is_product < 0 || !is_product)
2840 space->nparam, space->n_in + space->n_out);
2849 wrap->nested[1] = space;
2933 if (!space->nested[0] && !space->nested[1])
2936 if (space->nested[0])
2938 if (space && space->nested[1])
2948 if (!space->nested[0])
2958 if (!space->nested[1])
2974 if (equal_params < 0)
2983 if (dst_dim < 0 || src_dim < 0)
2992 for (i = 0; i <= 1; ++i) {
2995 if (!dst->nested[i])
3027 for (i = 0; i <
n; ++i) {
3092 isl_space *dom_dom, *dom_ran, *ran_dom, *ran_ran;
3138 "space cannot be curried",
goto error);
3164 if (can < 0 || !can)
3181 "space range cannot be curried",
3212 "space cannot be uncurried",
3232 if (space->nparam == 0)
3235 if (off + space->nparam > space->n_id)
3237 for (i = 0; i < space->nparam; ++i)
3238 if (!space->ids[off + i])
3304 if (model->nested[1]) {
3310 if (n_nested < 0 || n_space < 0)
3312 if (n_nested > n_space)
3314 n_space, n_nested - n_space);
3317 space->nested[1] =
nested;
3340 if (dim1 < 0 || dim2 < 0)
3351 if (!nested1 != !nested2)
3352 return !nested1 - !nested2;
3369 if (space1 == space2)
3386 if (!space1->ids && !space2->ids)
#define isl_die(ctx, errno, msg, code)
void isl_ctx_deref(struct isl_ctx *ctx)
#define isl_assert(ctx, test, code)
isl_bool isl_bool_ok(int b)
#define isl_alloc_array(ctx, type, n)
#define isl_calloc_array(ctx, type, n)
#define isl_alloc_type(ctx, type)
#define isl_realloc_array(ctx, ptr, type, n)
void isl_ctx_ref(struct isl_ctx *ctx)
isl_bool isl_bool_not(isl_bool b)
#define isl_hash_byte(h, b)
__isl_export __isl_keep const char * isl_id_get_name(__isl_keep isl_id *id)
__isl_null isl_id * isl_id_free(__isl_take isl_id *id)
void * isl_id_get_user(__isl_keep isl_id *id)
__isl_give isl_id * isl_id_copy(isl_id *id)
__isl_give isl_id * isl_id_alloc(isl_ctx *ctx, __isl_keep const char *name, void *user)
struct isl_multi_id isl_multi_id
int GMPQAPI() cmp(mp_rat op1, mp_rat op2)
int isl_id_cmp(__isl_keep isl_id *id1, __isl_keep isl_id *id2)
uint32_t isl_hash_id(uint32_t hash, __isl_keep isl_id *id)
__isl_give dup(__isl_keep LIST(EL) *list)
static unsigned pos(__isl_keep isl_space *space, enum isl_dim_type type)
__isl_null isl_reordering * isl_reordering_free(__isl_take isl_reordering *exp)
__isl_give isl_reordering * isl_parameter_alignment_reordering(__isl_keep isl_space *alignee, __isl_keep isl_space *aligner)
__isl_give isl_space * isl_reordering_get_space(__isl_keep isl_reordering *r)
isl_bool isl_space_has_equal_params(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
static __isl_give isl_space * set_id(__isl_take isl_space *space, enum isl_dim_type type, unsigned pos, __isl_take isl_id *id)
__isl_give isl_space * isl_space_set_tuple_id(__isl_take isl_space *space, enum isl_dim_type type, __isl_take isl_id *id)
__isl_null isl_space * isl_space_free(__isl_take isl_space *space)
__isl_give isl_space * isl_space_from_domain(__isl_take isl_space *space)
static __isl_keep isl_space * isl_space_peek_nested(__isl_keep isl_space *space, int pos)
isl_stat isl_space_check_is_set(__isl_keep isl_space *space)
uint32_t isl_space_get_full_hash(__isl_keep isl_space *space)
isl_size isl_space_wrapped_dim(__isl_keep isl_space *space, enum isl_dim_type outer, enum isl_dim_type inner)
__isl_give isl_space * isl_space_range_factor_range(__isl_take isl_space *space)
isl_bool isl_space_match(__isl_keep isl_space *space1, enum isl_dim_type type1, __isl_keep isl_space *space2, enum isl_dim_type type2)
__isl_give isl_space * isl_space_bind_domain_wrapped_domain(__isl_take isl_space *space, __isl_keep isl_multi_id *tuple)
isl_bool isl_space_is_wrapping(__isl_keep isl_space *space)
__isl_give isl_space * isl_space_domain_wrapped_domain(__isl_take isl_space *space)
__isl_give isl_space * isl_space_extend_domain_with_range(__isl_take isl_space *space, __isl_take isl_space *model)
__isl_give isl_space * isl_space_range_map(__isl_take isl_space *space)
static __isl_give isl_space * isl_space_take_nested(__isl_keep isl_space *space, int pos)
__isl_give isl_space * isl_space_params(__isl_take isl_space *space)
__isl_give isl_id * isl_space_get_domain_tuple_id(__isl_keep isl_space *space)
static int isl_space_cmp_type(__isl_keep isl_space *space1, __isl_keep isl_space *space2, enum isl_dim_type type)
__isl_give isl_space * isl_space_from_range(__isl_take isl_space *space)
__isl_give isl_space * isl_space_reverse(__isl_take isl_space *space)
static __isl_give isl_space * copy_ids(__isl_take isl_space *dst, enum isl_dim_type dst_type, unsigned offset, __isl_keep isl_space *src, enum isl_dim_type src_type)
__isl_give isl_space * isl_space_domain_wrapped_range(__isl_take isl_space *space)
static __isl_give isl_space * extend_ids(__isl_take isl_space *space)
isl_bool isl_space_has_tuple_id(__isl_keep isl_space *space, enum isl_dim_type type)
__isl_give isl_space * isl_space_insert_dims(__isl_take isl_space *space, enum isl_dim_type type, unsigned pos, unsigned n)
isl_ctx * isl_space_get_ctx(__isl_keep isl_space *space)
static __isl_give isl_space * add_bind_params(__isl_take isl_space *space, __isl_keep isl_multi_id *tuple)
isl_bool isl_space_range_is_wrapping(__isl_keep isl_space *space)
__isl_give isl_space * isl_space_dup(__isl_keep isl_space *space)
__isl_give isl_id * isl_space_get_tuple_id(__isl_keep isl_space *space, enum isl_dim_type type)
static __isl_keep isl_space * isl_space_get_nested(__isl_keep isl_space *space, int pos)
__isl_give isl_space * isl_space_set_from_params(__isl_take isl_space *space)
__isl_give isl_space * isl_space_flatten(__isl_take isl_space *space)
__isl_give isl_space * isl_space_factor_domain(__isl_take isl_space *space)
__isl_give isl_space * isl_space_copy(__isl_keep isl_space *space)
__isl_give isl_space * isl_space_bind_set(__isl_take isl_space *space, __isl_keep isl_multi_id *tuple)
isl_bool isl_space_has_dim_name(__isl_keep isl_space *space, enum isl_dim_type type, unsigned pos)
__isl_give isl_space * isl_space_range_curry(__isl_take isl_space *space)
__isl_give isl_space * isl_space_drop_inputs(__isl_take isl_space *space, unsigned first, unsigned n)
__isl_give isl_space * isl_space_unbind_params_insert_domain(__isl_take isl_space *space, __isl_keep isl_multi_id *tuple)
static int name_ok(isl_ctx *ctx, const char *s)
isl_bool isl_space_is_map(__isl_keep isl_space *space)
isl_bool isl_space_has_domain_tuple_id(__isl_keep isl_space *space)
__isl_give isl_space * isl_space_align_params(__isl_take isl_space *space1, __isl_take isl_space *space2)
__isl_give isl_space * isl_space_cow(__isl_take isl_space *space)
isl_stat isl_space_check_wrapped_tuple_is_equal(__isl_keep isl_space *space1, enum isl_dim_type outer, enum isl_dim_type inner, __isl_keep isl_space *space2, enum isl_dim_type type2)
static __isl_give isl_space * isl_space_insert_domain(__isl_take isl_space *space, __isl_take isl_space *domain)
__isl_give isl_space * isl_space_map_from_domain_and_range(__isl_take isl_space *domain, __isl_take isl_space *range)
__isl_give isl_space * isl_space_set_dim_id(__isl_take isl_space *space, enum isl_dim_type type, unsigned pos, __isl_take isl_id *id)
__isl_give isl_space * isl_space_set_tuple_name(__isl_take isl_space *space, enum isl_dim_type type, const char *s)
isl_stat isl_space_check_named_params(__isl_keep isl_space *space)
isl_bool isl_space_has_named_params(__isl_keep isl_space *space)
__isl_keep const char * isl_space_get_dim_name(__isl_keep isl_space *space, enum isl_dim_type type, unsigned pos)
__isl_give isl_space * isl_space_reset_dim_id(__isl_take isl_space *space, enum isl_dim_type type, unsigned pos)
static isl_bool match(__isl_keep isl_space *space1, enum isl_dim_type type1, __isl_keep isl_space *space2, enum isl_dim_type type2)
isl_bool isl_space_has_range_tuple_id(__isl_keep isl_space *space)
static __isl_keep isl_id * tuple_id(__isl_keep isl_space *space, enum isl_dim_type type)
__isl_give isl_space * isl_space_join(__isl_take isl_space *left, __isl_take isl_space *right)
__isl_give isl_space * isl_space_domain_factor_domain(__isl_take isl_space *space)
__isl_give isl_space * isl_space_range_wrapped_domain(__isl_take isl_space *space)
__isl_give isl_space * isl_space_uncurry(__isl_take isl_space *space)
static isl_stat check_fresh_params(__isl_keep isl_space *space, __isl_keep isl_multi_id *tuple)
isl_bool isl_space_is_params(__isl_keep isl_space *space)
__isl_keep const char * isl_space_get_tuple_name(__isl_keep isl_space *space, enum isl_dim_type type)
isl_bool isl_space_is_range(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
__isl_give isl_space * isl_space_set_alloc(isl_ctx *ctx, unsigned nparam, unsigned dim)
static __isl_give isl_space * set_factor_range(__isl_take isl_space *space)
__isl_give isl_space * isl_space_map_from_set(__isl_take isl_space *space)
static __isl_give isl_space * isl_space_restore_nested(__isl_take isl_space *space, int pos, __isl_take isl_space *nested)
__isl_give isl_space * isl_space_reset(__isl_take isl_space *space, enum isl_dim_type type)
__isl_give isl_space * isl_space_bind_map_domain(__isl_take isl_space *space, __isl_keep isl_multi_id *tuple)
isl_bool isl_space_has_tuple_name(__isl_keep isl_space *space, enum isl_dim_type type)
static int space_can_have_id(__isl_keep isl_space *space, enum isl_dim_type type)
isl_bool isl_space_can_curry(__isl_keep isl_space *space)
__isl_give isl_space * isl_space_lift(__isl_take isl_space *space, unsigned n_local)
__isl_give isl_space * isl_space_domain_product(__isl_take isl_space *left, __isl_take isl_space *right)
static void get_ids(__isl_keep isl_space *space, enum isl_dim_type type, unsigned first, unsigned n, __isl_keep isl_id **ids)
int isl_space_find_dim_by_id(__isl_keep isl_space *space, enum isl_dim_type type, __isl_keep isl_id *id)
__isl_give isl_space * isl_space_drop_all_params(__isl_take isl_space *space)
isl_bool isl_space_has_dim_id(__isl_keep isl_space *space, enum isl_dim_type type, unsigned pos)
static __isl_give isl_space * mark_as_params(isl_space *space)
static int valid_dim_type(enum isl_dim_type type)
uint32_t isl_space_get_tuple_domain_hash(__isl_keep isl_space *space)
static uint32_t isl_hash_tuples(uint32_t hash, __isl_keep isl_space *space)
isl_bool isl_space_is_range_internal(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
__isl_give isl_space * isl_space_set_range_tuple_id(__isl_take isl_space *space, __isl_take isl_id *id)
static uint32_t isl_hash_tuples_domain(uint32_t hash, __isl_keep isl_space *space)
__isl_give isl_space * isl_space_copy_ids_if_unset(__isl_take isl_space *dst, enum isl_dim_type dst_type, __isl_keep isl_space *src, enum isl_dim_type src_type)
__isl_give isl_space * isl_space_range_factor_domain(__isl_take isl_space *space)
isl_bool isl_space_has_equal_ids(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
__isl_give isl_space * isl_space_drop_dims(__isl_take isl_space *space, enum isl_dim_type type, unsigned first, unsigned num)
__isl_give isl_id * isl_space_get_dim_id(__isl_keep isl_space *space, enum isl_dim_type type, unsigned pos)
__isl_give isl_space * isl_space_range_product(__isl_take isl_space *left, __isl_take isl_space *right)
isl_stat isl_space_check_range_is_wrapping(__isl_keep isl_space *space)
__isl_give isl_space * isl_space_domain_map(__isl_take isl_space *space)
__isl_give isl_space * isl_space_zip(__isl_take isl_space *space)
__isl_give isl_space * isl_space_underlying(__isl_take isl_space *space, unsigned n_div)
isl_size isl_space_dim(__isl_keep isl_space *space, enum isl_dim_type type)
static isl_stat check_match(__isl_keep isl_space *space, isl_bool match)
__isl_give isl_space * isl_space_domain(__isl_take isl_space *space)
isl_stat isl_space_check_domain_tuples(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
__isl_give isl_space * isl_space_replace_params(__isl_take isl_space *dst, __isl_keep isl_space *src)
__isl_give isl_space * isl_space_flatten_range(__isl_take isl_space *space)
static isl_stat isl_space_check_is_map(__isl_keep isl_space *space)
static __isl_give isl_space * space_extend(__isl_take isl_space *space, unsigned nparam, unsigned n_in, unsigned n_out)
static __isl_give isl_space * set_ids(__isl_take isl_space *space, enum isl_dim_type type, unsigned first, unsigned n, __isl_take isl_id **ids)
isl_bool isl_space_is_set(__isl_keep isl_space *space)
isl_bool isl_space_wrapped_tuple_is_equal(__isl_keep isl_space *space1, enum isl_dim_type outer, enum isl_dim_type inner, __isl_keep isl_space *space2, enum isl_dim_type type2)
__isl_give isl_space * isl_space_extend(__isl_take isl_space *space, unsigned nparam, unsigned n_in, unsigned n_out)
__isl_give isl_space * isl_space_unwrap(__isl_take isl_space *space)
__isl_give isl_space * isl_space_drop_outputs(__isl_take isl_space *space, unsigned first, unsigned n)
__isl_give isl_space * isl_space_flatten_domain(__isl_take isl_space *space)
isl_bool isl_space_tuple_is_equal(__isl_keep isl_space *space1, enum isl_dim_type type1, __isl_keep isl_space *space2, enum isl_dim_type type2)
isl_bool isl_space_can_zip(__isl_keep isl_space *space)
isl_bool isl_space_is_equal(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
isl_stat isl_space_check_domain_wrapped_domain_tuples(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
__isl_give isl_space * isl_space_domain_factor_range(__isl_take isl_space *space)
__isl_give isl_space * isl_space_add_param_id(__isl_take isl_space *space, __isl_take isl_id *id)
__isl_give isl_space * isl_space_set_dim_name(__isl_take isl_space *space, enum isl_dim_type type, unsigned pos, const char *s)
isl_stat isl_space_check_equal_params(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
isl_bool isl_space_has_equal_tuples(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
isl_bool isl_space_can_uncurry(__isl_keep isl_space *space)
__isl_give isl_space * isl_space_reset_tuple_id(__isl_take isl_space *space, enum isl_dim_type type)
static __isl_keep isl_space * nested(__isl_keep isl_space *space, enum isl_dim_type type)
static isl_size global_pos(__isl_keep isl_space *space, enum isl_dim_type type, unsigned pos)
__isl_give isl_space * isl_space_wrap(__isl_take isl_space *space)
static __isl_keep isl_id * get_id(__isl_keep isl_space *space, enum isl_dim_type type, unsigned pos)
unsigned isl_space_offset(__isl_keep isl_space *space, enum isl_dim_type type)
static __isl_give isl_space * mark_as_set(__isl_take isl_space *space)
__isl_give isl_space * isl_space_factor_range(__isl_take isl_space *space)
__isl_give isl_space * isl_space_unit(isl_ctx *ctx)
isl_bool isl_space_may_be_set(__isl_keep isl_space *space)
__isl_give isl_space * isl_space_alloc(isl_ctx *ctx, unsigned nparam, unsigned n_in, unsigned n_out)
isl_stat isl_space_check_equal_tuples(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
__isl_give isl_space * isl_space_add_named_tuple_id_ui(__isl_take isl_space *space, __isl_take isl_id *tuple_id, unsigned dim)
__isl_give isl_space * isl_space_set_domain_tuple_id(__isl_take isl_space *space, __isl_take isl_id *id)
__isl_give isl_space * isl_space_add_unnamed_tuple_ui(__isl_take isl_space *space, unsigned dim)
__isl_give isl_space * isl_space_reset_user(__isl_take isl_space *space)
isl_bool isl_space_has_domain_tuples(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
isl_bool isl_space_domain_is_wrapping(__isl_keep isl_space *space)
__isl_give isl_space * isl_space_product(__isl_take isl_space *left, __isl_take isl_space *right)
isl_bool isl_space_can_range_curry(__isl_keep isl_space *space)
__isl_give isl_space * isl_space_range_reverse(__isl_take isl_space *space)
__isl_give isl_space * isl_space_range_wrapped_range(__isl_take isl_space *space)
isl_bool isl_space_is_named_or_nested(__isl_keep isl_space *space, enum isl_dim_type type)
__isl_give isl_space * isl_space_move_dims(__isl_take isl_space *space, enum isl_dim_type dst_type, unsigned dst_pos, enum isl_dim_type src_type, unsigned src_pos, unsigned n)
static __isl_give isl_space * set_factor_domain(__isl_take isl_space *space)
__isl_give isl_space * isl_space_range(__isl_take isl_space *space)
static uint32_t isl_hash_params(uint32_t hash, __isl_keep isl_space *space)
isl_bool isl_space_has_range_tuples(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
uint32_t isl_space_get_tuple_hash(__isl_keep isl_space *space)
int isl_space_find_dim_by_name(__isl_keep isl_space *space, enum isl_dim_type type, const char *name)
isl_stat isl_space_check_domain_is_wrapping(__isl_keep isl_space *space)
__isl_give isl_space * isl_space_add_dims(__isl_take isl_space *space, enum isl_dim_type type, unsigned n)
__isl_give isl_space * isl_space_params_alloc(isl_ctx *ctx, unsigned nparam)
isl_bool isl_space_is_domain(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
__isl_give isl_space * isl_space_curry(__isl_take isl_space *space)
isl_bool isl_space_is_domain_internal(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
__isl_give isl_id * isl_space_get_range_tuple_id(__isl_keep isl_space *space)
int isl_space_cmp(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
isl_bool isl_space_is_product(__isl_keep isl_space *space)
isl_stat isl_space_check_range(__isl_keep isl_space *space, enum isl_dim_type type, unsigned first, unsigned n)
static bool is_equal(const T &a, const T &b)
static Signature range_factor_domain
static Signature range_factor_range