add isl_space_find_dim_by_name
authorSven Verdoolaege <skimo@kotnet.org>
Sat, 24 Sep 2011 09:01:01 +0000 (11:01 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Tue, 27 Sep 2011 11:14:52 +0000 (13:14 +0200)
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
doc/user.pod
include/isl/space.h
isl_space.c

index f9522fa..675d8a9 100644 (file)
@@ -634,12 +634,14 @@ arguments may have different parameters (as long as they are named),
 in which case the result will have as parameters the union of the parameters of
 the arguments.
 
-Given the identifier of a dimension (typically a parameter),
+Given the identifier or name of a dimension (typically a parameter),
 its position can be obtained from the following function.
 
        #include <isl/space.h>
        int isl_space_find_dim_by_id(__isl_keep isl_space *space,
                enum isl_dim_type type, __isl_keep isl_id *id);
+       int isl_space_find_dim_by_name(__isl_keep isl_space *space,
+               enum isl_dim_type type, const char *name);
 
 The identifiers or names of entire spaces may be set or read off
 using the following functions.
index 77aea98..d3496e0 100644 (file)
@@ -64,6 +64,8 @@ __isl_give isl_id *isl_space_get_dim_id(__isl_keep isl_space *dim,
 
 int isl_space_find_dim_by_id(__isl_keep isl_space *dim, enum isl_dim_type type,
        __isl_keep isl_id *id);
+int isl_space_find_dim_by_name(__isl_keep isl_space *space,
+       enum isl_dim_type type, const char *name);
 
 __isl_give isl_space *isl_space_set_dim_name(__isl_take isl_space *dim,
                                 enum isl_dim_type type, unsigned pos,
index 2b09204..ae68013 100644 (file)
@@ -543,6 +543,26 @@ int isl_space_find_dim_by_id(__isl_keep isl_space *dim, enum isl_dim_type type,
        return -1;
 }
 
+int isl_space_find_dim_by_name(__isl_keep isl_space *space,
+       enum isl_dim_type type, const char *name)
+{
+       int i;
+       int offset;
+       int n;
+
+       if (!space || !name)
+               return -1;
+
+       offset = isl_space_offset(space, type);
+       n = isl_space_dim(space, type);
+       for (i = 0; i < n && offset + i < space->n_id; ++i)
+               if (space->ids[offset + i]->name &&
+                   !strcmp(space->ids[offset + i]->name, name))
+                       return i;
+
+       return -1;
+}
+
 static __isl_keep isl_id *tuple_id(__isl_keep isl_space *dim,
        enum isl_dim_type type)
 {