X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=isl_mat.c;h=129cdc749eb81f10d549d6e46f01aaff2c67d42b;hb=989f832a4354ae34f538b032c355dc7191b10e27;hp=5290deabd403b0b32e94f4744487e9c9683b83a6;hpb=ae495b6ef2036704da0450c0bf91dd2b034deaf8;p=platform%2Fupstream%2Fisl.git diff --git a/isl_mat.c b/isl_mat.c index 5290dea..129cdc7 100644 --- a/isl_mat.c +++ b/isl_mat.c @@ -8,11 +8,12 @@ */ #include +#include #include #include #include -#include "isl_map_private.h" #include +#include isl_ctx *isl_mat_get_ctx(__isl_keep isl_mat *mat) { @@ -245,6 +246,25 @@ int isl_mat_get_element(__isl_keep isl_mat *mat, int row, int col, isl_int *v) return 0; } +/* Extract the element at row "row", oolumn "col" of "mat". + */ +__isl_give isl_val *isl_mat_get_element_val(__isl_keep isl_mat *mat, + int row, int col) +{ + isl_ctx *ctx; + + if (!mat) + return NULL; + ctx = isl_mat_get_ctx(mat); + if (row < 0 || row >= mat->n_row) + isl_die(ctx, isl_error_invalid, "row out of range", + return NULL); + if (col < 0 || col >= mat->n_col) + isl_die(ctx, isl_error_invalid, "column out of range", + return NULL); + return isl_val_int_from_isl_int(ctx, mat->row[row][col]); +} + __isl_give isl_mat *isl_mat_set_element(__isl_take isl_mat *mat, int row, int col, isl_int v) { @@ -283,6 +303,24 @@ error: return NULL; } +/* Replace the element at row "row", column "col" of "mat" by "v". + */ +__isl_give isl_mat *isl_mat_set_element_val(__isl_take isl_mat *mat, + int row, int col, __isl_take isl_val *v) +{ + if (!v) + return isl_mat_free(mat); + if (!isl_val_is_int(v)) + isl_die(isl_val_get_ctx(v), isl_error_invalid, + "expecting integer value", goto error); + mat = isl_mat_set_element(mat, row, col, v->n); + isl_val_free(v); + return mat; +error: + isl_val_free(v); + return isl_mat_free(mat); +} + __isl_give isl_mat *isl_mat_diag(isl_ctx *ctx, unsigned n_row, isl_int d) { int i;