struct isl_basic_set *isl_basic_set_positive_orthant(struct isl_dim *dims);
void isl_basic_set_print_internal(__isl_keep isl_basic_set *bset,
FILE *out, int indent);
-struct isl_basic_set *isl_basic_set_swap_vars(
- struct isl_basic_set *bset, unsigned n);
__isl_give isl_basic_set *isl_basic_set_intersect(
__isl_take isl_basic_set *bset1,
__isl_take isl_basic_set *bset2);
enum isl_dim_type type, unsigned first, unsigned n);
void isl_set_print_internal(__isl_keep isl_set *set, FILE *out, int indent);
-struct isl_set *isl_set_swap_vars(struct isl_set *set, unsigned n);
int isl_set_fast_is_empty(__isl_keep isl_set *set);
int isl_set_fast_is_universe(__isl_keep isl_set *set);
int isl_set_is_empty(__isl_keep isl_set *set);
isl_seq_cpy(a, blk.data, b_len+a_len);
}
-struct isl_basic_set *isl_basic_set_swap_vars(
- struct isl_basic_set *bset, unsigned n)
+static __isl_give isl_basic_map *isl_basic_map_swap_vars(
+ __isl_take isl_basic_map *bmap, unsigned pos, unsigned n1, unsigned n2)
{
int i;
struct isl_blk blk;
- unsigned dim;
- unsigned nparam;
- if (!bset)
+ if (!bmap)
goto error;
- nparam = isl_basic_set_n_param(bset);
- dim = isl_basic_set_n_dim(bset);
- isl_assert(bset->ctx, n <= dim, goto error);
+ isl_assert(bmap->ctx,
+ pos + n1 + n2 <= 1 + isl_basic_map_total_dim(bmap), goto error);
- if (n == dim)
- return bset;
+ if (n1 == 0 || n2 == 0)
+ return bmap;
- bset = isl_basic_set_cow(bset);
- if (!bset)
+ bmap = isl_basic_map_cow(bmap);
+ if (!bmap)
return NULL;
- blk = isl_blk_alloc(bset->ctx, dim);
+ blk = isl_blk_alloc(bmap->ctx, n1 + n2);
if (isl_blk_is_error(blk))
goto error;
- for (i = 0; i < bset->n_eq; ++i)
+ for (i = 0; i < bmap->n_eq; ++i)
swap_vars(blk,
- bset->eq[i]+1+nparam, n, dim - n);
+ bmap->eq[i] + pos, n1, n2);
- for (i = 0; i < bset->n_ineq; ++i)
+ for (i = 0; i < bmap->n_ineq; ++i)
swap_vars(blk,
- bset->ineq[i]+1+nparam, n, dim - n);
+ bmap->ineq[i] + pos, n1, n2);
- for (i = 0; i < bset->n_div; ++i)
+ for (i = 0; i < bmap->n_div; ++i)
swap_vars(blk,
- bset->div[i]+1+1+nparam, n, dim - n);
+ bmap->div[i]+1 + pos, n1, n2);
- isl_blk_free(bset->ctx, blk);
+ isl_blk_free(bmap->ctx, blk);
- ISL_F_CLR(bset, ISL_BASIC_SET_NORMALIZED);
- bset = isl_basic_set_gauss(bset, NULL);
- return isl_basic_set_finalize(bset);
+ ISL_F_CLR(bmap, ISL_BASIC_SET_NORMALIZED);
+ bmap = isl_basic_map_gauss(bmap, NULL);
+ return isl_basic_map_finalize(bmap);
+error:
+ isl_basic_map_free(bmap);
+ return NULL;
+}
+
+static __isl_give isl_basic_set *isl_basic_set_swap_vars(
+ __isl_take isl_basic_set *bset, unsigned n)
+{
+ unsigned dim;
+ unsigned nparam;
+
+ nparam = isl_basic_set_n_param(bset);
+ dim = isl_basic_set_n_dim(bset);
+ isl_assert(bset->ctx, n <= dim, goto error);
+
+ return isl_basic_map_swap_vars(bset, 1 + nparam, n, dim - n);
error:
isl_basic_set_free(bset);
return NULL;
}
-struct isl_set *isl_set_swap_vars(struct isl_set *set, unsigned n)
+static __isl_give isl_set *isl_set_swap_vars(__isl_take isl_set *set,
+ unsigned n)
{
int i;
set = isl_set_cow(set);