From 72d055daff7822f7c3ef302884f49fe71986c3eb Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Thu, 11 Aug 2011 16:33:15 +0200 Subject: [PATCH] add isl_*_has_dim_id The isl_*_git_dim_id functions cannot be used to find out whether a dimension has an id as they may also return NULL on failures. Signed-off-by: Sven Verdoolaege --- doc/user.pod | 6 ++++++ include/isl/dim.h | 2 ++ include/isl/map.h | 2 ++ include/isl/set.h | 2 ++ isl_dim.c | 8 ++++++++ isl_map.c | 12 ++++++++++++ 6 files changed, 32 insertions(+) diff --git a/doc/user.pod b/doc/user.pod index d7d91d3b..06813f23 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -539,6 +539,8 @@ using the following functions. __isl_take isl_dim *dim, enum isl_dim_type type, unsigned pos, __isl_take isl_id *id); + int isl_dim_has_dim_id(__isl_keep isl_dim *dim, + enum isl_dim_type type, unsigned pos); __isl_give isl_id *isl_dim_get_dim_id( __isl_keep isl_dim *dim, enum isl_dim_type type, unsigned pos); @@ -1377,12 +1379,16 @@ read off using the following functions. __isl_give isl_set *isl_set_set_dim_id( __isl_take isl_set *set, enum isl_dim_type type, unsigned pos, __isl_take isl_id *id); + int isl_set_has_dim_id(__isl_keep isl_set *set, + enum isl_dim_type type, unsigned pos); __isl_give isl_id *isl_set_get_dim_id( __isl_keep isl_set *set, enum isl_dim_type type, unsigned pos); __isl_give isl_map *isl_map_set_dim_id( __isl_take isl_map *map, enum isl_dim_type type, unsigned pos, __isl_take isl_id *id); + int isl_map_has_dim_id(__isl_keep isl_map *map, + enum isl_dim_type type, unsigned pos); __isl_give isl_id *isl_map_get_dim_id( __isl_keep isl_map *map, enum isl_dim_type type, unsigned pos); diff --git a/include/isl/dim.h b/include/isl/dim.h index d43745ba..e6d9ad25 100644 --- a/include/isl/dim.h +++ b/include/isl/dim.h @@ -53,6 +53,8 @@ __isl_give isl_id *isl_dim_get_tuple_id(__isl_keep isl_dim *dim, __isl_give isl_dim *isl_dim_set_dim_id(__isl_take isl_dim *dim, enum isl_dim_type type, unsigned pos, __isl_take isl_id *id); +int isl_dim_has_dim_id(__isl_keep isl_dim *dim, + enum isl_dim_type type, unsigned pos); __isl_give isl_id *isl_dim_get_dim_id(__isl_keep isl_dim *dim, enum isl_dim_type type, unsigned pos); diff --git a/include/isl/map.h b/include/isl/map.h index 410c4f0f..e2f9b14d 100644 --- a/include/isl/map.h +++ b/include/isl/map.h @@ -86,6 +86,8 @@ __isl_give isl_map *isl_map_set_dim_name(__isl_take isl_map *map, __isl_give isl_map *isl_map_set_dim_id(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, __isl_take isl_id *id); +int isl_map_has_dim_id(__isl_keep isl_map *map, + enum isl_dim_type type, unsigned pos); __isl_give isl_id *isl_map_get_dim_id(__isl_keep isl_map *map, enum isl_dim_type type, unsigned pos); __isl_give isl_map *isl_map_set_tuple_id(__isl_take isl_map *map, diff --git a/include/isl/set.h b/include/isl/set.h index ba5174f4..01b791d6 100644 --- a/include/isl/set.h +++ b/include/isl/set.h @@ -61,6 +61,8 @@ __isl_give isl_set *isl_set_set_dim_name(__isl_take isl_set *set, __isl_give isl_set *isl_set_set_dim_id(__isl_take isl_set *set, enum isl_dim_type type, unsigned pos, __isl_take isl_id *id); +int isl_set_has_dim_id(__isl_keep isl_set *set, + enum isl_dim_type type, unsigned pos); __isl_give isl_id *isl_set_get_dim_id(__isl_keep isl_set *set, enum isl_dim_type type, unsigned pos); __isl_give isl_set *isl_set_set_tuple_id(__isl_take isl_set *set, diff --git a/isl_dim.c b/isl_dim.c index 6dc6ad07..e5cd2061 100644 --- a/isl_dim.c +++ b/isl_dim.c @@ -356,6 +356,14 @@ error: return NULL; } +int isl_dim_has_dim_id(__isl_keep isl_dim *dim, + enum isl_dim_type type, unsigned pos) +{ + if (!dim) + return -1; + return get_id(dim, type, pos) != NULL; +} + __isl_give isl_id *isl_dim_get_dim_id(__isl_keep isl_dim *dim, enum isl_dim_type type, unsigned pos) { diff --git a/isl_map.c b/isl_map.c index 7bf1e10b..e85e644b 100644 --- a/isl_map.c +++ b/isl_map.c @@ -531,12 +531,24 @@ __isl_give isl_set *isl_set_set_dim_name(__isl_take isl_set *set, return (isl_set *)isl_map_set_dim_name((isl_map *)set, type, pos, s); } +int isl_map_has_dim_id(__isl_keep isl_map *map, + enum isl_dim_type type, unsigned pos) +{ + return map ? isl_dim_has_dim_id(map->dim, type, pos) : -1; +} + __isl_give isl_id *isl_map_get_dim_id(__isl_keep isl_map *map, enum isl_dim_type type, unsigned pos) { return map ? isl_dim_get_dim_id(map->dim, type, pos) : NULL; } +int isl_set_has_dim_id(__isl_keep isl_set *set, + enum isl_dim_type type, unsigned pos) +{ + return isl_map_has_dim_id(set, type, pos); +} + __isl_give isl_id *isl_set_get_dim_id(__isl_keep isl_set *set, enum isl_dim_type type, unsigned pos) { -- 2.11.4.GIT