@@ -100,58 +100,58 @@ pub fn create(owner: *std.Build, options: Options) *ConfigHeader {
100100 return config_header ;
101101}
102102
103+ pub fn addValue (config_header : * ConfigHeader , name : []const u8 , comptime T : type , value : T ) void {
104+ return addValueInner (config_header , name , T , value ) catch @panic ("OOM" );
105+ }
106+
103107pub fn addValues (config_header : * ConfigHeader , values : anytype ) void {
104- return addValuesInner (config_header , values ) catch @panic ("OOM" );
108+ inline for (@typeInfo (@TypeOf (values )).@"struct" .fields ) | field | {
109+ addValue (config_header , field .name , field .type , @field (values , field .name ));
110+ }
105111}
106112
107113pub fn getOutput (config_header : * ConfigHeader ) std.Build.LazyPath {
108114 return .{ .generated = .{ .file = & config_header .output_file } };
109115}
110116
111- fn addValuesInner (config_header : * ConfigHeader , values : anytype ) ! void {
112- inline for (@typeInfo (@TypeOf (values )).@"struct" .fields ) | field | {
113- try putValue (config_header , field .name , field .type , @field (values , field .name ));
114- }
115- }
116-
117- fn putValue (config_header : * ConfigHeader , field_name : []const u8 , comptime T : type , v : T ) ! void {
117+ fn addValueInner (config_header : * ConfigHeader , name : []const u8 , comptime T : type , value : T ) ! void {
118118 switch (@typeInfo (T )) {
119119 .null = > {
120- try config_header .values .put (field_name , .undef );
120+ try config_header .values .put (name , .undef );
121121 },
122122 .void = > {
123- try config_header .values .put (field_name , .defined );
123+ try config_header .values .put (name , .defined );
124124 },
125125 .bool = > {
126- try config_header .values .put (field_name , .{ .boolean = v });
126+ try config_header .values .put (name , .{ .boolean = value });
127127 },
128128 .int = > {
129- try config_header .values .put (field_name , .{ .int = v });
129+ try config_header .values .put (name , .{ .int = value });
130130 },
131131 .comptime_int = > {
132- try config_header .values .put (field_name , .{ .int = v });
132+ try config_header .values .put (name , .{ .int = value });
133133 },
134134 .@"enum" , .enum_literal = > {
135- try config_header .values .put (field_name , .{ .ident = @tagName (v ) });
135+ try config_header .values .put (name , .{ .ident = @tagName (value ) });
136136 },
137137 .optional = > {
138- if (v ) | x | {
139- return putValue (config_header , field_name , @TypeOf (x ), x );
138+ if (value ) | x | {
139+ return addValueInner (config_header , name , @TypeOf (x ), x );
140140 } else {
141- try config_header .values .put (field_name , .undef );
141+ try config_header .values .put (name , .undef );
142142 }
143143 },
144144 .pointer = > | ptr | {
145145 switch (@typeInfo (ptr .child )) {
146146 .array = > | array | {
147147 if (ptr .size == .one and array .child == u8 ) {
148- try config_header .values .put (field_name , .{ .string = v });
148+ try config_header .values .put (name , .{ .string = value });
149149 return ;
150150 }
151151 },
152152 .int = > {
153153 if (ptr .size == .slice and ptr .child == u8 ) {
154- try config_header .values .put (field_name , .{ .string = v });
154+ try config_header .values .put (name , .{ .string = value });
155155 return ;
156156 }
157157 },
0 commit comments