This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Remove some uses VEC from parsers


On 2018-08-27 05:19 PM, Tom Tromey wrote:
> diff --git a/gdb/go-exp.y b/gdb/go-exp.y
> index 47570d59111..a2436145491 100644
> --- a/gdb/go-exp.y
> +++ b/gdb/go-exp.y
> @@ -1279,17 +1279,15 @@ lex_one_token (struct parser_state *par_state)
>  }
>  
>  /* An object of this type is pushed on a FIFO by the "outer" lexer.  */
> -typedef struct
> +struct token_and_value
>  {
>    int token;
>    YYSTYPE value;
> -} token_and_value;
> -
> -DEF_VEC_O (token_and_value);
> +};
>  
>  /* A FIFO of tokens that have been read but not yet returned to the
>     parser.  */
> -static VEC (token_and_value) *token_fifo;
> +static std::vector<token_and_value> token_fifo;
>  
>  /* Non-zero if the lexer should return tokens from the FIFO.  */
>  static int popping;
> @@ -1485,10 +1483,10 @@ yylex (void)
>  {
>    token_and_value current, next;
>  
> -  if (popping && !VEC_empty (token_and_value, token_fifo))
> +  if (popping && !token_fifo.empty ())
>      {
> -      token_and_value tv = *VEC_index (token_and_value, token_fifo, 0);
> -      VEC_ordered_remove (token_and_value, token_fifo, 0);
> +      token_and_value tv = token_fifo[0];
> +      token_fifo.erase (token_fifo.begin ());
>        yylval = tv.value;
>        /* There's no need to fall through to handle package.name
>  	 as that can never happen here.  In theory.  */
> @@ -1541,12 +1539,12 @@ yylex (void)
>  	    }
>  	}
>  
> -      VEC_safe_push (token_and_value, token_fifo, &next);
> -      VEC_safe_push (token_and_value, token_fifo, &name2);
> +      token_fifo.push_back (next);
> +      token_fifo.push_back (name2);
>      }
>    else
>      {
> -      VEC_safe_push (token_and_value, token_fifo, &next);
> +      token_fifo.push_back (next);
>      }

Can you remove the extra braces, while at it?

LGTM, thanks!

Simon


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]