forked from mirror/vulkan-zig
Render error set constant for wrappers
This commit is contained in:
@@ -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)) {
|
||||||
|
|||||||
@@ -449,7 +449,7 @@ fn Renderer(comptime WriterType: type) type {
|
|||||||
if (decl.decl_type == .command) {
|
if (decl.decl_type == .command) {
|
||||||
const command = decl.decl_type.command;
|
const command = decl.decl_type.command;
|
||||||
if (classifyCommandDispatch(decl.name, command) == dispatch_type) {
|
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(") ");
|
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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user