summaryrefslogtreecommitdiff
path: root/isl_vec.c
diff options
context:
space:
mode:
authorSven Verdoolaege <skimo@kotnet.org>2011-06-28 20:17:59 +0200
committerSven Verdoolaege <skimo@kotnet.org>2011-06-30 13:00:59 +0200
commita52f844be42d618ed2df5ce307761b11d61f5f5b (patch)
tree0e52da109d8aacc161c46ec4de4c0dfd110d4191 /isl_vec.c
parentb7d848b49611b6bed2bfb1c7ab329beb54eca31d (diff)
downloadisl-a52f844be42d618ed2df5ce307761b11d61f5f5b.tar.gz
isl-a52f844be42d618ed2df5ce307761b11d61f5f5b.tar.bz2
isl-a52f844be42d618ed2df5ce307761b11d61f5f5b.zip
add isl_vec_drop_els
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
Diffstat (limited to 'isl_vec.c')
-rw-r--r--isl_vec.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/isl_vec.c b/isl_vec.c
index 606f6faa..693af8e9 100644
--- a/isl_vec.c
+++ b/isl_vec.c
@@ -267,3 +267,28 @@ __isl_give isl_vec *isl_vec_sort(__isl_take isl_vec *vec)
return vec;
}
+
+__isl_give isl_vec *isl_vec_drop_els(__isl_take isl_vec *vec,
+ unsigned pos, unsigned n)
+{
+ if (n == 0)
+ return vec;
+ vec = isl_vec_cow(vec);
+ if (!vec)
+ return NULL;
+
+ if (pos + n > vec->size)
+ isl_die(vec->ctx, isl_error_invalid,
+ "range out of bounds", goto error);
+
+ if (pos + n != vec->size)
+ isl_seq_cpy(vec->el + pos, vec->el + pos + n,
+ vec->size - pos - n);
+
+ vec->size -= n;
+
+ return vec;
+error:
+ isl_vec_free(vec);
+ return NULL;
+}