X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftlist%2Ftlist.h;h=937a834c0184fb4d54928ca57db9668a929b1f8c;hp=3576146c04f1a82488d2f4f707d1ca7b6b06798d;hb=919b97d6e573eb794d7819f1af8da29023d6b193;hpb=6a906358d922800c7358c5c46c34bf4a5e6863ad diff --git a/ccan/tlist/tlist.h b/ccan/tlist/tlist.h index 3576146c..937a834c 100644 --- a/ccan/tlist/tlist.h +++ b/ccan/tlist/tlist.h @@ -178,32 +178,40 @@ /** * tlist_top - get the first entry in a list * @h: the tlist - * @type: the type of the entry * @member: the list_node member of the type * * If the list is empty, returns NULL. * * Example: * struct child *first; - * first = tlist_top(&parent->children, struct child, list); + * first = tlist_top(&parent->children, list); + * if (!first) + * printf("Empty list!\n"); */ -#define tlist_top(h, type, member) \ - list_top(tlist_raw((h), (type *)NULL), type, member) +#define tlist_top(h, member) \ + ((tcon_type((h), canary)) \ + list_top_(&(h)->raw, \ + (char *)(&(h)->_tcon[0].canary->member) - \ + (char *)((h)->_tcon[0].canary))) /** * tlist_tail - get the last entry in a list * @h: the tlist - * @type: the type of the entry * @member: the list_node member of the type * * If the list is empty, returns NULL. * * Example: * struct child *last; - * last = tlist_tail(&parent->children, struct child, list); + * last = tlist_tail(&parent->children, list); + * if (!last) + * printf("Empty list!\n"); */ -#define tlist_tail(h, type, member) \ - list_tail(tlist_raw((h), (type *)NULL), type, member) +#define tlist_tail(h, member) \ + ((tcon_type((h), canary)) \ + list_tail_(&(h)->raw, \ + (char *)(&(h)->_tcon[0].canary->member) - \ + (char *)((h)->_tcon[0].canary))) /** * tlist_for_each - iterate through a list.