X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=isl_vec.c;h=f6d5a874cfd12aef2d789d47fe37ea19f3afd51f;hb=refs%2Fheads%2Ftizen_ivi_genivi;hp=236413e45a325992550c60f89bc61e5cabe5a1f0;hpb=eb64b290654f345a82db3eb2abc9cc1f3c572ba8;p=platform%2Fupstream%2Fisl.git diff --git a/isl_vec.c b/isl_vec.c index 236413e..f6d5a87 100644 --- a/isl_vec.c +++ b/isl_vec.c @@ -189,6 +189,21 @@ int isl_vec_get_element(__isl_keep isl_vec *vec, int pos, isl_int *v) return 0; } +/* Extract the element at position "pos" of "vec". + */ +__isl_give isl_val *isl_vec_get_element_val(__isl_keep isl_vec *vec, int pos) +{ + isl_ctx *ctx; + + if (!vec) + return NULL; + ctx = isl_vec_get_ctx(vec); + if (pos < 0 || pos >= vec->size) + isl_die(ctx, isl_error_invalid, "position out of range", + return NULL); + return isl_val_int_from_isl_int(ctx, vec->el[pos]); +} + __isl_give isl_vec *isl_vec_set_element(__isl_take isl_vec *vec, int pos, isl_int v) { @@ -239,6 +254,19 @@ error: return isl_vec_free(vec); } +/* Compare the elements of "vec1" and "vec2" at position "pos". + */ +int isl_vec_cmp_element(__isl_keep isl_vec *vec1, __isl_keep isl_vec *vec2, + int pos) +{ + if (!vec1 || !vec2) + return 0; + if (pos < 0 || pos >= vec1->size || pos >= vec2->size) + isl_die(isl_vec_get_ctx(vec1), isl_error_invalid, + "position out of range", return 0); + return isl_int_cmp(vec1->el[pos], vec2->el[pos]); +} + int isl_vec_is_equal(__isl_keep isl_vec *vec1, __isl_keep isl_vec *vec2) { if (!vec1 || !vec2) @@ -304,6 +332,26 @@ __isl_give isl_vec *isl_vec_set_si(__isl_take isl_vec *vec, int v) return vec; } +/* Replace all elements of "vec" by "v". + */ +__isl_give isl_vec *isl_vec_set_val(__isl_take isl_vec *vec, + __isl_take isl_val *v) +{ + vec = isl_vec_cow(vec); + if (!vec || !v) + goto error; + if (!isl_val_is_int(v)) + isl_die(isl_val_get_ctx(v), isl_error_invalid, + "expecting integer value", goto error); + isl_seq_set(vec->el, v->n, vec->size); + isl_val_free(v); + return vec; +error: + isl_vec_free(vec); + isl_val_free(v); + return NULL; +} + __isl_give isl_vec *isl_vec_clr(__isl_take isl_vec *vec) { vec = isl_vec_cow(vec);