Render error set constant for wrappers

This commit is contained in:
Robin Voetter
2021-07-02 22:18:37 +02:00
parent 5a51d18bda
commit 77651872ab
2 changed files with 40 additions and 4 deletions

View File

@@ -13,7 +13,30 @@ pub fn isZigPrimitiveType(name: []const u8) bool {
return true; 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| { for (primitives) |reserved| {
if (mem.eql(u8, reserved, name)) { if (mem.eql(u8, reserved, name)) {

View File

@@ -1068,8 +1068,8 @@ fn Renderer(comptime WriterType: type) type {
try self.writer.writeAll(") "); try self.writer.writeAll(") ");
if (command.return_type.* == .name and mem.eql(u8, command.return_type.name, "VkResult")) { if (command.error_codes.len > 0) {
try self.renderErrorSet(command.error_codes); try self.renderErrorSetName(name);
try self.writer.writeByte('!'); try self.writer.writeByte('!');
} }
@@ -1159,6 +1159,11 @@ fn Renderer(comptime WriterType: type) type {
try self.writeIdentifierFmt("{s}Result", .{trimVkNamespace(command_name)}); 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 { fn renderReturnStruct(self: *Self, command_name: []const u8, returns: []const ReturnValue) !void {
try self.writer.writeAll("pub const "); try self.writer.writeAll("pub const ");
try self.renderReturnStructName(command_name); try self.renderReturnStructName(command_name);
@@ -1182,6 +1187,14 @@ fn Renderer(comptime WriterType: type) type {
try self.renderReturnStruct(name, returns); 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); try self.renderWrapperPrototype(name, command, returns);
if (returns.len == 1 and returns[0].origin == .inner_return_value) { if (returns.len == 1 and returns[0].origin == .inner_return_value) {