zig-webgpu-gen

git clone git://git.electrosoup.com/zig-webgpu-gen
Log | Files | Refs

commit ffed5fc46fc8b98700184a2915742a89375698ae
parent bbb272451cdafb8bfd8bf1b29638e4de90471b39
Author: Christian Ermann <christianermann@gmail.com>
Date:   Sun,  1 Mar 2026 19:02:03 -0800

Improve object, method, and function rendering

Diffstat:
Msrc/main.zig | 23+++++++++++++++++------
1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/src/main.zig b/src/main.zig @@ -661,17 +661,19 @@ const Function = struct { callback: ?CallbackType = null, args: ?[]ParameterType = null, - pub fn render(self: Function, writer: anytype) !void { + pub fn render(self: Function, writer: anytype, indent: u32) !void { + try renderIndent(indent, writer); try writer.writeAll("pub fn "); try snakeToCamel(self.name, writer); try writer.writeAll("(\n"); if (self.args) |args| { for (args) |arg| { - try writer.writeAll(" "); + try renderIndent(indent + 1, writer); try arg.render(writer); try writer.writeAll(",\n"); } } + try renderIndent(indent, writer); try writer.writeAll(") "); if (self.returns) |returns| { try returns.render(writer); @@ -679,6 +681,7 @@ const Function = struct { try writer.writeAll("void"); } try writer.writeAll(" {\n"); + try renderIndent(indent, writer); try writer.writeAll("}\n"); } }; @@ -690,11 +693,18 @@ const Object = struct { extended: ?bool = null, methods: []Function, - pub fn render(self: Object, writer: anytype) !void { + pub fn render(self: Object, writer: anytype, indent: u32) !void { + try renderDoc(self, writer, indent); + try renderIndent(indent, writer); + try writer.writeAll("pub const "); + try snakeToPascal(self.name, writer); + try writer.writeAll(" = extern struct {\n"); + try renderIndent(indent, writer); for (self.methods) |method| { - try method.render(writer); + try method.render(writer, indent + 1); try writer.writeAll("\n"); } + try writer.writeAll("};\n"); } }; @@ -821,12 +831,13 @@ pub fn main() !void { } try stdout.writeAll("// functions\n"); for (parsed.value.functions) |function| { - try function.render(stdout); + try function.render(stdout, 0); try stdout.writeAll("\n"); } try stdout.writeAll("// methods\n"); for (parsed.value.objects) |object| { - try object.render(stdout); + try object.render(stdout, 0); + try stdout.writeAll("\n"); } }