From: Mike McCormack Date: Thu, 13 Oct 2011 02:22:18 +0000 (+0000) Subject: eina: Add eina_clist_element_is_linked() X-Git-Tag: submit/devel/efl/20131022.203902~7861 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ff34e5a0a91944198bfa2378f34c4d93e571d349;p=platform%2Fupstream%2Fefl.git eina: Add eina_clist_element_is_linked() Allows checking whether an entry is linked or not. Signed-off-by: Mike McCormack SVN revision: 64029 --- diff --git a/legacy/eina/src/include/eina_clist.h b/legacy/eina/src/include/eina_clist.h index ffac398..ec8c476 100644 --- a/legacy/eina/src/include/eina_clist.h +++ b/legacy/eina/src/include/eina_clist.h @@ -34,6 +34,7 @@ * - O(N) time to calculate list length * - requires one list entry in a struct per list (i.e. it's an inlist) * - requires a head/tail pointer + * - need to know the list head when moving to next or previous pointer * * Things to note: * - there's no NULL at the end of the list, the last item points to the head @@ -111,11 +112,25 @@ static inline void eina_clist_add_tail(Eina_Clist *list, Eina_Clist *elem) eina_clist_add_before(list, elem); } +/* init an (unlinked) element */ +static inline void eina_clist_element_init(Eina_Clist *elem) +{ + elem->next = NULL; + elem->next = NULL; +} + +/* check if an element is in a list or not */ +static inline int eina_clist_element_is_linked(Eina_Clist *elem) +{ + return (elem->next != NULL && elem->prev != NULL); +} + /* remove an element from its list */ static inline void eina_clist_remove(Eina_Clist *elem) { elem->next->prev = elem->prev; elem->prev->next = elem->next; + eina_clist_element_init(elem); } /* get the next element */