| ... | ... | @@ -10,28 +10,28 @@ const sys = switch (builtin.target.os.tag) { |
| 10 | 10 | else => unreachable, // TODO: |
| 11 | 11 | }; |
| 12 | 12 | |
| 13 | | var singles: std.ArrayHashMap(string, string, std.array_hash_map.StringContext, true) = undefined; |
| 14 | | var multis: std.ArrayHashMap(string, List, std.array_hash_map.StringContext, true) = undefined; |
| 13 | var allocator: std.mem.Allocator = undefined; |
| 14 | var singles: std.array_hash_map.String(string) = .empty; |
| 15 | var multis: std.array_hash_map.String(List) = .empty; |
| 15 | 16 | |
| 16 | 17 | pub fn init(alloc: std.mem.Allocator) void { |
| 17 | | singles = std.ArrayHashMap(string, string, std.array_hash_map.StringContext, true).init(alloc); |
| 18 | | multis = std.ArrayHashMap(string, List, std.array_hash_map.StringContext, true).init(alloc); |
| 18 | allocator = alloc; |
| 19 | 19 | } |
| 20 | 20 | |
| 21 | 21 | pub fn deinit() void { |
| 22 | | singles.deinit(); |
| 22 | singles.deinit(allocator); |
| 23 | 23 | for (multis.values()) |array_list| { |
| 24 | 24 | array_list.deinit(); |
| 25 | 25 | } |
| 26 | | multis.deinit(); |
| 26 | multis.deinit(allocator); |
| 27 | 27 | } |
| 28 | 28 | |
| 29 | 29 | pub fn addSingle(name: string) !void { |
| 30 | | try singles.putNoClobber(name, ""); |
| 30 | try singles.putNoClobber(allocator, name, ""); |
| 31 | 31 | } |
| 32 | 32 | |
| 33 | 33 | pub fn addMulti(name: string) !void { |
| 34 | | try multis.putNoClobber(name, List.init(multis.allocator)); |
| 34 | try multis.putNoClobber(allocator, name, List.init(allocator)); |
| 35 | 35 | } |
| 36 | 36 | |
| 37 | 37 | pub const FlagDashKind = enum { |
| ... | ... | @@ -46,9 +46,9 @@ pub const FlagDashKind = enum { |
| 46 | 46 | } |
| 47 | 47 | }; |
| 48 | 48 | |
| 49 | | pub fn parse(k: FlagDashKind) !std.process.ArgIterator { |
| 49 | pub fn parse(k: FlagDashKind, args: std.process.Args) !std.process.Args.Iterator { |
| 50 | 50 | const dash = k.hypen(); |
| 51 | | var argiter = try std.process.argsWithAllocator(singles.allocator); |
| 51 | var argiter = args.iterate(); |
| 52 | 52 | defer argiter.deinit(); |
| 53 | 53 | var argi: usize = 0; |
| 54 | 54 | blk: while (argiter.next()) |item| : (argi += 1) { |
| ... | ... | @@ -61,7 +61,7 @@ pub fn parse(k: FlagDashKind) !std.process.ArgIterator { |
| 61 | 61 | if (std.mem.eql(u8, name, jtem)) { |
| 62 | 62 | const value = argiter.next().?; |
| 63 | 63 | argi += 1; |
| 64 | | try singles.put(name, value); |
| 64 | try singles.put(allocator, name, value); |
| 65 | 65 | continue :blk; |
| 66 | 66 | } |
| 67 | 67 | } |