added to obtain the domain space. Some of the constructors still
take a domain space and have therefore been renamed.
+=item * The functions C<isl_equality_alloc> and C<isl_inequality_alloc>
+now take an C<isl_local_space> instead of an C<isl_space>.
+An C<isl_local_space> can be created from an C<isl_space>
+using C<isl_local_space_from_space>.
+
=back
=head1 Installation
#include <isl/constraint.h>
__isl_give isl_constraint *isl_equality_alloc(
- __isl_take isl_space *space);
+ __isl_take isl_local_space *ls);
__isl_give isl_constraint *isl_inequality_alloc(
- __isl_take isl_space *space);
+ __isl_take isl_local_space *ls);
__isl_give isl_constraint *isl_constraint_set_constant(
__isl_take isl_constraint *constraint, isl_int v);
__isl_give isl_constraint *isl_constraint_set_constant_si(
between 10 and 42, you would use the following code.
isl_space *space;
+ isl_local_space *ls;
isl_constraint *c;
isl_basic_set *bset;
space = isl_space_set_alloc(ctx, 0, 2);
bset = isl_basic_set_universe(isl_space_copy(space));
+ ls = isl_local_space_from_space(space);
- c = isl_equality_alloc(isl_space_copy(space));
+ c = isl_equality_alloc(isl_local_space_copy(ls));
c = isl_constraint_set_coefficient_si(c, isl_dim_set, 0, -1);
c = isl_constraint_set_coefficient_si(c, isl_dim_set, 1, 2);
bset = isl_basic_set_add_constraint(bset, c);
- c = isl_inequality_alloc(isl_space_copy(space));
+ c = isl_inequality_alloc(isl_local_space_copy(ls));
c = isl_constraint_set_constant_si(c, -10);
c = isl_constraint_set_coefficient_si(c, isl_dim_set, 0, 1);
bset = isl_basic_set_add_constraint(bset, c);
- c = isl_inequality_alloc(space);
+ c = isl_inequality_alloc(ls);
c = isl_constraint_set_constant_si(c, 42);
c = isl_constraint_set_coefficient_si(c, isl_dim_set, 0, -1);
bset = isl_basic_set_add_constraint(bset, c);
}
}
-__isl_give isl_constraint *isl_constraint_alloc(int eq,
+__isl_give isl_constraint *isl_constraint_alloc_vec(int eq,
__isl_take isl_local_space *ls, __isl_take isl_vec *v)
{
isl_constraint *constraint;
return NULL;
}
+__isl_give isl_constraint *isl_constraint_alloc(int eq,
+ __isl_take isl_local_space *ls)
+{
+ isl_ctx *ctx;
+ isl_vec *v;
+
+ if (!ls)
+ return NULL;
+
+ ctx = isl_local_space_get_ctx(ls);
+ v = isl_vec_alloc(ctx, 1 + isl_local_space_dim(ls, isl_dim_all));
+ v = isl_vec_clr(v);
+ return isl_constraint_alloc_vec(eq, ls, v);
+}
+
struct isl_constraint *isl_basic_map_constraint(struct isl_basic_map *bmap,
isl_int **line)
{
if (!v)
goto error;
isl_seq_cpy(v->el, line[0], v->size);
- constraint = isl_constraint_alloc(eq, ls, v);
+ constraint = isl_constraint_alloc_vec(eq, ls, v);
isl_basic_map_free(bmap);
return constraint;
return isl_basic_map_constraint((struct isl_basic_map *)bset, line);
}
-struct isl_constraint *isl_equality_alloc(__isl_take isl_space *dim)
+__isl_give isl_constraint *isl_equality_alloc(__isl_take isl_local_space *ls)
{
- struct isl_basic_map *bmap;
-
- if (!dim)
- return NULL;
-
- bmap = isl_basic_map_alloc_space(dim, 0, 1, 0);
- if (!bmap)
- return NULL;
-
- isl_basic_map_alloc_equality(bmap);
- isl_seq_clr(bmap->eq[0], 1 + isl_basic_map_total_dim(bmap));
- return isl_basic_map_constraint(bmap, &bmap->eq[0]);
+ return isl_constraint_alloc(1, ls);
}
-struct isl_constraint *isl_inequality_alloc(__isl_take isl_space *dim)
+__isl_give isl_constraint *isl_inequality_alloc(__isl_take isl_local_space *ls)
{
- struct isl_basic_map *bmap;
-
- if (!dim)
- return NULL;
-
- bmap = isl_basic_map_alloc_space(dim, 0, 0, 1);
- if (!bmap)
- return NULL;
-
- isl_basic_map_alloc_inequality(bmap);
- isl_seq_clr(bmap->ineq[0], 1 + isl_basic_map_total_dim(bmap));
- return isl_basic_map_constraint(bmap, &bmap->ineq[0]);
+ return isl_constraint_alloc(0, ls);
}
struct isl_constraint *isl_constraint_dup(struct isl_constraint *c)
if (!c)
return NULL;
- return isl_constraint_alloc(c->eq, isl_local_space_copy(c->ls),
+ return isl_constraint_alloc_vec(c->eq, isl_local_space_copy(c->ls),
isl_vec_copy(c->v));
}
{
isl_int v;
isl_space *dim;
+ isl_local_space *ls;
struct isl_basic_set *bset;
struct isl_constraint *c;
isl_int_init(v);
dim = isl_space_set_alloc(ctx, 1, 1);
- bset = isl_basic_set_universe(dim);
+ bset = isl_basic_set_universe(isl_space_copy(dim));
+ ls = isl_local_space_from_space(dim);
- c = isl_inequality_alloc(isl_basic_set_get_space(bset));
+ c = isl_inequality_alloc(isl_local_space_copy(ls));
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
isl_int_set_si(v, 1);
isl_constraint_set_coefficient(c, isl_dim_param, 0, v);
bset = isl_basic_set_add_constraint(bset, c);
- c = isl_inequality_alloc(isl_basic_set_get_space(bset));
+ c = isl_inequality_alloc(isl_local_space_copy(ls));
isl_int_set_si(v, 1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
isl_int_set_si(v, -5);
isl_constraint_set_constant(c, v);
bset = isl_basic_set_add_constraint(bset, c);
+ isl_local_space_free(ls);
isl_basic_set_free(bset);
isl_int_clear(v);
{
isl_int v;
isl_space *dim;
+ isl_local_space *ls;
struct isl_basic_set *bset;
struct isl_constraint *c;
/* test 1 */
dim = isl_space_set_alloc(ctx, 0, 3);
- bset = isl_basic_set_universe(dim);
+ bset = isl_basic_set_universe(isl_space_copy(dim));
+ ls = isl_local_space_from_space(dim);
- c = isl_equality_alloc(isl_basic_set_get_space(bset));
+ c = isl_equality_alloc(isl_local_space_copy(ls));
isl_int_set_si(v, -1);
isl_constraint_set_constant(c, v);
isl_int_set_si(v, 1);
isl_constraint_set_coefficient(c, isl_dim_set, 1, v);
bset = isl_basic_set_add_constraint(bset, c);
- c = isl_equality_alloc(isl_basic_set_get_space(bset));
+ c = isl_equality_alloc(isl_local_space_copy(ls));
isl_int_set_si(v, 1);
isl_constraint_set_constant(c, v);
isl_int_set_si(v, -1);
bset = isl_basic_set_project_out(bset, isl_dim_set, 1, 2);
assert(bset && bset->n_div == 1);
+ isl_local_space_free(ls);
isl_basic_set_free(bset);
/* test 2 */
dim = isl_space_set_alloc(ctx, 0, 3);
- bset = isl_basic_set_universe(dim);
+ bset = isl_basic_set_universe(isl_space_copy(dim));
+ ls = isl_local_space_from_space(dim);
- c = isl_equality_alloc(isl_basic_set_get_space(bset));
+ c = isl_equality_alloc(isl_local_space_copy(ls));
isl_int_set_si(v, 1);
isl_constraint_set_constant(c, v);
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 1, v);
bset = isl_basic_set_add_constraint(bset, c);
- c = isl_equality_alloc(isl_basic_set_get_space(bset));
+ c = isl_equality_alloc(isl_local_space_copy(ls));
isl_int_set_si(v, -1);
isl_constraint_set_constant(c, v);
isl_int_set_si(v, 1);
bset = isl_basic_set_project_out(bset, isl_dim_set, 1, 2);
assert(bset && bset->n_div == 1);
+ isl_local_space_free(ls);
isl_basic_set_free(bset);
/* test 3 */
dim = isl_space_set_alloc(ctx, 0, 3);
- bset = isl_basic_set_universe(dim);
+ bset = isl_basic_set_universe(isl_space_copy(dim));
+ ls = isl_local_space_from_space(dim);
- c = isl_equality_alloc(isl_basic_set_get_space(bset));
+ c = isl_equality_alloc(isl_local_space_copy(ls));
isl_int_set_si(v, 1);
isl_constraint_set_constant(c, v);
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 1, v);
bset = isl_basic_set_add_constraint(bset, c);
- c = isl_equality_alloc(isl_basic_set_get_space(bset));
+ c = isl_equality_alloc(isl_local_space_copy(ls));
isl_int_set_si(v, -3);
isl_constraint_set_constant(c, v);
isl_int_set_si(v, 1);
bset = isl_basic_set_project_out(bset, isl_dim_set, 1, 2);
assert(bset && bset->n_div == 1);
+ isl_local_space_free(ls);
isl_basic_set_free(bset);
/* test 4 */
dim = isl_space_set_alloc(ctx, 0, 3);
- bset = isl_basic_set_universe(dim);
+ bset = isl_basic_set_universe(isl_space_copy(dim));
+ ls = isl_local_space_from_space(dim);
- c = isl_equality_alloc(isl_basic_set_get_space(bset));
+ c = isl_equality_alloc(isl_local_space_copy(ls));
isl_int_set_si(v, 2);
isl_constraint_set_constant(c, v);
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 1, v);
bset = isl_basic_set_add_constraint(bset, c);
- c = isl_equality_alloc(isl_basic_set_get_space(bset));
+ c = isl_equality_alloc(isl_local_space_copy(ls));
isl_int_set_si(v, -1);
isl_constraint_set_constant(c, v);
isl_int_set_si(v, 1);
bset = isl_basic_set_project_out(bset, isl_dim_set, 1, 2);
assert(isl_basic_set_is_empty(bset));
+ isl_local_space_free(ls);
isl_basic_set_free(bset);
/* test 5 */
dim = isl_space_set_alloc(ctx, 0, 3);
- bset = isl_basic_set_universe(dim);
+ bset = isl_basic_set_universe(isl_space_copy(dim));
+ ls = isl_local_space_from_space(dim);
- c = isl_equality_alloc(isl_basic_set_get_space(bset));
+ c = isl_equality_alloc(isl_local_space_copy(ls));
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
isl_int_set_si(v, 3);
isl_constraint_set_coefficient(c, isl_dim_set, 2, v);
bset = isl_basic_set_add_constraint(bset, c);
- c = isl_equality_alloc(isl_basic_set_get_space(bset));
+ c = isl_equality_alloc(isl_local_space_copy(ls));
isl_int_set_si(v, 1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
isl_int_set_si(v, -3);
assert(bset && bset->n_div == 0);
isl_basic_set_free(bset);
+ isl_local_space_free(ls);
/* test 6 */
dim = isl_space_set_alloc(ctx, 0, 3);
- bset = isl_basic_set_universe(dim);
+ bset = isl_basic_set_universe(isl_space_copy(dim));
+ ls = isl_local_space_from_space(dim);
- c = isl_equality_alloc(isl_basic_set_get_space(bset));
+ c = isl_equality_alloc(isl_local_space_copy(ls));
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
isl_int_set_si(v, 6);
isl_constraint_set_coefficient(c, isl_dim_set, 2, v);
bset = isl_basic_set_add_constraint(bset, c);
- c = isl_equality_alloc(isl_basic_set_get_space(bset));
+ c = isl_equality_alloc(isl_local_space_copy(ls));
isl_int_set_si(v, 1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
isl_int_set_si(v, -3);
assert(bset && bset->n_div == 1);
isl_basic_set_free(bset);
+ isl_local_space_free(ls);
/* test 7 */
/* This test is a bit tricky. We set up an equality
* Perhaps we can avoid the introduction of this temporary div.
*/
dim = isl_space_set_alloc(ctx, 0, 4);
- bset = isl_basic_set_universe(dim);
+ bset = isl_basic_set_universe(isl_space_copy(dim));
+ ls = isl_local_space_from_space(dim);
- c = isl_equality_alloc(isl_basic_set_get_space(bset));
+ c = isl_equality_alloc(isl_local_space_copy(ls));
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
isl_int_set_si(v, -3);
/*
assert(bset && bset->n_div == 1);
*/
+ isl_local_space_free(ls);
isl_basic_set_free(bset);
/* test 8 */
dim = isl_space_set_alloc(ctx, 0, 5);
- bset = isl_basic_set_universe(dim);
+ bset = isl_basic_set_universe(isl_space_copy(dim));
+ ls = isl_local_space_from_space(dim);
- c = isl_equality_alloc(isl_basic_set_get_space(bset));
+ c = isl_equality_alloc(isl_local_space_copy(ls));
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
isl_int_set_si(v, -3);
isl_constraint_set_coefficient(c, isl_dim_set, 4, v);
bset = isl_basic_set_add_constraint(bset, c);
- c = isl_equality_alloc(isl_basic_set_get_space(bset));
+ c = isl_equality_alloc(isl_local_space_copy(ls));
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
isl_int_set_si(v, 1);
/*
assert(bset && bset->n_div == 1);
*/
+ isl_local_space_free(ls);
isl_basic_set_free(bset);
/* test 9 */
dim = isl_space_set_alloc(ctx, 0, 4);
- bset = isl_basic_set_universe(dim);
+ bset = isl_basic_set_universe(isl_space_copy(dim));
+ ls = isl_local_space_from_space(dim);
- c = isl_equality_alloc(isl_basic_set_get_space(bset));
+ c = isl_equality_alloc(isl_local_space_copy(ls));
isl_int_set_si(v, 1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 2, v);
bset = isl_basic_set_add_constraint(bset, c);
- c = isl_equality_alloc(isl_basic_set_get_space(bset));
+ c = isl_equality_alloc(isl_local_space_copy(ls));
isl_int_set_si(v, -1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
isl_int_set_si(v, 3);
assert(!isl_basic_set_is_empty(bset));
+ isl_local_space_free(ls);
isl_basic_set_free(bset);
/* test 10 */
dim = isl_space_set_alloc(ctx, 0, 3);
- bset = isl_basic_set_universe(dim);
+ bset = isl_basic_set_universe(isl_space_copy(dim));
+ ls = isl_local_space_from_space(dim);
- c = isl_equality_alloc(isl_basic_set_get_space(bset));
+ c = isl_equality_alloc(isl_local_space_copy(ls));
isl_int_set_si(v, 1);
isl_constraint_set_coefficient(c, isl_dim_set, 0, v);
isl_int_set_si(v, -2);
bset = isl_basic_set_fix_si(bset, isl_dim_set, 0, 2);
+ isl_local_space_free(ls);
isl_basic_set_free(bset);
isl_int_clear(v);