X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=isl_vec.c;h=46c9d1a83515ce6c763926032890424f33d7fe05;hb=1c35e6c6d371089b42f65aee40325fd9ea346fb4;hp=61bd57f5dfd54cd5c7ffcb5af7c0fa33933702a7;hpb=0d458c47aefdc037512282a3250de99d9d24b8c9;p=platform%2Fupstream%2Fisl.git diff --git a/isl_vec.c b/isl_vec.c index 61bd57f..46c9d1a 100644 --- a/isl_vec.c +++ b/isl_vec.c @@ -134,6 +134,55 @@ void isl_vec_free(struct isl_vec *vec) free(vec); } +int isl_vec_size(__isl_keep isl_vec *vec) +{ + return vec ? vec->size : -1; +} + +int isl_vec_get_element(__isl_keep isl_vec *vec, int pos, isl_int *v) +{ + if (!vec) + return -1; + + if (pos < 0 || pos >= vec->size) + isl_die(vec->ctx, isl_error_invalid, "position out of range", + return -1); + isl_int_set(*v, vec->el[pos]); + return 0; +} + +__isl_give isl_vec *isl_vec_set_element(__isl_take isl_vec *vec, + int pos, isl_int v) +{ + vec = isl_vec_cow(vec); + if (!vec) + return NULL; + if (pos < 0 || pos >= vec->size) + isl_die(vec->ctx, isl_error_invalid, "position out of range", + goto error); + isl_int_set(vec->el[pos], v); + return vec; +error: + isl_vec_free(vec); + return NULL; +} + +__isl_give isl_vec *isl_vec_set_element_si(__isl_take isl_vec *vec, + int pos, int v) +{ + vec = isl_vec_cow(vec); + if (!vec) + return NULL; + if (pos < 0 || pos >= vec->size) + isl_die(vec->ctx, isl_error_invalid, "position out of range", + goto error); + isl_int_set_si(vec->el[pos], v); + return vec; +error: + isl_vec_free(vec); + return NULL; +} + int isl_vec_is_equal(__isl_keep isl_vec *vec1, __isl_keep isl_vec *vec2) { if (!vec1 || !vec2) @@ -181,6 +230,24 @@ void isl_vec_dump(struct isl_vec *vec) isl_printer_free(printer); } +__isl_give isl_vec *isl_vec_set(__isl_take isl_vec *vec, isl_int v) +{ + vec = isl_vec_cow(vec); + if (!vec) + return NULL; + isl_seq_set(vec->el, v, vec->size); + return vec; +} + +__isl_give isl_vec *isl_vec_set_si(__isl_take isl_vec *vec, int v) +{ + vec = isl_vec_cow(vec); + if (!vec) + return NULL; + isl_seq_set_si(vec->el, v, vec->size); + return vec; +} + __isl_give isl_vec *isl_vec_clr(__isl_take isl_vec *vec) { vec = isl_vec_cow(vec);