From 0928b25a53b8b5ac69af0e2a846b63374eb51bb5 Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Wed, 8 Jul 2020 01:41:03 +0200 Subject: [PATCH] Add Khronos license information to generated bindings --- generator/vulkan/parse.zig | 1 + generator/vulkan/registry.zig | 1 + generator/vulkan/render.zig | 11 +++++++++++ 3 files changed, 13 insertions(+) diff --git a/generator/vulkan/parse.zig b/generator/vulkan/parse.zig index 5999db9..042bf81 100644 --- a/generator/vulkan/parse.zig +++ b/generator/vulkan/parse.zig @@ -24,6 +24,7 @@ pub fn parseXml(backing_allocator: *Allocator, root: *xml.Element) !ParseResult const allocator = &arena.allocator; var reg = registry.Registry{ + .copyright = root.getCharData("comment") orelse return error.InvalidRegistry, .decls = try parseDeclarations(allocator, root), .api_constants = try parseApiConstants(allocator, root), .tags = try parseTags(allocator, root), diff --git a/generator/vulkan/registry.zig b/generator/vulkan/registry.zig index 42ddf72..c2600ef 100644 --- a/generator/vulkan/registry.zig +++ b/generator/vulkan/registry.zig @@ -1,4 +1,5 @@ pub const Registry = struct { + copyright: []const u8, decls: []Declaration, api_constants: []ApiConstant, tags: []Tag, diff --git a/generator/vulkan/render.zig b/generator/vulkan/render.zig index 03e35e1..51c871f 100644 --- a/generator/vulkan/render.zig +++ b/generator/vulkan/render.zig @@ -6,6 +6,9 @@ const mem = std.mem; const Allocator = mem.Allocator; const preamble = + \\ + \\// This file is generated from the Khronos Vulkan XML API Registry + \\ \\const std = @import("std"); \\const builtin = @import("builtin"); \\const root = @import("root"); @@ -294,6 +297,7 @@ fn Renderer(comptime WriterType: type) type { } fn render(self: *Self) !void { + try self.renderCopyright(); try self.writer.writeAll(preamble); for (self.registry.api_constants) |api_constant| { @@ -309,6 +313,13 @@ fn Renderer(comptime WriterType: type) type { try self.renderWrappers(); } + fn renderCopyright(self: *Self) !void { + var it = mem.split(self.registry.copyright, "\n"); + while (it.next()) |line| { + try self.writer.print("// {}\n", .{line}); + } + } + fn renderApiConstant(self: *Self, api_constant: reg.ApiConstant) !void { try self.writer.writeAll("pub const "); try self.renderName(api_constant.name);