diff options
author | Sven Verdoolaege <skimo@kotnet.org> | 2011-06-28 20:17:59 +0200 |
---|---|---|
committer | Sven Verdoolaege <skimo@kotnet.org> | 2011-06-30 13:00:59 +0200 |
commit | a52f844be42d618ed2df5ce307761b11d61f5f5b (patch) | |
tree | 0e52da109d8aacc161c46ec4de4c0dfd110d4191 | |
parent | b7d848b49611b6bed2bfb1c7ab329beb54eca31d (diff) | |
download | isl-a52f844be42d618ed2df5ce307761b11d61f5f5b.tar.gz isl-a52f844be42d618ed2df5ce307761b11d61f5f5b.tar.bz2 isl-a52f844be42d618ed2df5ce307761b11d61f5f5b.zip |
add isl_vec_drop_els
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
-rw-r--r-- | include/isl/vec.h | 3 | ||||
-rw-r--r-- | isl_vec.c | 25 |
2 files changed, 28 insertions, 0 deletions
diff --git a/include/isl/vec.h b/include/isl/vec.h index f71ab1e3..26026011 100644 --- a/include/isl/vec.h +++ b/include/isl/vec.h @@ -60,6 +60,9 @@ __isl_give isl_vec *isl_vec_sort(__isl_take isl_vec *vec); __isl_give isl_vec *isl_vec_read_from_file(isl_ctx *ctx, FILE *input); +__isl_give isl_vec *isl_vec_drop_els(__isl_take isl_vec *vec, + unsigned pos, unsigned n); + #if defined(__cplusplus) } #endif @@ -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; +} |