From 2d0fce082b6de7051cefa8f012b101c774c6a029 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Sat, 6 Apr 2013 10:32:51 +0200 Subject: [PATCH] add isl_mat_get_element_val Signed-off-by: Sven Verdoolaege --- doc/user.pod | 2 ++ include/isl/mat.h | 2 ++ isl_mat.c | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/doc/user.pod b/doc/user.pod index 3fec840..0097f0f 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -3487,6 +3487,8 @@ The elements can be changed and inspected using the following functions. int isl_mat_cols(__isl_keep isl_mat *mat); int isl_mat_get_element(__isl_keep isl_mat *mat, int row, int col, isl_int *v); + __isl_give isl_val *isl_mat_get_element_val( + __isl_keep isl_mat *mat, int row, int col); __isl_give isl_mat *isl_mat_set_element(__isl_take isl_mat *mat, int row, int col, isl_int v); __isl_give isl_mat *isl_mat_set_element_si(__isl_take isl_mat *mat, diff --git a/include/isl/mat.h b/include/isl/mat.h index f5205f9..85639be 100644 --- a/include/isl/mat.h +++ b/include/isl/mat.h @@ -40,6 +40,8 @@ void *isl_mat_free(__isl_take isl_mat *mat); int isl_mat_rows(__isl_keep isl_mat *mat); int isl_mat_cols(__isl_keep isl_mat *mat); int isl_mat_get_element(__isl_keep isl_mat *mat, int row, int col, isl_int *v); +__isl_give isl_val *isl_mat_get_element_val(__isl_keep isl_mat *mat, + int row, int col); __isl_give isl_mat *isl_mat_set_element(__isl_take isl_mat *mat, int row, int col, isl_int v); __isl_give isl_mat *isl_mat_set_element_si(__isl_take isl_mat *mat, diff --git a/isl_mat.c b/isl_mat.c index dc256ce..129cdc7 100644 --- a/isl_mat.c +++ b/isl_mat.c @@ -246,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) { -- 2.7.4