forked from mirror/vulkan-zig
Field defaults, make types optional by default
This commit is contained in:
@@ -449,7 +449,7 @@ fn parsePointers(allocator: *Allocator, xctok: *XmlCTokenizer, inner_const: bool
|
|||||||
type_info = .{
|
type_info = .{
|
||||||
.pointer = .{
|
.pointer = .{
|
||||||
.is_const = is_const or first_const,
|
.is_const = is_const or first_const,
|
||||||
.is_optional = false, // set elsewhere
|
.is_optional = true, // set elsewhere
|
||||||
.size = .one, // set elsewhere
|
.size = .one, // set elsewhere
|
||||||
.child = child,
|
.child = child,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -233,15 +233,32 @@ fn Renderer(comptime WriterType: type) type {
|
|||||||
for (container.fields) |field| {
|
for (container.fields) |field| {
|
||||||
try self.writeIdentifierWithCase(.snake, field.name);
|
try self.writeIdentifierWithCase(.snake, field.name);
|
||||||
try self.writer.writeAll(": ");
|
try self.writer.writeAll(": ");
|
||||||
|
if (field.bits) |bits| {
|
||||||
|
try self.writer.print(" u{},", .{bits});
|
||||||
|
if (field.field_type != .name or builtin_types.get(field.field_type.name) == null) {
|
||||||
|
try self.writer.writeAll("// ");
|
||||||
try self.renderTypeInfo(field.field_type);
|
try self.renderTypeInfo(field.field_type);
|
||||||
// TODO: Generate struct defaults
|
try self.writer.writeByte('\n');
|
||||||
// TODO: Deal with packed structs
|
}
|
||||||
|
} else {
|
||||||
|
try self.renderTypeInfo(field.field_type);
|
||||||
|
try self.renderContainerDefaultField(name, field);
|
||||||
try self.writer.writeAll(", ");
|
try self.writer.writeAll(", ");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
try self.writer.writeAll("};\n");
|
try self.writer.writeAll("};\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn renderContainerDefaultField(self: *Self, name: []const u8, field: reg.Container.Field) !void {
|
||||||
|
if (mem.eql(u8, field.name, "pNext")) {
|
||||||
|
try self.writer.writeAll(" = null");
|
||||||
|
} else if (mem.eql(u8, field.name, "sType")) {
|
||||||
|
try self.writer.writeAll(" = .");
|
||||||
|
try self.writeIdentifierWithCase(.snake, util.trimVkNamespace(name));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn renderEnumeration(self: *Self, name: []const u8, enumeration: reg.Enum) !void {
|
fn renderEnumeration(self: *Self, name: []const u8, enumeration: reg.Enum) !void {
|
||||||
// TODO: Handle bitmasks
|
// TODO: Handle bitmasks
|
||||||
try self.writer.writeAll("const ");
|
try self.writer.writeAll("const ");
|
||||||
|
|||||||
Reference in New Issue
Block a user