summaryrefslogtreecommitdiff
path: root/clap.zig
diff options
context:
space:
mode:
Diffstat (limited to 'clap.zig')
-rw-r--r--clap.zig44
1 files changed, 18 insertions, 26 deletions
diff --git a/clap.zig b/clap.zig
index 83e605a..2345163 100644
--- a/clap.zig
+++ b/clap.zig
@@ -891,7 +891,7 @@ fn Positionals(
891 fields_len += 1; 891 fields_len += 1;
892 } 892 }
893 893
894 var fields: [fields_len]std.builtin.Type.StructField = undefined; 894 var field_types: [fields_len]type = undefined;
895 var i: usize = 0; 895 var i: usize = 0;
896 for (params) |param| { 896 for (params) |param| {
897 const longest = param.names.longest(); 897 const longest = param.names.longest();
@@ -908,22 +908,11 @@ fn Positionals(
908 }, 908 },
909 }; 909 };
910 910
911 fields[i] = .{ 911 field_types[i] = FieldT;
912 .name = std.fmt.comptimePrint("{}", .{i}),
913 .type = FieldT,
914 .default_value_ptr = null,
915 .is_comptime = false,
916 .alignment = @alignOf(FieldT),
917 };
918 i += 1; 912 i += 1;
919 } 913 }
920 914
921 return @Type(.{ .@"struct" = .{ 915 return @Tuple(&field_types);
922 .layout = .auto,
923 .fields = &fields,
924 .decls = &.{},
925 .is_tuple = true,
926 } });
927} 916}
928 917
929fn initPositionals( 918fn initPositionals(
@@ -1008,7 +997,9 @@ fn Arguments(
1008 fields_len += 1; 997 fields_len += 1;
1009 } 998 }
1010 999
1011 var fields: [fields_len]std.builtin.Type.StructField = undefined; 1000 var field_names: [fields_len][]const u8 = undefined;
1001 var field_types: [fields_len]type = undefined;
1002 var field_attrs: [fields_len]std.builtin.Type.StructField.Attributes = undefined;
1012 var i: usize = 0; 1003 var i: usize = 0;
1013 for (params) |param| { 1004 for (params) |param| {
1014 const longest = param.names.longest(); 1005 const longest = param.names.longest();
@@ -1026,22 +1017,23 @@ fn Arguments(
1026 }; 1017 };
1027 1018
1028 const name = longest.name[0..longest.name.len] ++ ""; // Adds null terminator 1019 const name = longest.name[0..longest.name.len] ++ ""; // Adds null terminator
1029 fields[i] = .{ 1020 field_names[i] = name;
1030 .name = name, 1021 field_types[i] = @TypeOf(default_value);
1031 .type = @TypeOf(default_value), 1022 field_attrs[i] = .{
1023 .@"comptime" = false,
1024 .@"align" = @alignOf(@TypeOf(default_value)),
1032 .default_value_ptr = @ptrCast(&default_value), 1025 .default_value_ptr = @ptrCast(&default_value),
1033 .is_comptime = false,
1034 .alignment = @alignOf(@TypeOf(default_value)),
1035 }; 1026 };
1036 i += 1; 1027 i += 1;
1037 } 1028 }
1038 1029
1039 return @Type(.{ .@"struct" = .{ 1030 return @Struct(
1040 .layout = .auto, 1031 .auto,
1041 .fields = &fields, 1032 null,
1042 .decls = &.{}, 1033 &field_names,
1043 .is_tuple = false, 1034 &field_types,
1044 } }); 1035 if (fields_len == 0) &@splat(.{}) else &field_attrs,
1036 );
1045} 1037}
1046 1038
1047test "str and u64" { 1039test "str and u64" {