From: mike_m Date: Thu, 13 Oct 2011 02:22:18 +0000 (+0000) Subject: eina: Add eina_clist_element_is_linked() X-Git-Tag: 2.0_alpha~57^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5c2367594417ec17ab64c27191533bcc21b9b5e3;p=framework%2Fuifw%2Feina.git eina: Add eina_clist_element_is_linked() Allows checking whether an entry is linked or not. Signed-off-by: Mike McCormack git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/eina@64029 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/src/include/eina_clist.h b/src/include/eina_clist.h index ffac398..ec8c476 100644 --- a/src/include/eina_clist.h +++ b/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 */