25 return space ? space->ctx : NULL;
29 unsigned nparam,
unsigned n_in,
unsigned n_out)
74 if (space->n_in != 0 || space->nested[0])
105 if (is_params < 0 || is_set < 0)
107 if (is_params || !is_set)
189 unsigned nparam,
unsigned dim)
215 if (space->n_in != 0 || space->nested[0] ||
216 space->n_out != 0 || space->nested[1])
252 return pos + space->nparam;
254 return pos + space->nparam + space->n_in;
272 if (dim <= space->n_id)
284 for (i = space->n_id; i < dim; ++i)
285 space->ids[i] = NULL;
307 if (gpos >= space->n_id) {
315 space->ids[gpos] =
id;
332 if (gpos >= space->n_id)
334 return space->ids[gpos];
344 if (!space->nested[
pos])
346 "no nested space",
return NULL);
347 return space->nested[
pos];
355 case isl_dim_out:
return space->nparam + space->n_in;
367 return space->nparam + space->n_in + space->n_out;
376 return n(space,
type);
391 "only input, output and set tuples "
414 for (i = 0; i <
n(src, src_type); ++i) {
415 id =
get_id(src, src_type, i);
432 space->nparam, space->n_in, space->n_out);
435 if (space->tuple_id[0] &&
438 if (space->tuple_id[1] &&
441 if (space->nested[0] &&
444 if (space->nested[1] &&
485 if (--space->ref > 0)
494 for (i = 0; i < space->n_id; ++i)
548 space->nested[
pos] = NULL;
591 "parameter spaces don't have tuple ids",
return 0);
594 "set spaces can only have a set id",
return 0);
597 "only input, output and set tuples can have ids",
643 "tuple has no id",
return NULL);
677 "only input, output and set tuples can have names",
720 "only input, output and set tuples can have names",
747 for (i = 0; i < 2; ++i) {
748 if (!space->nested[i])
753 if (!space->nested[i])
781 for (i = 0; i < 2; ++i) {
782 if (!space->nested[i])
787 if (!space->nested[i])
814 "dim has no id",
return NULL);
861 return id ?
id->name : NULL;
900 return id ?
id->name : NULL;
912 if (
n < 0 ||
offset < 0 || !
id)
915 for (i = 0; i <
n &&
offset + i < space->n_id; ++i)
916 if (space->ids[
offset + i] ==
id)
934 for (i = 0; i <
n &&
offset + i < space->n_id; ++i) {
936 if (
id &&
id->name && !strcmp(
id->name,
name))
958 for (i = 0; i < space->nparam && i < space->n_id; ++i) {
972 for (i = 0; i < 2; ++i) {
973 if (!space->tuple_id[i])
983 space->tuple_id[i] =
id;
988 for (i = 0; i < 2; ++i) {
991 if (!space->nested[i])
1009 return space->tuple_id[0];
1011 return space->tuple_id[1];
1032 if (!space1 || !space2)
1034 if (space1 == space2)
1087 if (!space1 || !space2)
1090 if (space1 == space2 && type1 == type2)
1093 if (
n(space1, type1) !=
n(space2, type2))
1099 if (id1 && id1 != id2)
1101 nested1 =
nested(space1, type1);
1102 nested2 =
nested(space2, type2);
1103 if (!nested1 ^ !nested2)
1124 "only input, output and set tuples "
1151 if (!space1 || !space2)
1154 if (space1 == space2 && type1 == type2)
1161 if (!space1->ids && !space2->ids)
1164 for (i = 0; i <
n(space1, type1); ++i) {
1165 if (
get_id(space1, type1, i) !=
get_id(space2, type2, i))
1196 return match(space1, type1, space2, type2);
1204 for (i = 0; i <
n ; ++i)
1209 unsigned nparam,
unsigned n_in,
unsigned n_out)
1215 if (space->nparam == nparam &&
1216 space->n_in == n_in && space->n_out == n_out)
1219 isl_assert(space->ctx, space->nparam <= nparam,
goto error);
1220 isl_assert(space->ctx, space->n_in <= n_in,
goto error);
1221 isl_assert(space->ctx, space->n_out <= n_out,
goto error);
1229 n = nparam + n_in + n_out;
1230 if (
n < nparam ||
n < n_in ||
n < n_out)
1232 "overflow in total number of dimensions",
1240 ids + nparam + n_in);
1243 space->n_id = nparam + n_in + n_out;
1245 space->nparam = nparam;
1247 space->n_out = n_out;
1257 unsigned nparam,
unsigned n_in,
unsigned n_out)
1271 space->nparam +
n, space->n_in, space->n_out);
1272 if (space && space->nested[0] &&
1276 if (space && space->nested[1] &&
1283 space->nparam, space->n_in +
n, space->n_out);
1286 space->nparam, space->n_in, space->n_out +
n);
1289 "cannot add dimensions of specified type",
goto error);
1338#define TYPE isl_space
1359 "cannot insert dimensions of specified type",
1374 space->nparam + space->n_in + space->n_out +
n);
1383 get_ids(space,
t, 0, s[
t - o], ids + off);
1390 off += s[
t - o] -
pos;
1395 space->n_id = space->nparam + space->n_in + space->n_out +
n;
1406 if (space && space->nested[0] &&
1410 if (space && space->nested[1] &&
1438 if (dst_type == src_type && dst_pos == src_pos)
1441 isl_assert(space->ctx, dst_type != src_type,
goto error);
1453 space->nparam + space->n_in + space->n_out);
1461 if (
t == dst_type) {
1462 get_ids(space,
t, 0, dst_pos, ids + off);
1464 get_ids(space, src_type, src_pos,
n, ids + off);
1466 get_ids(space,
t, dst_pos, s[
t - o] - dst_pos,
1468 off += s[
t - o] - dst_pos;
1469 }
else if (
t == src_type) {
1470 get_ids(space,
t, 0, src_pos, ids + off);
1473 s[
t - o] - src_pos -
n, ids + off);
1474 off += s[
t - o] - src_pos -
n;
1476 get_ids(space,
t, 0, s[
t - o], ids + off);
1482 space->n_id = space->nparam + space->n_in + space->n_out;
1502 for (i = 0; i < 2; ++i) {
1505 if (!space->nested[i])
1550 left->nparam, left->n_in, right->n_out);
1564 if (space && left->
nested[0] &&
1567 if (space && right->
nested[1] &&
1591 if (!left || !right)
1597 "expecting either two set spaces or two map spaces",
1633 "ranges need to match",
goto error);
1658 "domains need to match",
goto error);
1684 nested = space->nested[0];
1690 if (
nested->tuple_id[0]) {
1692 if (!
domain->tuple_id[0])
1720 nested = space->nested[0];
1725 if (
nested->tuple_id[1]) {
1727 if (!
range->tuple_id[0])
1732 if (!
range->nested[0])
1757 nested = space->nested[1];
1763 if (
nested->tuple_id[0]) {
1765 if (!
domain->tuple_id[1])
1833 nested = space->nested[1];
1838 if (
nested->tuple_id[1]) {
1840 if (!
range->tuple_id[1])
1845 if (!
range->nested[1])
1941 n_id = space->nparam + space->n_out + space->n_out;
1942 if (n_id > 0 && space->ids) {
1948 ids + space->nparam);
1950 space->n_in = space->n_out;
1958 space->tuple_id[0] =
isl_id_copy(space->tuple_id[1]);
1974 "domain is not a set space",
goto error);
1977 "range is not a set space",
goto error);
1991 for (i = 0; i <
n ; ++i)
1992 space =
set_id(space,
type, first + i, ids[i]);
2015 id = space->tuple_id[0];
2016 space->tuple_id[0] = space->tuple_id[1];
2017 space->tuple_id[1] =
id;
2019 nested = space->nested[0];
2020 space->nested[0] = space->nested[1];
2021 space->nested[1] =
nested;
2024 int n_id = space->n_in + space->n_out;
2033 space->n_in = space->n_out;
2039 ids + space->n_out);
2154 "cannot drop dimensions of specified type",
goto error);
2165 for (i = 0; i < num; ++i)
2167 for (i = first+num; i <
n(space,
type); ++i)
2189 if (space && space->nested[0] &&
2193 if (space && space->nested[1] &&
2205 unsigned first,
unsigned n)
2213 unsigned first,
unsigned n)
2248 "not a set space",
goto error);
2272 "not a set space",
goto error);
2313 if (n_in < 0 || n_out < 0)
2327 "not a parameter space",
goto error);
2349 if (is_params < 0 || is_set < 0)
2351 if (!is_params && !is_set)
2353 "cannot add tuple to map space",
2384 n = isl_multi_id_size(
tuple);
2387 for (i = 0; i <
n; ++i) {
2391 id = isl_multi_id_get_at(
tuple, i);
2414 n = isl_multi_id_size(
tuple);
2415 if (first < 0 ||
n < 0)
2418 for (i = 0; i <
n; ++i) {
2421 id = isl_multi_id_get_at(
tuple, i);
2442 tuple_space = isl_multi_id_peek_space(
tuple);
2465 tuple_space = isl_multi_id_peek_space(
tuple);
2489 tuple_space = isl_multi_id_peek_space(
tuple);
2514 if (is_params < 0) {
2517 }
else if (is_params) {
2547 n = isl_multi_id_size(
tuple);
2548 if (!space ||
n < 0)
2550 for (i =
n - 1; i >= 0; --i) {
2554 id = isl_multi_id_get_id(
tuple, i);
2563 tuple_space = isl_multi_id_get_space(
tuple);
2564 for (i = 0; i <
n; ++i) {
2567 id = isl_multi_id_get_id(
tuple, i);
2583 if (n_div == 0 && is_set &&
2584 space->nparam == 0 && space->n_in == 0 && space->n_id == 0)
2589 space->n_out += space->nparam + space->n_in + n_div;
2593 for (i = 0; i < space->n_id; ++i)
2610 if (!space1 || !space2)
2612 if (space1 == space2)
2632 if (is_set < 0 || !is_set)
2650 if (is_set < 0 || !is_set)
2698 if (!space1 || !space2)
2701 if (equal_params < 0 || !equal_params)
2702 return equal_params;
2728 if (!space1 || !space2)
2731 if (equal_params < 0 || !equal_params)
2732 return equal_params;
2760 for (i = 0; i < space->nparam; ++i) {
2921 if (is_product < 0 || !is_product)
2934 space->nparam, space->n_in + space->n_out);
2943 wrap->nested[1] = space;
3027 if (!space->nested[0] && !space->nested[1])
3030 if (space->nested[0])
3032 if (space && space->nested[1])
3042 if (!space->nested[0])
3052 if (!space->nested[1])
3068 if (equal_params < 0)
3077 if (dst_dim < 0 || src_dim < 0)
3086 for (i = 0; i <= 1; ++i) {
3089 if (!dst->nested[i])
3121 for (i = 0; i <
n; ++i) {
3186 isl_space *dom_dom, *dom_ran, *ran_dom, *ran_ran;
3232 "space cannot be curried",
goto error);
3258 if (can < 0 || !can)
3275 "space range cannot be curried",
3306 "space cannot be uncurried",
3326 if (space->nparam == 0)
3331 if (off + space->nparam > space->n_id)
3333 for (i = 0; i < space->nparam; ++i)
3334 if (!space->ids[off + i])
3400 if (model->nested[1]) {
3406 if (n_nested < 0 || n_space < 0)
3408 if (n_nested > n_space)
3410 n_space, n_nested - n_space);
3413 space->nested[1] =
nested;
3436 if (dim1 < 0 || dim2 < 0)
3447 if (!nested1 != !nested2)
3448 return !nested1 - !nested2;
3465 if (space1 == space2)
3482 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_size isl_space_offset(__isl_keep isl_space *space, enum isl_dim_type type)
__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)
__isl_give isl_space * isl_space_wrapped_reverse(__isl_take isl_space *space)
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)
__isl_give isl_space * isl_space_reverse_wrapped(__isl_take isl_space *space, enum isl_dim_type type)
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_domain_reverse(__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)
static __isl_give isl_space * mark_as_set(__isl_take isl_space *space)
isl_stat isl_space_check_is_wrapping(__isl_keep 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_stat isl_space_check_is_proper_set(__isl_keep isl_space *space)
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)
__isl_null isl_space * isl_space_free(__isl_take isl_space *space)
__isl_give isl_space * isl_space_insert_dims(__isl_take isl_space *space, enum isl_dim_type type, unsigned pos, unsigned n)
__isl_give isl_space * isl_space_copy(__isl_keep isl_space *space)
__isl_give isl_space * isl_space_drop_dims(__isl_take isl_space *space, enum isl_dim_type type, unsigned first, unsigned num)
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_give isl_space * isl_space_add_dims(__isl_take isl_space *space, enum isl_dim_type type, unsigned n)
static Signature range_factor_domain
static Signature range_factor_range