isl_arg_parse: avoid duplicate newline in help output
[platform/upstream/isl.git] / isl_constraint.c
index 6af5972..760f9e5 100644 (file)
@@ -10,8 +10,9 @@
  * ZAC des vignes, 4 rue Jacques Monod, 91893 Orsay, France 
  */
 
-#include <isl_constraint.h>
-#include "isl_seq.h"
+#include <isl/constraint.h>
+#include <isl_dim_private.h>
+#include <isl/seq.h>
 #include "isl_map_private.h"
 
 static unsigned n(struct isl_constraint *c, enum isl_dim_type type)
@@ -31,6 +32,13 @@ static unsigned offset(struct isl_constraint *c, enum isl_dim_type type)
        }
 }
 
+static unsigned basic_map_offset(__isl_keep isl_basic_map *bmap,
+                                                       enum isl_dim_type type)
+{
+       return type == isl_dim_div ? 1 + isl_dim_total(bmap->dim)
+                                  : 1 + isl_dim_offset(bmap->dim, type);
+}
+
 static unsigned basic_set_offset(struct isl_basic_set *bset,
                                                        enum isl_dim_type type)
 {
@@ -306,6 +314,13 @@ int isl_constraint_dim(struct isl_constraint *constraint,
        return n(constraint, type);
 }
 
+const char *isl_constraint_get_dim_name(__isl_keep isl_constraint *constraint,
+       enum isl_dim_type type, unsigned pos)
+{
+       return constraint ?
+           isl_basic_map_get_dim_name(constraint->bmap, type, pos) : NULL;
+}
+
 void isl_constraint_get_constant(struct isl_constraint *constraint, isl_int *v)
 {
        if (!constraint)
@@ -471,30 +486,38 @@ error:
        return NULL;
 }
 
-int isl_basic_set_has_defining_equality(
-       struct isl_basic_set *bset, enum isl_dim_type type, int pos,
-       struct isl_constraint **c)
+int isl_basic_map_has_defining_equality(
+       __isl_keep isl_basic_map *bmap, enum isl_dim_type type, int pos,
+       __isl_give isl_constraint **c)
 {
        int i;
        unsigned offset;
        unsigned total;
 
-       if (!bset)
+       if (!bmap)
                return -1;
-       offset = basic_set_offset(bset, type);
-       total = isl_basic_set_total_dim(bset);
-       isl_assert(bset->ctx, pos < isl_basic_set_dim(bset, type), return -1);
-       for (i = 0; i < bset->n_eq; ++i)
-               if (!isl_int_is_zero(bset->eq[i][offset + pos]) &&
-                   isl_seq_first_non_zero(bset->eq[i]+offset+pos+1,
+       offset = basic_map_offset(bmap, type);
+       total = isl_basic_map_total_dim(bmap);
+       isl_assert(bmap->ctx, pos < isl_basic_map_dim(bmap, type), return -1);
+       for (i = 0; i < bmap->n_eq; ++i)
+               if (!isl_int_is_zero(bmap->eq[i][offset + pos]) &&
+                   isl_seq_first_non_zero(bmap->eq[i]+offset+pos+1,
                                           1+total-offset-pos-1) == -1) {
-                       *c= isl_basic_set_constraint(isl_basic_set_copy(bset),
-                                                               &bset->eq[i]);
+                       *c = isl_basic_map_constraint(isl_basic_map_copy(bmap),
+                                                               &bmap->eq[i]);
                        return 1;
                }
        return 0;
 }
 
+int isl_basic_set_has_defining_equality(
+       __isl_keep isl_basic_set *bset, enum isl_dim_type type, int pos,
+       __isl_give isl_constraint **c)
+{
+       return isl_basic_map_has_defining_equality((isl_basic_map *)bset,
+                                                   type, pos, c);
+}
+
 int isl_basic_set_has_defining_inequalities(
        struct isl_basic_set *bset, enum isl_dim_type type, int pos,
        struct isl_constraint **lower,
@@ -853,7 +876,7 @@ int isl_basic_set_foreach_bound_pair(__isl_keep isl_basic_set *bset,
                lower = isl_basic_set_constraint(isl_basic_set_copy(bset),
                                                &bset->eq[i]);
                upper = isl_constraint_copy(lower);
-               context = isl_basic_set_remove(isl_basic_set_copy(bset),
+               context = isl_basic_set_remove_dims(isl_basic_set_copy(bset),
                                        type, pos, 1);
                if (!lower || !upper || !context)
                        goto error;