add *list_get_*
authorSven Verdoolaege <skimo@kotnet.org>
Wed, 27 Apr 2011 10:51:19 +0000 (12:51 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Sat, 4 Jun 2011 11:19:23 +0000 (13:19 +0200)
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
doc/user.pod
include/isl/list.h
isl_list_templ.c

index e7e8980..4511f66 100644 (file)
@@ -2026,6 +2026,8 @@ Lists can be inspected using the following functions.
        #include <isl/list.h>
        isl_ctx *isl_set_list_get_ctx(__isl_keep isl_set_list *list);
        int isl_set_list_n_set(__isl_keep isl_set_list *list);
+       __isl_give struct isl_set *isl_set_list_get_set(
+               __isl_keep isl_set_list *list, int index);
        int isl_set_list_foreach(__isl_keep isl_set_list *list,
                int (*fn)(__isl_take struct isl_set *el, void *user),
                void *user);
index bbbc16d..1a4a362 100644 (file)
@@ -29,6 +29,8 @@ __isl_give isl_##EL##_list *isl_##EL##_list_add(                      \
        __isl_take isl_##EL##_list *list,                               \
        __isl_take struct isl_##EL *el);                                \
 int isl_##EL##_list_n_##EL(__isl_keep isl_##EL##_list *list);          \
+__isl_give struct isl_##EL *isl_##EL##_list_get_##EL(                  \
+       __isl_keep isl_##EL##_list *list, int index);                   \
 int isl_##EL##_list_foreach(__isl_keep isl_##EL##_list *list,          \
        int (*fn)(__isl_take struct isl_##EL *el, void *user), void *user);
 
index 1e56158..baae501 100644 (file)
@@ -90,6 +90,16 @@ int FN(FN(LIST(EL),n),BASE)(__isl_keep LIST(EL) *list)
        return list ? list->n : 0;
 }
 
+__isl_give EL *FN(FN(LIST(EL),get),BASE)(__isl_keep LIST(EL) *list, int index)
+{
+       if (!list)
+               return NULL;
+       if (index < 0 || index >= list->n)
+               isl_die(list->ctx, isl_error_invalid,
+                       "index out of bounds", return NULL);
+       return FN(EL,copy)(list->p[index]);
+}
+
 int FN(LIST(EL),foreach)(__isl_keep LIST(EL) *list,
        int (*fn)(__isl_take EL *el, void *user), void *user)
 {