SDL_shadercross: Rewrite JSON emitter to use SDL_IOprintf

From dd5bb45befef968229c2f28353e788a424f7da49 Mon Sep 17 00:00:00 2001
From: Evan Hemsley <[EMAIL REDACTED]>
Date: Thu, 21 Nov 2024 10:47:39 -0800
Subject: [PATCH] Rewrite JSON emitter to use SDL_IOprintf

---
 src/cli.c | 99 +++++++++++++------------------------------------------
 1 file changed, 22 insertions(+), 77 deletions(-)

diff --git a/src/cli.c b/src/cli.c
index 3a89fa1..5bdd1a9 100644
--- a/src/cli.c
+++ b/src/cli.c
@@ -48,88 +48,33 @@ void print_help(void)
     SDL_Log("  %-*s %s", column_width, "-o | --output <value>", "Output file.");
 }
 
-void write_string(SDL_IOStream *outputIO, const char *str)
-{
-    SDL_WriteIO(outputIO, str, SDL_strlen(str));
-}
-
 void write_graphics_reflect_json(SDL_IOStream *outputIO, SDL_ShaderCross_GraphicsShaderInfo *info)
 {
-    char buffer[16];
-    write_string(outputIO, "{ ");
-
-    write_string(outputIO, "\"samplers\": ");
-    SDL_itoa(info->numSamplers, buffer, 10);
-    write_string(outputIO, buffer);
-    write_string(outputIO, ", ");
-
-    write_string(outputIO, "\"storageTextures\": ");
-    SDL_itoa(info->numStorageTextures, buffer, 10);
-    write_string(outputIO, buffer);
-    write_string(outputIO, ", ");
-
-    write_string(outputIO, "\"storageBuffers\": ");
-    SDL_itoa(info->numStorageBuffers, buffer, 10);
-    write_string(outputIO, buffer);
-    write_string(outputIO, ", ");
-
-    write_string(outputIO, "\"uniformBuffers\": ");
-    SDL_itoa(info->numUniformBuffers, buffer, 10);
-    write_string(outputIO, buffer);
-
-    write_string(outputIO, " }\n");
+    SDL_IOprintf(
+        outputIO,
+        "{ \"samplers\": %u, \"storageTextures\": %u, \"storageBuffers\": %u, \"uniformBuffers\": %u }\n",
+        info->numSamplers,
+        info->numStorageTextures,
+        info->numStorageBuffers,
+        info->numUniformBuffers
+    );
 }
 
 void write_compute_reflect_json(SDL_IOStream *outputIO, SDL_ShaderCross_ComputePipelineInfo *info)
 {
-    char buffer[16];
-    write_string(outputIO, "{ ");
-
-    write_string(outputIO, "\"samplers\": ");
-    SDL_itoa(info->numSamplers, buffer, 10);
-    write_string(outputIO, buffer);
-    write_string(outputIO, ", ");
-
-    write_string(outputIO, "\"readOnlyStorageTextures\": ");
-    SDL_itoa(info->numReadOnlyStorageTextures, buffer, 10);
-    write_string(outputIO, buffer);
-    write_string(outputIO, ", ");
-
-    write_string(outputIO, "\"readOnlyStorageBuffers\": ");
-    SDL_itoa(info->numReadOnlyStorageBuffers, buffer, 10);
-    write_string(outputIO, buffer);
-    write_string(outputIO, ", ");
-
-    write_string(outputIO, "\"readWriteStorageTextures\": ");
-    SDL_itoa(info->numReadWriteStorageTextures, buffer, 10);
-    write_string(outputIO, buffer);
-    write_string(outputIO, ", ");
-
-    write_string(outputIO, "\"readWriteStorageBuffers\": ");
-    SDL_itoa(info->numReadWriteStorageBuffers, buffer, 10);
-    write_string(outputIO, buffer);
-    write_string(outputIO, ", ");
-
-    write_string(outputIO, "\"uniformBuffers\": ");
-    SDL_itoa(info->numUniformBuffers, buffer, 10);
-    write_string(outputIO, buffer);
-    write_string(outputIO, ", ");
-
-    write_string(outputIO, "\"threadCountX\": ");
-    SDL_itoa(info->threadCountX, buffer, 10);
-    write_string(outputIO, buffer);
-    write_string(outputIO, ", ");
-
-    write_string(outputIO, "\"threadCountY\": ");
-    SDL_itoa(info->threadCountY, buffer, 10);
-    write_string(outputIO, buffer);
-    write_string(outputIO, ", ");
-
-    write_string(outputIO, "\"threadCountZ\": ");
-    SDL_itoa(info->threadCountZ, buffer, 10);
-    write_string(outputIO, buffer);
-
-    write_string(outputIO, " }\n");
+    SDL_IOprintf(
+        outputIO,
+        "{ \"samplers\": %u, \"readOnlyStorageTextures\": %u, \"readOnlyStorageBuffers\": %u, \"readWriteStorageTextures\": %u, \"readWriteStorageBuffers\": %u, \"uniformBuffers\": %u, \"threadCountX\": %u, \"threadCountY\": %u, \"threadCountZ\": %u }\n",
+        info->numSamplers,
+        info->numReadOnlyStorageTextures,
+        info->numReadOnlyStorageBuffers,
+        info->numReadWriteStorageTextures,
+        info->numReadWriteStorageBuffers,
+        info->numUniformBuffers,
+        info->threadCountX,
+        info->threadCountY,
+        info->threadCountZ
+    );
 }
 
 int main(int argc, char *argv[])
@@ -618,7 +563,7 @@ int main(int argc, char *argv[])
                     }
                 } else {
                     SDL_ShaderCross_GraphicsShaderInfo info;
-                    bool result = !SDL_ShaderCross_ReflectGraphicsSPIRV(
+                    bool result = SDL_ShaderCross_ReflectGraphicsSPIRV(
                         spirv,
                         bytecodeSize,
                         &info);