From 3bf0e40b9d8f185f6df8b087a7b5edd52a10cadf Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Fri, 12 Feb 2021 10:48:56 -0600 Subject: [PATCH] vkd3d-shader: Use struct vkd3d_shader_location in struct hlsl_ctx. Signed-off-by: Zebediah Figura Signed-off-by: Matteo Bruni Signed-off-by: Henri Verbeet Signed-off-by: Alexandre Julliard --- libs/vkd3d-shader/hlsl.c | 10 +++++----- libs/vkd3d-shader/hlsl.h | 4 +--- libs/vkd3d-shader/hlsl.l | 12 +++++------- libs/vkd3d-shader/hlsl.y | 6 +++--- 4 files changed, 14 insertions(+), 18 deletions(-) diff --git a/libs/vkd3d-shader/hlsl.c b/libs/vkd3d-shader/hlsl.c index 4597be1c..a129e847 100644 --- a/libs/vkd3d-shader/hlsl.c +++ b/libs/vkd3d-shader/hlsl.c @@ -1482,16 +1482,16 @@ static bool hlsl_ctx_init(struct hlsl_ctx *ctx, struct vkd3d_shader_message_cont ctx->message_context = message_context; - ctx->line_no = ctx->column = 1; - if (!(ctx->source_file = vkd3d_strdup(""))) - return false; if (!(ctx->source_files = vkd3d_malloc(sizeof(*ctx->source_files)))) + return false; + if (!(ctx->source_files[0] = vkd3d_strdup(""))) { - vkd3d_free((void *)ctx->source_file); + vkd3d_free(ctx->source_files); return false; } - ctx->source_files[0] = ctx->source_file; ctx->source_files_count = 1; + ctx->location.source_name = ctx->source_files[0]; + ctx->location.line = ctx->location.column = 1; ctx->matrix_majority = HLSL_COLUMN_MAJOR; diff --git a/libs/vkd3d-shader/hlsl.h b/libs/vkd3d-shader/hlsl.h index 59bf3140..067aae86 100644 --- a/libs/vkd3d-shader/hlsl.h +++ b/libs/vkd3d-shader/hlsl.h @@ -395,9 +395,7 @@ struct hlsl_ctx { const char **source_files; unsigned int source_files_count; - const char *source_file; - unsigned int line_no; - unsigned int column; + struct vkd3d_shader_location location; enum parse_status status; struct vkd3d_shader_message_context *message_context; diff --git a/libs/vkd3d-shader/hlsl.l b/libs/vkd3d-shader/hlsl.l index 38b4bf1f..a0e0beda 100644 --- a/libs/vkd3d-shader/hlsl.l +++ b/libs/vkd3d-shader/hlsl.l @@ -209,8 +209,8 @@ row_major {return KW_ROW_MAJOR; } {NEWLINE} { struct hlsl_ctx *ctx = yyget_extra(yyscanner); - ctx->line_no++; - ctx->column = 1; + ++ctx->location.line; + ctx->location.column = 1; } ^# { @@ -238,7 +238,7 @@ row_major {return KW_ROW_MAJOR; } {NEWLINE} { struct hlsl_ctx *ctx = yyget_extra(yyscanner); - FIXME("Unsupported preprocessor #pragma directive at line %u.\n", ctx->line_no); + FIXME("Unsupported preprocessor #pragma directive at line %u.\n", ctx->location.line); BEGIN(INITIAL); } {ANY} {} @@ -279,10 +279,8 @@ row_major {return KW_ROW_MAJOR; } static void update_location(struct hlsl_ctx *ctx, YYLTYPE *lloc) { - lloc->source_name = ctx->source_file; - lloc->line = ctx->line_no; - lloc->column = ctx->column; - ctx->column += yyget_leng(ctx->scanner); + *lloc = ctx->location; + ctx->location.column += yyget_leng(ctx->scanner); } int hlsl_lexer_compile(struct hlsl_ctx *ctx, const char *text, const char *entrypoint) diff --git a/libs/vkd3d-shader/hlsl.y b/libs/vkd3d-shader/hlsl.y index 15c9c9cd..d7201f58 100644 --- a/libs/vkd3d-shader/hlsl.y +++ b/libs/vkd3d-shader/hlsl.y @@ -1762,8 +1762,8 @@ preproc_directive: const char **new_array = NULL; TRACE("Updating line information to file %s, line %u.\n", debugstr_a($2), $1); - ctx->line_no = $1; - if (strcmp($2, ctx->source_file)) + ctx->location.line = $1; + if (strcmp($2, ctx->location.source_name)) new_array = vkd3d_realloc(ctx->source_files, sizeof(*ctx->source_files) * (ctx->source_files_count + 1)); @@ -1771,7 +1771,7 @@ preproc_directive: { ctx->source_files = new_array; ctx->source_files[ctx->source_files_count++] = $2; - ctx->source_file = $2; + ctx->location.source_name = $2; } else {