[Mesa-dev] [PATCH 7/9] glsl: Make foreach macros usable from C by adding struct keyword.
Ian Romanick
idr at freedesktop.org
Tue Jun 10 11:38:33 PDT 2014
On 06/10/2014 11:00 AM, Matt Turner wrote:
> ---
> src/glsl/list.h | 22 +++++++++++-----------
> 1 file changed, 11 insertions(+), 11 deletions(-)
>
> diff --git a/src/glsl/list.h b/src/glsl/list.h
> index da81062..803aab5 100644
> --- a/src/glsl/list.h
> +++ b/src/glsl/list.h
> @@ -556,13 +556,13 @@ inline void exec_node::insert_before(exec_list *before)
> /**
> * This version is safe even if the current node is removed.
> */
> -#define foreach_list_safe(__node, __list) \
> - for (exec_node * __node = (__list)->head, * __next = __node->next \
> - ; __next != NULL \
> +#define foreach_list_safe(__node, __list) \
> + for (struct exec_node * __node = (__list)->head, * __next = __node->next \
> + ; __next != NULL \
> ; __node = __next, __next = __next->next)
Did you notice if this adds any warnings in C++ uses? I seem to recall
the compiler squaking if you mixed uses with and without struct. Or
maybe that was just if you mixed struct and class...
>
> #define foreach_list(__node, __list) \
> - for (exec_node * __node = (__list)->head \
> + for (struct exec_node * __node = (__list)->head \
> ; (__node)->next != NULL \
> ; (__node) = (__node)->next)
>
> @@ -572,19 +572,19 @@ inline void exec_node::insert_before(exec_list *before)
> * This is safe against either current node being removed or replaced.
> */
> #define foreach_two_lists(__node1, __list1, __node2, __list2) \
> - for (exec_node * __node1 = (__list1)->head, \
> - * __node2 = (__list2)->head, \
> - * __next1 = __node1->next, \
> - * __next2 = __node2->next \
> + for (struct exec_node * __node1 = (__list1)->head, \
> + * __node2 = (__list2)->head, \
> + * __next1 = __node1->next, \
> + * __next2 = __node2->next \
> ; __next1 != NULL && __next2 != NULL \
> ; __node1 = __next1, \
> __node2 = __next2, \
> __next1 = __next1->next, \
> __next2 = __next2->next)
>
> -#define foreach_list_const(__node, __list) \
> - for (const exec_node * __node = (__list)->head \
> - ; (__node)->next != NULL \
> +#define foreach_list_const(__node, __list) \
> + for (const struct exec_node * __node = (__list)->head \
> + ; (__node)->next != NULL \
> ; (__node) = (__node)->next)
>
> #define foreach_list_typed(__type, __node, __field, __list) \
>
More information about the mesa-dev
mailing list