Field defaults, make types optional by default

This commit is contained in:
Robin Voetter
2020-06-16 14:15:18 +02:00
parent 1631265a1c
commit 10d0b3bfcf
2 changed files with 22 additions and 5 deletions

View File

@@ -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,
}, },

View File

@@ -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(": ");
try self.renderTypeInfo(field.field_type); if (field.bits) |bits| {
// TODO: Generate struct defaults try self.writer.print(" u{},", .{bits});
// TODO: Deal with packed structs if (field.field_type != .name or builtin_types.get(field.field_type.name) == null) {
try self.writer.writeAll(", "); try self.writer.writeAll("// ");
try self.renderTypeInfo(field.field_type);
try self.writer.writeByte('\n');
}
} else {
try self.renderTypeInfo(field.field_type);
try self.renderContainerDefaultField(name, field);
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 ");