add isl_*_has_tuple_id
authorSven Verdoolaege <skimo@kotnet.org>
Fri, 12 Aug 2011 09:32:14 +0000 (11:32 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Fri, 12 Aug 2011 09:32:47 +0000 (11:32 +0200)
The isl_*_git_tuple_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 <skimo@kotnet.org>
doc/user.pod
include/isl/dim.h
include/isl/map.h
include/isl/set.h
isl_dim.c
isl_map.c

index 06813f2..93106a8 100644 (file)
@@ -578,6 +578,8 @@ using the following functions.
                enum isl_dim_type type, __isl_take isl_id *id);
        __isl_give isl_dim *isl_dim_reset_tuple_id(
                __isl_take isl_dim *dim, enum isl_dim_type type);
+       int isl_dim_has_tuple_id(__isl_keep isl_dim *dim,
+               enum isl_dim_type type);
        __isl_give isl_id *isl_dim_get_tuple_id(
                __isl_keep isl_dim *dim, enum isl_dim_type type);
        __isl_give isl_dim *isl_dim_set_tuple_name(
@@ -1348,6 +1350,7 @@ or relation can be read off or set using the following functions.
                __isl_take isl_set *set, __isl_take isl_id *id);
        __isl_give isl_set *isl_set_reset_tuple_id(
                __isl_take isl_set *set);
+       int isl_set_has_tuple_id(__isl_keep isl_set *set);
        __isl_give isl_id *isl_set_get_tuple_id(
                __isl_keep isl_set *set);
        __isl_give isl_map *isl_map_set_tuple_id(
@@ -1355,6 +1358,8 @@ or relation can be read off or set using the following functions.
                __isl_take isl_id *id);
        __isl_give isl_map *isl_map_reset_tuple_id(
                __isl_take isl_map *map, enum isl_dim_type type);
+       int isl_map_has_tuple_id(__isl_keep isl_map *map,
+               enum isl_dim_type type);
        __isl_give isl_id *isl_map_get_tuple_id(
                __isl_keep isl_map *map, enum isl_dim_type type);
 
index e6d9ad2..097bff3 100644 (file)
@@ -48,6 +48,7 @@ __isl_give isl_dim *isl_dim_set_tuple_id(__isl_take isl_dim *dim,
        enum isl_dim_type type, __isl_take isl_id *id);
 __isl_give isl_dim *isl_dim_reset_tuple_id(__isl_take isl_dim *dim,
        enum isl_dim_type type);
+int isl_dim_has_tuple_id(__isl_keep isl_dim *dim, enum isl_dim_type type);
 __isl_give isl_id *isl_dim_get_tuple_id(__isl_keep isl_dim *dim,
        enum isl_dim_type type);
 
index e2f9b14..1e252df 100644 (file)
@@ -94,6 +94,7 @@ __isl_give isl_map *isl_map_set_tuple_id(__isl_take isl_map *map,
        enum isl_dim_type type, __isl_take isl_id *id);
 __isl_give isl_map *isl_map_reset_tuple_id(__isl_take isl_map *map,
        enum isl_dim_type type);
+int isl_map_has_tuple_id(__isl_keep isl_map *map, enum isl_dim_type type);
 __isl_give isl_id *isl_map_get_tuple_id(__isl_keep isl_map *map,
        enum isl_dim_type type);
 
index 01b791d..80082d8 100644 (file)
@@ -68,6 +68,7 @@ __isl_give isl_id *isl_set_get_dim_id(__isl_keep isl_set *set,
 __isl_give isl_set *isl_set_set_tuple_id(__isl_take isl_set *set,
        __isl_take isl_id *id);
 __isl_give isl_set *isl_set_reset_tuple_id(__isl_take isl_set *set);
+int isl_set_has_tuple_id(__isl_keep isl_set *set);
 __isl_give isl_id *isl_set_get_tuple_id(__isl_keep isl_set *set);
 
 int isl_set_find_dim_by_id(__isl_keep isl_set *set, enum isl_dim_type type,
index e5cd206..b469808 100644 (file)
--- a/isl_dim.c
+++ b/isl_dim.c
@@ -291,6 +291,17 @@ static int name_ok(isl_ctx *ctx, const char *s)
        return 1;
 }
 
+int isl_dim_has_tuple_id(__isl_keep isl_dim *dim, enum isl_dim_type type)
+{
+       if (!dim)
+               return -1;
+       if (type != isl_dim_in && type != isl_dim_out)
+               isl_die(dim->ctx, isl_error_invalid,
+                       "only input, output and set tuples can have ids",
+                       return -1);
+       return dim->tuple_id[type - isl_dim_in] != NULL;
+}
+
 __isl_give isl_id *isl_dim_get_tuple_id(__isl_keep isl_dim *dim,
        enum isl_dim_type type)
 {
index e85e644..14732c3 100644 (file)
--- a/isl_map.c
+++ b/isl_map.c
@@ -433,12 +433,22 @@ __isl_give isl_set *isl_set_reset_tuple_id(__isl_take isl_set *set)
        return isl_map_reset_tuple_id(set, isl_dim_set);
 }
 
+int isl_map_has_tuple_id(__isl_keep isl_map *map, enum isl_dim_type type)
+{
+       return map ? isl_dim_has_tuple_id(map->dim, type) : -1;
+}
+
 __isl_give isl_id *isl_map_get_tuple_id(__isl_keep isl_map *map,
        enum isl_dim_type type)
 {
        return map ? isl_dim_get_tuple_id(map->dim, type) : NULL;
 }
 
+int isl_set_has_tuple_id(__isl_keep isl_set *set)
+{
+       return isl_map_has_tuple_id(set, isl_dim_set);
+}
+
 __isl_give isl_id *isl_set_get_tuple_id(__isl_keep isl_set *set)
 {
        return isl_map_get_tuple_id(set, isl_dim_set);