[Mesa-dev] [PATCH 1/2] mesa/program: Add _mesa_symbol_table_replace_symbol()

Timothy Arceri timothy.arceri at collabora.com
Fri Oct 21 04:06:14 UTC 2016


On Thu, 2016-10-20 at 12:39 +0200, Samuel Iglesias Gonsálvez wrote:
> This function allows to modify an existing symbol.
> 
> Signed-off-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
> ---
>  src/mesa/program/symbol_table.c | 35
> +++++++++++++++++++++++++++++++++++
>  src/mesa/program/symbol_table.h |  3 +++
>  2 files changed, 38 insertions(+)
> 
> diff --git a/src/mesa/program/symbol_table.c
> b/src/mesa/program/symbol_table.c
> index 3e58432..4f6ccf4 100644
> --- a/src/mesa/program/symbol_table.c
> +++ b/src/mesa/program/symbol_table.c
> @@ -313,6 +313,41 @@ _mesa_symbol_table_add_symbol(struct
> _mesa_symbol_table *table,
>      return 0;
>  }
>  
> +int
> +_mesa_symbol_table_replace_symbol(struct _mesa_symbol_table *table,
> +                                  int name_space, const char *name,
> +                                  void *declaration)
> +{
> +    struct symbol_header *hdr;
> +    struct symbol *tmp;
> +    struct symbol *sym = NULL;

There is no longer a need to declare these at the top of the function
in core mesa as everyone is using C99ish compilers these days.

> +
> +    check_symbol_table(table);
> +
> +    hdr = find_symbol(table, name);
> +
> +    check_symbol_table(table);
> +
> +    if (hdr == NULL)
> +       return -1;
> +
> +    /* If the symbol doesn't exist in this namespace at this scope,
> it cannot
> +     * be replaced.
> +     */
> +    for (tmp = hdr->symbols ; tmp != NULL ; tmp = tmp-
> >next_with_same_name) {

Please remove the spaces before ; 

> +       if (tmp->name_space == name_space) {
> +          sym = tmp;
> +          break;
> +       }
> +    }
> +
> +    if (sym == NULL)
> +       return -1;
> +
> +    sym->data = declaration;
> +    check_symbol_table(table);
> +    return 0;
> +}
>  
>  int
>  _mesa_symbol_table_add_global_symbol(struct _mesa_symbol_table
> *table,
> diff --git a/src/mesa/program/symbol_table.h
> b/src/mesa/program/symbol_table.h
> index 1027f47..33a5bab 100644
> --- a/src/mesa/program/symbol_table.h
> +++ b/src/mesa/program/symbol_table.h
> @@ -32,6 +32,9 @@ extern void _mesa_symbol_table_pop_scope(struct
> _mesa_symbol_table *table);
>  extern int _mesa_symbol_table_add_symbol(struct _mesa_symbol_table
> *symtab,
>      int name_space, const char *name, void *declaration);
>  
> +extern int _mesa_symbol_table_replace_symbol(struct
> _mesa_symbol_table *table,
> +    int name_space, const char *name, void *declaration);
> +
>  extern int _mesa_symbol_table_add_global_symbol(
>      struct _mesa_symbol_table *symtab, int name_space, const char
> *name,
>      void *declaration);


More information about the mesa-dev mailing list