vkd3d-shader: Implement #undef.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Zebediah Figura
2021-01-07 11:48:10 -06:00
committed by Alexandre Julliard
parent 8c927c491c
commit 1fc8b85879
2 changed files with 16 additions and 0 deletions

View File

@@ -282,6 +282,7 @@ static const void *get_parent_data(struct preproc_ctx *ctx)
%token T_IFDEF "#ifdef"
%token T_IFNDEF "#ifndef"
%token T_INCLUDE "#include"
%token T_UNDEF "#undef"
%type <integer> expr
%type <string> body_token
@@ -313,6 +314,18 @@ directive
if (!preproc_add_macro(ctx, &@$, $2))
YYABORT;
}
| T_UNDEF T_IDENTIFIER T_NEWLINE
{
struct preproc_macro *macro;
if ((macro = preproc_find_macro(ctx, $2)))
{
TRACE("Removing macro definition %s.\n", debugstr_a($2));
rb_remove(&ctx->macros, &macro->entry);
preproc_free_macro(macro);
}
vkd3d_free($2);
}
| T_IF expr T_NEWLINE
{
if (!preproc_push_if(ctx, !!$2))