diff options
author | Sven Verdoolaege <skimo@kotnet.org> | 2013-04-13 13:03:56 +0200 |
---|---|---|
committer | Sven Verdoolaege <skimo@kotnet.org> | 2013-05-28 18:24:45 +0200 |
commit | 34fa71e9db192c69966f647f8cebe9f7076f87f3 (patch) | |
tree | 82c5dd9d5763bed772c607bc0eb40554e30ab50d | |
parent | 6025a565a2581b8dab0b9002cc492d89ffbd6fdd (diff) | |
download | isl-34fa71e9db192c69966f647f8cebe9f7076f87f3.tar.gz isl-34fa71e9db192c69966f647f8cebe9f7076f87f3.tar.bz2 isl-34fa71e9db192c69966f647f8cebe9f7076f87f3.zip |
add isl_constraint_get_coefficient_val
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
-rw-r--r-- | doc/user.pod | 3 | ||||
-rw-r--r-- | include/isl/constraint.h | 2 | ||||
-rw-r--r-- | isl_constraint.c | 20 |
3 files changed, 25 insertions, 0 deletions
diff --git a/doc/user.pod b/doc/user.pod index d84cc076..f4cae685 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -1798,6 +1798,9 @@ the following functions. void isl_constraint_get_coefficient( __isl_keep isl_constraint *constraint, enum isl_dim_type type, int pos, isl_int *v); + __isl_give isl_val *isl_constraint_get_coefficient_val( + __isl_keep isl_constraint *constraint, + enum isl_dim_type type, int pos); int isl_constraint_involves_dims( __isl_keep isl_constraint *constraint, enum isl_dim_type type, unsigned first, unsigned n); diff --git a/include/isl/constraint.h b/include/isl/constraint.h index d5c4d715..948437ae 100644 --- a/include/isl/constraint.h +++ b/include/isl/constraint.h @@ -88,6 +88,8 @@ __isl_give isl_val *isl_constraint_get_constant_val( __isl_keep isl_constraint *constraint); void isl_constraint_get_coefficient(__isl_keep isl_constraint *constraint, enum isl_dim_type type, int pos, isl_int *v); +__isl_give isl_val *isl_constraint_get_coefficient_val( + __isl_keep isl_constraint *constraint, enum isl_dim_type type, int pos); __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( diff --git a/isl_constraint.c b/isl_constraint.c index ddbd1be5..7a06fa76 100644 --- a/isl_constraint.c +++ b/isl_constraint.c @@ -437,6 +437,26 @@ void isl_constraint_get_coefficient(struct isl_constraint *constraint, isl_int_set(*v, constraint->v->el[pos]); } +/* Return the coefficient of the variable of type "type" at position "pos" + * of "constraint". + */ +__isl_give isl_val *isl_constraint_get_coefficient_val( + __isl_keep isl_constraint *constraint, enum isl_dim_type type, int pos) +{ + isl_ctx *ctx; + + if (!constraint) + return NULL; + + ctx = isl_constraint_get_ctx(constraint); + if (pos < 0 || pos >= isl_local_space_dim(constraint->ls, type)) + isl_die(ctx, isl_error_invalid, + "position out of bounds", return NULL); + + pos += isl_local_space_offset(constraint->ls, type); + return isl_val_int_from_isl_int(ctx, constraint->v->el[pos]); +} + __isl_give isl_aff *isl_constraint_get_div(__isl_keep isl_constraint *constraint, int pos) { |