diff options
-rw-r--r-- | include/isl_constraint.h | 4 | ||||
-rw-r--r-- | isl_constraint.c | 36 |
2 files changed, 40 insertions, 0 deletions
diff --git a/include/isl_constraint.h b/include/isl_constraint.h index 54c60e64..a1ec0ed9 100644 --- a/include/isl_constraint.h +++ b/include/isl_constraint.h @@ -40,6 +40,10 @@ __isl_give isl_constraint *isl_basic_map_first_constraint( __isl_give isl_constraint *isl_basic_set_first_constraint( __isl_take isl_basic_set *bset); struct isl_constraint *isl_constraint_next(struct isl_constraint *c); +int isl_basic_map_foreach_constraint(__isl_keep isl_basic_map *bmap, + int (*fn)(__isl_take isl_constraint *c, void *user), void *user); +int isl_basic_set_foreach_constraint(__isl_keep isl_basic_set *bset, + int (*fn)(__isl_take isl_constraint *c, void *user), void *user); int isl_constraint_is_equal(struct isl_constraint *constraint1, struct isl_constraint *constraint2); diff --git a/isl_constraint.c b/isl_constraint.c index 386cd27b..82de5a94 100644 --- a/isl_constraint.c +++ b/isl_constraint.c @@ -189,6 +189,42 @@ struct isl_constraint *isl_constraint_next(struct isl_constraint *c) return NULL; } +int isl_basic_map_foreach_constraint(__isl_keep isl_basic_map *bmap, + int (*fn)(__isl_take isl_constraint *c, void *user), void *user) +{ + int i; + struct isl_constraint *c; + + if (!bmap) + return -1; + + for (i = 0; i < bmap->n_eq; ++i) { + c = isl_basic_map_constraint(isl_basic_map_copy(bmap), + &bmap->eq[i]); + if (!c) + return -1; + if (fn(c, user) < 0) + return -1; + } + + for (i = 0; i < bmap->n_ineq; ++i) { + c = isl_basic_map_constraint(isl_basic_map_copy(bmap), + &bmap->ineq[i]); + if (!c) + return -1; + if (fn(c, user) < 0) + return -1; + } + + return 0; +} + +int isl_basic_set_foreach_constraint(__isl_keep isl_basic_set *bset, + int (*fn)(__isl_take isl_constraint *c, void *user), void *user) +{ + return isl_basic_map_foreach_constraint((isl_basic_map *)bset, fn, user); +} + int isl_constraint_is_equal(struct isl_constraint *constraint1, struct isl_constraint *constraint2) { |