[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