diff --git a/generator/id_render.zig b/generator/id_render.zig index 29b10a2..9b82ba2 100644 --- a/generator/id_render.zig +++ b/generator/id_render.zig @@ -13,7 +13,30 @@ pub fn isZigPrimitiveType(name: []const u8) bool { return true; } - const primitives = [_][]const u8{ "void", "comptime_float", "comptime_int", "bool", "isize", "usize", "f16", "f32", "f64", "f128", "c_longdouble", "noreturn", "type", "anyerror", "c_short", "c_ushort", "c_int", "c_uint", "c_long", "c_ulong", "c_longlong", "c_ulonglong" }; + const primitives = [_][]const u8{ + "void", + "comptime_float", + "comptime_int", + "bool", + "isize", + "usize", + "f16", + "f32", + "f64", + "f128", + "c_longdouble", + "noreturn", + "type", + "anyerror", + "c_short", + "c_ushort", + "c_int", + "c_uint", + "c_long", + "c_ulong", + "c_longlong", + "c_ulonglong", + }; for (primitives) |reserved| { if (mem.eql(u8, reserved, name)) { diff --git a/generator/vulkan/render.zig b/generator/vulkan/render.zig index 51ca469..89ae299 100644 --- a/generator/vulkan/render.zig +++ b/generator/vulkan/render.zig @@ -449,7 +449,7 @@ fn Renderer(comptime WriterType: type) type { if (decl.decl_type == .command) { const command = decl.decl_type.command; if (classifyCommandDispatch(decl.name, command) == dispatch_type) { - try self.writer.print("{s},\n", .{ trimVkNamespace(decl.name) }); + try self.writer.print("{s},\n", .{trimVkNamespace(decl.name)}); } } } @@ -1068,8 +1068,8 @@ fn Renderer(comptime WriterType: type) type { try self.writer.writeAll(") "); - if (command.return_type.* == .name and mem.eql(u8, command.return_type.name, "VkResult")) { - try self.renderErrorSet(command.error_codes); + if (command.error_codes.len > 0) { + try self.renderErrorSetName(name); try self.writer.writeByte('!'); } @@ -1159,6 +1159,11 @@ fn Renderer(comptime WriterType: type) type { try self.writeIdentifierFmt("{s}Result", .{trimVkNamespace(command_name)}); } + fn renderErrorSetName(self: *Self, name: []const u8) !void { + try self.writeIdentifierWithCase(.title, trimVkNamespace(name)); + try self.writer.writeAll("Error"); + } + fn renderReturnStruct(self: *Self, command_name: []const u8, returns: []const ReturnValue) !void { try self.writer.writeAll("pub const "); try self.renderReturnStructName(command_name); @@ -1182,6 +1187,14 @@ fn Renderer(comptime WriterType: type) type { try self.renderReturnStruct(name, returns); } + if (command.error_codes.len > 0) { + try self.writer.writeAll("pub const "); + try self.renderErrorSetName(name); + try self.writer.writeAll(" = "); + try self.renderErrorSet(command.error_codes); + try self.writer.writeAll(";\n"); + } + try self.renderWrapperPrototype(name, command, returns); if (returns.len == 1 and returns[0].origin == .inner_return_value) {