From b48b7eb6ea5c2cf93993c248421ab9d403f02513 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 16 Feb 2011 09:34:27 +0000 Subject: [PATCH] +EINA_INLIST_FOREACH_SAFE it looks crazy, but it works somehow SVN revision: 57080 --- legacy/eina/ChangeLog | 3 +++ legacy/eina/src/include/eina_inlist.h | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/legacy/eina/ChangeLog b/legacy/eina/ChangeLog index d194bb7920..eca111fa1c 100644 --- a/legacy/eina/ChangeLog +++ b/legacy/eina/ChangeLog @@ -10,3 +10,6 @@ * Added eina_unicode_strndup +2011-02-16 Mike Blumenkrantz + + * EINA_INLIST_FOREACH_SAFE diff --git a/legacy/eina/src/include/eina_inlist.h b/legacy/eina/src/include/eina_inlist.h index 03b16656f3..0add2b93a1 100644 --- a/legacy/eina/src/include/eina_inlist.h +++ b/legacy/eina/src/include/eina_inlist.h @@ -98,6 +98,10 @@ EAPI Eina_Accessor *eina_inlist_accessor_new(const Eina_Inlist *in_list) EINA_MA #define EINA_INLIST_FOREACH(list, l) \ for (l = NULL, l = (list ? _EINA_INLIST_CONTAINER(l, list) : NULL); l; \ l = (EINA_INLIST_GET(l)->next ? _EINA_INLIST_CONTAINER(l, EINA_INLIST_GET(l)->next) : NULL)) +#define EINA_INLIST_FOREACH_SAFE(list, list2, l) \ + for (l = (list ? _EINA_INLIST_CONTAINER(l, list) : NULL), list2 = l ? ((EINA_INLIST_GET(l) ? EINA_INLIST_GET(l)->next : NULL)) : NULL; \ + l; \ + l = _EINA_INLIST_CONTAINER(l, list2), list2 = list2 ? list2->next : NULL) #define EINA_INLIST_REVERSE_FOREACH(list, l) \ for (l = NULL, l = (list ? _EINA_INLIST_CONTAINER(l, list->last) : NULL); \ l; l = (EINA_INLIST_GET(l)->prev ? _EINA_INLIST_CONTAINER(l, EINA_INLIST_GET(l)->prev) : NULL))