summaryrefslogtreecommitdiff
path: root/isl_constraint.c
diff options
context:
space:
mode:
authorSven Verdoolaege <skimo@kotnet.org>2013-04-06 13:45:02 +0200
committerSven Verdoolaege <skimo@kotnet.org>2013-05-28 18:20:22 +0200
commite99083d6ab70ab8def75e805860c1c866f8e576e (patch)
tree0176072d43c7e523d9157aea5a29e712687f7d9f /isl_constraint.c
parent84ecd9debe30c72dd7fd565c3d1ed0cbb362a16a (diff)
downloadisl-e99083d6ab70ab8def75e805860c1c866f8e576e.tar.gz
isl-e99083d6ab70ab8def75e805860c1c866f8e576e.tar.bz2
isl-e99083d6ab70ab8def75e805860c1c866f8e576e.zip
add isl_constraint_set_coefficient_val
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
Diffstat (limited to 'isl_constraint.c')
-rw-r--r--isl_constraint.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/isl_constraint.c b/isl_constraint.c
index 82e8ef79..d72a6fe0 100644
--- a/isl_constraint.c
+++ b/isl_constraint.c
@@ -508,6 +508,34 @@ __isl_give isl_constraint *isl_constraint_set_coefficient(
return constraint;
}
+/* Replace the coefficient of the variable of type "type" at position "pos"
+ * of "constraint" by "v".
+ */
+__isl_give isl_constraint *isl_constraint_set_coefficient_val(
+ __isl_take isl_constraint *constraint,
+ enum isl_dim_type type, int pos, isl_val *v)
+{
+ constraint = isl_constraint_cow(constraint);
+ if (!constraint || !v)
+ goto error;
+ if (!isl_val_is_int(v))
+ isl_die(isl_constraint_get_ctx(constraint), isl_error_invalid,
+ "expecting integer value", goto error);
+
+ if (pos >= isl_local_space_dim(constraint->ls, type))
+ isl_die(isl_constraint_get_ctx(constraint), isl_error_invalid,
+ "position out of bounds", goto error);
+
+ pos += isl_local_space_offset(constraint->ls, type);
+ constraint->v = isl_vec_set_element_val(constraint->v, pos, v);
+ if (!constraint->v)
+ constraint = isl_constraint_free(constraint);
+ return constraint;
+error:
+ isl_val_free(v);
+ return isl_constraint_free(constraint);
+}
+
__isl_give isl_constraint *isl_constraint_set_coefficient_si(
__isl_take isl_constraint *constraint,
enum isl_dim_type type, int pos, int v)