summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSven Verdoolaege <skimo@kotnet.org>2013-04-13 13:03:56 +0200
committerSven Verdoolaege <skimo@kotnet.org>2013-05-28 18:24:45 +0200
commit34fa71e9db192c69966f647f8cebe9f7076f87f3 (patch)
tree82c5dd9d5763bed772c607bc0eb40554e30ab50d
parent6025a565a2581b8dab0b9002cc492d89ffbd6fdd (diff)
downloadisl-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.pod3
-rw-r--r--include/isl/constraint.h2
-rw-r--r--isl_constraint.c20
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)
{