Zebediah Figura : vkd3d-shader: Implement #ifdef.
Alexandre Julliard
julliard at winehq.org
Tue Jan 12 15:00:33 CST 2021
Module: vkd3d
Branch: master
Commit: b0dbb35ec7131db4f415a1d91f320c52f0935e8a
URL: https://source.winehq.org/git/vkd3d.git/?a=commit;h=b0dbb35ec7131db4f415a1d91f320c52f0935e8a
Author: Zebediah Figura <zfigura at codeweavers.com>
Date: Thu Jan 7 11:48:07 2021 -0600
vkd3d-shader: Implement #ifdef.
Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
libs/vkd3d-shader/preproc.l | 4 ++++
libs/vkd3d-shader/preproc.y | 6 ++++++
2 files changed, 10 insertions(+)
diff --git a/libs/vkd3d-shader/preproc.l b/libs/vkd3d-shader/preproc.l
index 89c205f..12a2e9d 100644
--- a/libs/vkd3d-shader/preproc.l
+++ b/libs/vkd3d-shader/preproc.l
@@ -110,6 +110,8 @@ IDENTIFIER [A-Za-z_][A-Za-z0-9_]*
return T_ENDIF;
if (!strcmp(p, "if"))
return T_IF;
+ if (!strcmp(p, "ifdef"))
+ return T_IFDEF;
preproc_warning(ctx, yyget_lloc(yyscanner), VKD3D_SHADER_WARNING_PP_UNKNOWN_DIRECTIVE,
"Ignoring unknown directive \"%s\".", yytext);
@@ -199,6 +201,7 @@ int yylex(YYSTYPE *lval, YYLTYPE *lloc, yyscan_t scanner)
case T_ELSE:
case T_ENDIF:
case T_IF:
+ case T_IFDEF:
ctx->current_directive = token;
break;
@@ -218,6 +221,7 @@ int yylex(YYSTYPE *lval, YYLTYPE *lloc, yyscan_t scanner)
case T_ELSE:
case T_ENDIF:
case T_IF:
+ case T_IFDEF:
break;
default:
diff --git a/libs/vkd3d-shader/preproc.y b/libs/vkd3d-shader/preproc.y
index 45cad44..c16f230 100644
--- a/libs/vkd3d-shader/preproc.y
+++ b/libs/vkd3d-shader/preproc.y
@@ -183,6 +183,7 @@ static uint32_t preproc_parse_integer(const char *s)
%token T_ELSE "#else"
%token T_ENDIF "#endif"
%token T_IF "#if"
+%token T_IFDEF "#ifdef"
%type <integer> expr
%type <string> body_token
@@ -219,6 +220,11 @@ directive
if (!preproc_push_if(ctx, !!$2))
YYABORT;
}
+ | T_IFDEF T_IDENTIFIER T_NEWLINE
+ {
+ preproc_push_if(ctx, !!preproc_find_macro(ctx, $2));
+ vkd3d_free($2);
+ }
| T_ELIF expr T_NEWLINE
{
if (ctx->if_count)
More information about the wine-cvs
mailing list