forked from mirror/vulkan-zig
Add back methods from cmd enums relating to function pointer types and names, namespaced under the command flag structs
This commit is contained in:
@@ -995,6 +995,49 @@ fn Renderer(comptime WriterType: type) type {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try self.writer.print(
|
||||||
|
\\pub fn CmdType(comptime tag: std.meta.FieldEnum({0s}CommandFlags)) type {{
|
||||||
|
\\ return switch (tag) {{
|
||||||
|
\\
|
||||||
|
, .{name});
|
||||||
|
for (self.registry.decls) |decl| {
|
||||||
|
const command = switch (decl.decl_type) {
|
||||||
|
.command => |cmd| cmd,
|
||||||
|
else => continue,
|
||||||
|
};
|
||||||
|
|
||||||
|
if (classifyCommandDispatch(decl.name, command) == dispatch_type) {
|
||||||
|
try self.writer.writeAll((" " ** 8) ++ ".");
|
||||||
|
try self.writeIdentifierWithCase(.camel, trimVkNamespace(decl.name));
|
||||||
|
try self.writer.writeAll(" => ");
|
||||||
|
try self.renderCommandPtrName(decl.name);
|
||||||
|
try self.writer.writeAll(",\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try self.writer.writeAll(" };\n}");
|
||||||
|
|
||||||
|
try self.writer.print(
|
||||||
|
\\pub fn cmdName(tag: std.meta.FieldEnum({0s}CommandFlags)) [:0]const u8 {{
|
||||||
|
\\ return switch(tag) {{
|
||||||
|
\\
|
||||||
|
, .{name});
|
||||||
|
for (self.registry.decls) |decl| {
|
||||||
|
const command = switch (decl.decl_type) {
|
||||||
|
.command => |cmd| cmd,
|
||||||
|
else => continue,
|
||||||
|
};
|
||||||
|
|
||||||
|
if (classifyCommandDispatch(decl.name, command) == dispatch_type) {
|
||||||
|
try self.writer.writeAll((" " ** 8) ++ ".");
|
||||||
|
try self.writeIdentifierWithCase(.camel, trimVkNamespace(decl.name));
|
||||||
|
try self.writer.print(
|
||||||
|
\\ => "{s}",
|
||||||
|
\\
|
||||||
|
, .{decl.name});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try self.writer.writeAll(" };\n}");
|
||||||
|
|
||||||
try self.writer.print(
|
try self.writer.print(
|
||||||
\\ pub usingnamespace CommandFlagsMixin({s}CommandFlags);
|
\\ pub usingnamespace CommandFlagsMixin({s}CommandFlags);
|
||||||
\\}};
|
\\}};
|
||||||
@@ -1022,10 +1065,10 @@ fn Renderer(comptime WriterType: type) type {
|
|||||||
\\ var i: usize = 0;
|
\\ var i: usize = 0;
|
||||||
\\ for (@typeInfo({0s}CommandFlags).Struct.fields) |field| {{
|
\\ for (@typeInfo({0s}CommandFlags).Struct.fields) |field| {{
|
||||||
\\ if (@field(cmds, field.name)) {{
|
\\ if (@field(cmds, field.name)) {{
|
||||||
\\ const title_case_name = [_]u8{{std.ascii.toUpper(field.name[0])}} ++ field.name[1..];
|
\\ const field_tag = std.enums.nameCast(std.meta.FieldEnum({0s}CommandFlags), field.name);
|
||||||
\\ const PfnType = @field(vk, "Pfn" ++ title_case_name);
|
\\ const PfnType = {0s}CommandFlags.CmdType(field_tag);
|
||||||
\\ fields[i] = .{{
|
\\ fields[i] = .{{
|
||||||
\\ .name = "vk" ++ title_case_name,
|
\\ .name = {0s}CommandFlags.cmdName(field_tag),
|
||||||
\\ .field_type = PfnType,
|
\\ .field_type = PfnType,
|
||||||
\\ .default_value = null,
|
\\ .default_value = null,
|
||||||
\\ .is_comptime = false,
|
\\ .is_comptime = false,
|
||||||
|
|||||||
Reference in New Issue
Block a user