From: Ian Romanick Date: Tue, 11 May 2010 00:40:41 +0000 (-0700) Subject: exec_list: Add foreach_list_typed and foreach_list_typed_const X-Git-Tag: mesa-7.9-rc1~1173^2~625^2~270 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4cfbad9e4df4acb011676bde761af557ae58e96a;p=platform%2Fupstream%2Fmesa.git exec_list: Add foreach_list_typed and foreach_list_typed_const These variations are parameterized by the type of the nodes in the list. This enables skipping the explicit usage of exec_node_data in the loop body. --- diff --git a/list.h b/list.h index 3bfdf55..615be05 100644 --- a/list.h +++ b/list.h @@ -347,4 +347,16 @@ struct exec_list { ; (__node)->next != NULL \ ; (__node) = (__node)->next) +#define foreach_list_typed(__type, __node, __field, __list) \ + for (__type * __node = \ + exec_node_data(__type, (__list)->head, __field); \ + (__node)->__field.next != NULL; \ + (__node) = exec_node_data(__type, (__node)->__field.next, __field)) + +#define foreach_list_typed_const(__type, __node, __field, __list) \ + for (const __type * __node = \ + exec_node_data(__type, (__list)->head, __field); \ + (__node)->__field.next != NULL; \ + (__node) = exec_node_data(__type, (__node)->__field.next, __field)) + #endif /* LIST_CONTAINER_H */