forked from mirror/vulkan-zig
Fix empty enums being skipped over
This commit is contained in:
@@ -140,8 +140,7 @@ const DeclarationResolver = struct {
|
|||||||
while (read_index < self.registry.decls.len) {
|
while (read_index < self.registry.decls.len) {
|
||||||
const decl = self.registry.decls[read_index];
|
const decl = self.registry.decls[read_index];
|
||||||
const is_required = self.declarations.contains(decl.name);
|
const is_required = self.declarations.contains(decl.name);
|
||||||
const is_empty_enum = decl.decl_type == .enumeration and decl.decl_type.enumeration.fields.len == 0;
|
if (decl.decl_type == .foreign or is_required) {
|
||||||
if (decl.decl_type == .foreign or (is_required and !is_empty_enum)) {
|
|
||||||
self.registry.decls[write_index] = decl;
|
self.registry.decls[write_index] = decl;
|
||||||
write_index += 1;
|
write_index += 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -541,25 +541,29 @@ fn Renderer(comptime WriterType: type) type {
|
|||||||
try self.renderTypeName(name);
|
try self.renderTypeName(name);
|
||||||
try self.writer.writeAll(" = packed struct {");
|
try self.writer.writeAll(" = packed struct {");
|
||||||
|
|
||||||
var flags_by_bitpos = [_]?[]const u8{null} ** 32;
|
if (bits.fields.len == 0) {
|
||||||
for (bits.fields) |field| {
|
try self.writer.writeAll("_reserved_bits: Flags = 0,");
|
||||||
if (field.value == .bitpos) {
|
} else {
|
||||||
flags_by_bitpos[field.value.bitpos] = field.name;
|
var flags_by_bitpos = [_]?[]const u8{null} ** 32;
|
||||||
}
|
for (bits.fields) |field| {
|
||||||
}
|
if (field.value == .bitpos) {
|
||||||
|
flags_by_bitpos[field.value.bitpos] = field.name;
|
||||||
for (flags_by_bitpos) |opt_flag_name, bitpos| {
|
|
||||||
if (opt_flag_name) |flag_name| {
|
|
||||||
try self.renderEnumFieldName(name, flag_name);
|
|
||||||
} else {
|
|
||||||
try self.writer.print("_reserved_bit_{}", .{bitpos});
|
|
||||||
}
|
|
||||||
|
|
||||||
try self.writer.writeAll(": bool ");
|
|
||||||
if (bitpos == 0) { // Force alignment to integer boundaries
|
|
||||||
try self.writer.writeAll("align(@alignOf(Flags)) ");
|
|
||||||
}
|
}
|
||||||
try self.writer.writeAll("= false, ");
|
}
|
||||||
|
|
||||||
|
for (flags_by_bitpos) |opt_flag_name, bitpos| {
|
||||||
|
if (opt_flag_name) |flag_name| {
|
||||||
|
try self.renderEnumFieldName(name, flag_name);
|
||||||
|
} else {
|
||||||
|
try self.writer.print("_reserved_bit_{}", .{bitpos});
|
||||||
|
}
|
||||||
|
|
||||||
|
try self.writer.writeAll(": bool ");
|
||||||
|
if (bitpos == 0) { // Force alignment to integer boundaries
|
||||||
|
try self.writer.writeAll("align(@alignOf(Flags)) ");
|
||||||
|
}
|
||||||
|
try self.writer.writeAll("= false, ");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
try self.writer.writeAll("pub usingnamespace FlagsMixin(");
|
try self.writer.writeAll("pub usingnamespace FlagsMixin(");
|
||||||
try self.renderTypeName(name);
|
try self.renderTypeName(name);
|
||||||
|
|||||||
Reference in New Issue
Block a user