Module: vkd3d Branch: master Commit: 92877f7a430e678dec7c5c9c1c1fe81edd417568 URL: https://source.winehq.org/git/vkd3d.git/?a=commit;h=92877f7a430e678dec7c5c9c...
Author: Zebediah Figura zfigura@codeweavers.com Date: Thu Jan 14 14:47:48 2021 -0600
vkd3d-shader: Implement __FILE__.
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
---
libs/vkd3d-shader/preproc.l | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+)
diff --git a/libs/vkd3d-shader/preproc.l b/libs/vkd3d-shader/preproc.l index c5c4925..80ac7d0 100644 --- a/libs/vkd3d-shader/preproc.l +++ b/libs/vkd3d-shader/preproc.l @@ -472,6 +472,29 @@ int yylex(YYSTYPE *lval, YYLTYPE *lloc, yyscan_t scanner) continue; }
+ if (!strcmp(text, "__FILE__")) + { + const struct preproc_file *file = preproc_get_top_file(ctx); + + /* Not the current file name, but rather the file name + * before invoking any macros. */ + + if (ctx->current_directive) + { + char *string; + + if (!(string = vkd3d_malloc(strlen(file->filename) + 3))) + return 0; + sprintf(string, ""%s"", file->filename); + lval->string = string; + return T_STRING; + } + + if (preproc_is_writing(ctx)) + vkd3d_string_buffer_printf(&ctx->buffer, ""%s" ", file->filename); + continue; + } + if (!strcmp(text, "__LINE__")) { const struct preproc_file *file = preproc_get_top_file(ctx);