export isl_basic_set_project_out
authorSven Verdoolaege <skimo@purples.(none)>
Sun, 6 Sep 2009 13:33:53 +0000 (15:33 +0200)
committerSven Verdoolaege <skimo@purples.(none)>
Sun, 6 Sep 2009 15:59:28 +0000 (17:59 +0200)
include/isl_set.h
isl_map.c

index b9c5c52..9cb63df 100644 (file)
@@ -183,6 +183,8 @@ struct isl_set *isl_set_fix_dim_si(struct isl_set *set,
                unsigned dim, int value);
 struct isl_set *isl_set_lower_bound_dim(struct isl_set *set,
                unsigned dim, isl_int value);
+struct isl_basic_set *isl_basic_set_project_out(struct isl_basic_set *bset,
+               enum isl_dim_type type, unsigned first, unsigned n);
 struct isl_basic_set *isl_basic_set_remove_dims(struct isl_basic_set *bset,
                unsigned first, unsigned n);
 struct isl_basic_set *isl_basic_set_remove_divs(struct isl_basic_set *bset);
index f4b997e..ee6021e 100644 (file)
--- a/isl_map.c
+++ b/isl_map.c
@@ -1832,8 +1832,8 @@ struct isl_basic_map *isl_basic_map_reverse(struct isl_basic_map *bmap)
 
 /* Turn final n dimensions into existentially quantified variables.
  */
-struct isl_basic_set *isl_basic_set_project_out(
-               struct isl_basic_set *bset, unsigned n, unsigned flags)
+struct isl_basic_set *isl_basic_set_project_out(struct isl_basic_set *bset,
+               enum isl_dim_type type, unsigned first, unsigned n)
 {
        int i;
        size_t row_size;
@@ -1843,7 +1843,8 @@ struct isl_basic_set *isl_basic_set_project_out(
        if (!bset)
                return NULL;
 
-       isl_assert(bset->ctx, n <= isl_basic_set_n_dim(bset), goto error);
+       isl_assert(bset->ctx, type == isl_dim_set, goto error);
+       isl_assert(bset->ctx, first + n == isl_basic_set_n_dim(bset), goto error);
 
        if (n == 0)
                return bset;
@@ -2552,12 +2553,14 @@ struct isl_set *isl_set_to_underlying_set(struct isl_set *set)
 struct isl_basic_set *isl_basic_map_domain(struct isl_basic_map *bmap)
 {
        struct isl_basic_set *domain;
+       unsigned n_in;
        unsigned n_out;
        if (!bmap)
                return NULL;
+       n_in = isl_basic_map_n_in(bmap);
        n_out = isl_basic_map_n_out(bmap);
        domain = isl_basic_set_from_basic_map(bmap);
-       return isl_basic_set_project_out(domain, n_out, 0);
+       return isl_basic_set_project_out(domain, isl_dim_set, n_in, n_out);
 }
 
 struct isl_basic_set *isl_basic_map_range(struct isl_basic_map *bmap)
@@ -3673,7 +3676,7 @@ struct isl_basic_set *isl_basic_map_deltas(struct isl_basic_map *bmap)
                isl_int_set_si(bset->eq[j][1+nparam+dim+i], 1);
                isl_int_set_si(bset->eq[j][1+nparam+2*dim+i], -1);
        }
-       return isl_basic_set_project_out(bset, 2*dim, 0);
+       return isl_basic_set_project_out(bset, isl_dim_set, dim, 2*dim);
 error:
        isl_basic_map_free(bmap);
        return NULL;