add isl_pw_qpolynomial_reset_dim
authorSven Verdoolaege <skimo@kotnet.org>
Thu, 29 Jul 2010 14:24:24 +0000 (16:24 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Sat, 31 Jul 2010 09:17:28 +0000 (11:17 +0200)
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
include/isl_polynomial.h
isl_pw_templ.c

index 4a8fd90..0866efe 100644 (file)
@@ -122,6 +122,8 @@ int isl_pw_qpolynomial_is_zero(__isl_keep isl_pw_qpolynomial *pwqp);
 
 __isl_give isl_dim *isl_pw_qpolynomial_get_dim(
        __isl_keep isl_pw_qpolynomial *pwqp);
+__isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_reset_dim(
+       __isl_take isl_pw_qpolynomial *pwqp, __isl_take isl_dim *dim);
 unsigned isl_pw_qpolynomial_dim(__isl_keep isl_pw_qpolynomial *pwqp,
        enum isl_dim_type type);
 int isl_pw_qpolynomial_involves_dims(__isl_keep isl_pw_qpolynomial *pwqp,
@@ -250,6 +252,8 @@ int isl_pw_qpolynomial_fold_is_zero(__isl_keep isl_pw_qpolynomial_fold *pwf);
 
 __isl_give isl_dim *isl_pw_qpolynomial_fold_get_dim(
        __isl_keep isl_pw_qpolynomial_fold *pwf);
+__isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_reset_dim(
+       __isl_take isl_pw_qpolynomial_fold *pwf, __isl_take isl_dim *dim);
 unsigned isl_pw_qpolynomial_fold_dim(__isl_keep isl_pw_qpolynomial_fold *pwf,
        enum isl_dim_type type);
 
index 30b5dfa..7ff698b 100644 (file)
@@ -555,6 +555,30 @@ __isl_give isl_dim *FN(PW,get_dim)(__isl_keep PW *pw)
        return pw ? isl_dim_copy(pw->dim) : NULL;
 }
 
+__isl_give PW *FN(PW,reset_dim)(__isl_take PW *pw, __isl_take isl_dim *dim)
+{
+       int i;
+
+       pw = FN(PW,cow)(pw);
+       if (!pw || !dim)
+               goto error;
+
+       for (i = 0; i < pw->n; ++i) {
+               pw->p[i].set = isl_set_reset_dim(pw->p[i].set,
+                                                isl_dim_copy(dim));
+               if (!pw->p[i].set)
+                       goto error;
+       }
+       isl_dim_free(pw->dim);
+       pw->dim = dim;
+
+       return pw;
+error:
+       isl_dim_free(dim);
+       FN(PW,free)(pw);
+       return NULL;
+}
+
 __isl_give PW *FN(PW,morph)(__isl_take PW *pw, __isl_take isl_morph *morph)
 {
        int i;