X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=include%2Ftdm_list.h;h=38738179cb6a4ee4c47a3919a88175c60b24e20f;hb=refs%2Fchanges%2F13%2F174313%2F1;hp=2fd1db0688522f4c94b9a21f4e06a2a7f5b28f9d;hpb=863ce920d44c0c1630c2dd0bdbb12a9bff23a19e;p=platform%2Fcore%2Fuifw%2Flibtdm.git diff --git a/include/tdm_list.h b/include/tdm_list.h index 2fd1db0..3873817 100644 --- a/include/tdm_list.h +++ b/include/tdm_list.h @@ -112,6 +112,12 @@ static inline int list_length(struct list_head *item) #define LIST_ENTRY(__type, __item, __field) \ ((__type *)(((char *)(__item)) - offsetof(__type, __field))) +#define LIST_FIRST_ENTRY(__ptr, __type, __field) \ + LIST_ENTRY(__type, (__ptr)->next, __field) + +#define LIST_LAST_ENTRY(__ptr, __type, __field) \ + LIST_ENTRY(__type, (__ptr)->prev, __field) + #define LIST_IS_EMPTY(__list) \ ((__list)->next == (__list)) @@ -126,6 +132,11 @@ static inline int list_length(struct list_head *item) &pos->member != (head); \ pos = container_of(pos->member.next, pos, member)) +#define LIST_FOR_EACH_ENTRY_REV(pos, head, member) \ + for (pos = container_of((head)->prev, pos, member); \ + &pos->member != (head); \ + pos = container_of(pos->member.prev, pos, member)) + #define LIST_FOR_EACH_ENTRY_SAFE(pos, storage, head, member) \ for (pos = container_of((head)->next, pos, member), \ storage = container_of(pos->member.next, pos, member); \