Isabella Bosia : vkd3d-compiler: Add formatting options.

Alexandre Julliard julliard at winehq.org
Mon Sep 7 16:07:11 CDT 2020


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

Author: Isabella Bosia <ibosia at codeweavers.com>
Date:   Mon Sep  7 12:35:47 2020 +0100

vkd3d-compiler: Add formatting options.

Signed-off-by: Isabella Bosia <ibosia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 programs/vkd3d-compiler/main.c | 54 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 53 insertions(+), 1 deletion(-)

diff --git a/programs/vkd3d-compiler/main.c b/programs/vkd3d-compiler/main.c
index c05ec6a..4812d47 100644
--- a/programs/vkd3d-compiler/main.c
+++ b/programs/vkd3d-compiler/main.c
@@ -29,7 +29,7 @@
 #include "vkd3d_common.h"
 #include "vkd3d_shader.h"
 
-#define MAX_COMPILE_OPTIONS 2
+#define MAX_COMPILE_OPTIONS 3
 
 enum
 {
@@ -40,6 +40,7 @@ enum
     OPTION_PRINT_TARGET_TYPES,
     OPTION_STRIP_DEBUG,
     OPTION_VERSION,
+    OPTION_TEXT_FORMATTING,
 };
 
 static const struct source_type_info
@@ -146,6 +147,10 @@ static void print_usage(const char *program_name)
         "  -o, --output=<file>   Write the output to <file>. If <file> is '-' or no\n"
         "                        output file is specified, output will be written to\n"
         "                        standard output.\n"
+        "  --formatting=<type>   Specify the formatting options for text output.\n"
+        "                        Valid values are 'none', 'print', 'colour', 'indent',\n"
+        "                        'show-byte-offset', 'no-header', and 'friendly-names'.\n"
+        "                        Default is --formatting=friendly-names,indent.\n"
         "  --print-source-types  Display the supported source types and exit.\n"
         "  --print-target-types  Display the supported target types for the specified\n"
         "                        source type and exit.\n"
@@ -221,6 +226,45 @@ static bool parse_buffer_uav(enum vkd3d_shader_compile_option_buffer_uav *buffer
     return false;
 }
 
+static bool parse_formatting(uint32_t *formatting, char *arg)
+{
+    static const struct formatting_option
+    {
+        char *name;
+        enum vkd3d_shader_compile_option_formatting_flags value;
+    }
+    opts[] =
+    {
+        {"none",             VKD3D_SHADER_COMPILE_OPTION_FORMATTING_NONE            },
+        {"colour",           VKD3D_SHADER_COMPILE_OPTION_FORMATTING_COLOUR          },
+        {"indent",           VKD3D_SHADER_COMPILE_OPTION_FORMATTING_INDENT          },
+        {"show-byte-offset", VKD3D_SHADER_COMPILE_OPTION_FORMATTING_SHOW_BYTE_OFFSET},
+        {"no-header",        VKD3D_SHADER_COMPILE_OPTION_FORMATTING_NO_HEADER       },
+        {"friendly-names",   VKD3D_SHADER_COMPILE_OPTION_FORMATTING_FRIENDLY_NAMES  },
+    };
+    char *tok;
+
+    for (tok = strtok(arg, ","); tok; tok = strtok(NULL, ","))
+    {
+        unsigned int i;
+        for (i = 0; i < ARRAY_SIZE(opts); ++i)
+        {
+            if (!strcmp(tok, opts[i].name))
+            {
+                *formatting |= opts[i].value;
+                break;
+            }
+        }
+        if (i == ARRAY_SIZE(opts))
+        {
+            fprintf(stderr, "Invalid formatting '%s' specified.\n", tok);
+            return false;
+        }
+    }
+
+    return true;
+}
+
 static enum vkd3d_shader_source_type parse_source_type(const char *source)
 {
     unsigned int i;
@@ -292,6 +336,7 @@ static bool validate_target_type(
 static bool parse_command_line(int argc, char **argv, struct options *options)
 {
     enum vkd3d_shader_compile_option_buffer_uav buffer_uav;
+    enum vkd3d_shader_compile_option_formatting_flags formatting = 0;
     int option;
 
     static struct option long_options[] =
@@ -299,6 +344,7 @@ static bool parse_command_line(int argc, char **argv, struct options *options)
         {"help",               no_argument,       NULL, OPTION_HELP},
         {"buffer-uav",         required_argument, NULL, OPTION_BUFFER_UAV},
         {"output",             required_argument, NULL, OPTION_OUTPUT},
+        {"formatting",         required_argument, NULL, OPTION_TEXT_FORMATTING},
         {"print-source-types", no_argument,       NULL, OPTION_PRINT_SOURCE_TYPES},
         {"print-target-types", no_argument,       NULL, OPTION_PRINT_TARGET_TYPES},
         {"strip-debug",        no_argument,       NULL, OPTION_STRIP_DEBUG},
@@ -339,6 +385,12 @@ static bool parse_command_line(int argc, char **argv, struct options *options)
                 options->output_filename = optarg;
                 break;
 
+            case OPTION_TEXT_FORMATTING:
+                if (!parse_formatting(&formatting, optarg))
+                    return false;
+                add_compile_option(options, VKD3D_SHADER_COMPILE_OPTION_FORMATTING, formatting);
+                break;
+
             case OPTION_PRINT_SOURCE_TYPES:
                 options->print_source_types = true;
                 return true;




More information about the wine-cvs mailing list