Zebediah Figura : vkd3d-shader: Implement __FILE__.

Alexandre Julliard julliard at winehq.org
Mon Jan 18 15:11:41 CST 2021


Module: vkd3d
Branch: master
Commit: 92877f7a430e678dec7c5c9c1c1fe81edd417568
URL:    https://source.winehq.org/git/vkd3d.git/?a=commit;h=92877f7a430e678dec7c5c9c1c1fe81edd417568

Author: Zebediah Figura <zfigura at codeweavers.com>
Date:   Thu Jan 14 14:47:48 2021 -0600

vkd3d-shader: Implement __FILE__.

Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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);




More information about the wine-cvs mailing list