addValueInner
Function parameters
Parameters
- config_header:*ConfigHeader
- name:[]const u8
- T:type
- value:T
Type definitions in this namespace
Types
Functions in this namespace
Functions
- getOutput
- Deprecated; use `getOutputFile`.
= .config_header
Values
- base_id
- = .config_header
Source
Implementation
fn addValueInner(config_header: *ConfigHeader, name: []const u8, comptime T: type, value: T) !void {
switch (@typeInfo(T)) {
.null => {
try config_header.values.put(name, .undef);
},
.void => {
try config_header.values.put(name, .defined);
},
.bool => {
try config_header.values.put(name, .{ .boolean = value });
},
.int => {
try config_header.values.put(name, .{ .int = value });
},
.comptime_int => {
try config_header.values.put(name, .{ .int = value });
},
.@"enum", .enum_literal => {
try config_header.values.put(name, .{ .ident = @tagName(value) });
},
.optional => {
if (value) |x| {
return addValueInner(config_header, name, @TypeOf(x), x);
} else {
try config_header.values.put(name, .undef);
}
},
.pointer => |ptr| {
switch (@typeInfo(ptr.child)) {
.array => |array| {
if (ptr.size == .one and array.child == u8) {
try config_header.values.put(name, .{ .string = value });
return;
}
},
.int => {
if (ptr.size == .slice and ptr.child == u8) {
try config_header.values.put(name, .{ .string = value });
return;
}
},
else => {},
}
@compileError("unsupported ConfigHeader value type: " ++ @typeName(T));
},
else => @compileError("unsupported ConfigHeader value type: " ++ @typeName(T)),
}
}