summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md10
-rw-r--r--clap.zig19
-rw-r--r--example/help.zig2
-rw-r--r--example/simple-ex.zig2
-rw-r--r--example/simple.zig2
-rw-r--r--example/subcommands.zig2
-rw-r--r--example/usage.zig2
7 files changed, 18 insertions, 21 deletions
diff --git a/README.md b/README.md
index b9fbda7..9675d30 100644
--- a/README.md
+++ b/README.md
@@ -55,7 +55,7 @@ The simplest way to use this library is to just call the `clap.parse` function.
55 55
56```zig 56```zig
57pub fn main() !void { 57pub fn main() !void {
58 var gpa = std.heap.GeneralPurposeAllocator(.{}){}; 58 var gpa = std.heap.DebugAllocator(.{}){};
59 defer _ = gpa.deinit(); 59 defer _ = gpa.deinit();
60 60
61 // First we specify what parameters our program can take. 61 // First we specify what parameters our program can take.
@@ -109,7 +109,7 @@ if you want some other mapping.
109 109
110```zig 110```zig
111pub fn main() !void { 111pub fn main() !void {
112 var gpa = std.heap.GeneralPurposeAllocator(.{}){}; 112 var gpa = std.heap.DebugAllocator(.{}){};
113 defer _ = gpa.deinit(); 113 defer _ = gpa.deinit();
114 114
115 // First we specify what parameters our program can take. 115 // First we specify what parameters our program can take.
@@ -190,7 +190,7 @@ const main_params = clap.parseParamsComptime(
190const MainArgs = clap.ResultEx(clap.Help, &main_params, main_parsers); 190const MainArgs = clap.ResultEx(clap.Help, &main_params, main_parsers);
191 191
192pub fn main() !void { 192pub fn main() !void {
193 var gpa_state = std.heap.GeneralPurposeAllocator(.{}){}; 193 var gpa_state = std.heap.DebugAllocator(.{}){};
194 const gpa = gpa_state.allocator(); 194 const gpa = gpa_state.allocator();
195 defer _ = gpa_state.deinit(); 195 defer _ = gpa_state.deinit();
196 196
@@ -347,7 +347,7 @@ is passed to `help` to control how the help message is printed.
347 347
348```zig 348```zig
349pub fn main() !void { 349pub fn main() !void {
350 var gpa = std.heap.GeneralPurposeAllocator(.{}){}; 350 var gpa = std.heap.DebugAllocator(.{}){};
351 defer _ = gpa.deinit(); 351 defer _ = gpa.deinit();
352 352
353 const params = comptime clap.parseParamsComptime( 353 const params = comptime clap.parseParamsComptime(
@@ -389,7 +389,7 @@ $ zig-out/bin/help --help
389 389
390```zig 390```zig
391pub fn main() !void { 391pub fn main() !void {
392 var gpa = std.heap.GeneralPurposeAllocator(.{}){}; 392 var gpa = std.heap.DebugAllocator(.{}){};
393 defer _ = gpa.deinit(); 393 defer _ = gpa.deinit();
394 394
395 const params = comptime clap.parseParamsComptime( 395 const params = comptime clap.parseParamsComptime(
diff --git a/clap.zig b/clap.zig
index c49ee22..83e605a 100644
--- a/clap.zig
+++ b/clap.zig
@@ -84,11 +84,11 @@ pub fn parseParams(allocator: std.mem.Allocator, str: []const u8) ![]Param(Help)
84/// Takes a string and parses it into many Param(Help). Returned is a newly allocated slice 84/// Takes a string and parses it into many Param(Help). Returned is a newly allocated slice
85/// containing all the parsed params. The caller is responsible for freeing the slice. 85/// containing all the parsed params. The caller is responsible for freeing the slice.
86pub fn parseParamsEx(allocator: std.mem.Allocator, str: []const u8, end: *usize) ![]Param(Help) { 86pub fn parseParamsEx(allocator: std.mem.Allocator, str: []const u8, end: *usize) ![]Param(Help) {
87 var list = std.ArrayList(Param(Help)).init(allocator); 87 var list = std.ArrayList(Param(Help)){};
88 errdefer list.deinit(); 88 errdefer list.deinit(allocator);
89 89
90 try parseParamsIntoArrayListEx(&list, str, end); 90 try parseParamsIntoArrayListEx(allocator, &list, str, end);
91 return try list.toOwnedSlice(); 91 return try list.toOwnedSlice(allocator);
92} 92}
93 93
94/// Takes a string and parses it into many Param(Help) at comptime. Returned is an array of 94/// Takes a string and parses it into many Param(Help) at comptime. Returned is an array of
@@ -131,9 +131,7 @@ fn countParams(str: []const u8) usize {
131/// is returned, containing all the parameters parsed. This function will fail if the input slice 131/// is returned, containing all the parameters parsed. This function will fail if the input slice
132/// is to small. 132/// is to small.
133pub fn parseParamsIntoSlice(slice: []Param(Help), str: []const u8) ![]Param(Help) { 133pub fn parseParamsIntoSlice(slice: []Param(Help), str: []const u8) ![]Param(Help) {
134 var null_alloc = std.heap.FixedBufferAllocator.init("");
135 var list = std.ArrayList(Param(Help)){ 134 var list = std.ArrayList(Param(Help)){
136 .allocator = null_alloc.allocator(),
137 .items = slice[0..0], 135 .items = slice[0..0],
138 .capacity = slice.len, 136 .capacity = slice.len,
139 }; 137 };
@@ -146,14 +144,13 @@ pub fn parseParamsIntoSlice(slice: []Param(Help), str: []const u8) ![]Param(Help
146/// is returned, containing all the parameters parsed. This function will fail if the input slice 144/// is returned, containing all the parameters parsed. This function will fail if the input slice
147/// is to small. 145/// is to small.
148pub fn parseParamsIntoSliceEx(slice: []Param(Help), str: []const u8, end: *usize) ![]Param(Help) { 146pub fn parseParamsIntoSliceEx(slice: []Param(Help), str: []const u8, end: *usize) ![]Param(Help) {
149 var null_alloc = std.heap.FixedBufferAllocator.init(""); 147 var null_allocator = std.heap.FixedBufferAllocator.init("");
150 var list = std.ArrayList(Param(Help)){ 148 var list = std.ArrayList(Param(Help)){
151 .allocator = null_alloc.allocator(),
152 .items = slice[0..0], 149 .items = slice[0..0],
153 .capacity = slice.len, 150 .capacity = slice.len,
154 }; 151 };
155 152
156 try parseParamsIntoArrayListEx(&list, str, end); 153 try parseParamsIntoArrayListEx(null_allocator.allocator(), &list, str, end);
157 return list.items; 154 return list.items;
158} 155}
159 156
@@ -164,13 +161,13 @@ pub fn parseParamsIntoArrayList(list: *std.ArrayList(Param(Help)), str: []const
164} 161}
165 162
166/// Takes a string and parses it into many Param(Help), which are appended onto `list`. 163/// Takes a string and parses it into many Param(Help), which are appended onto `list`.
167pub fn parseParamsIntoArrayListEx(list: *std.ArrayList(Param(Help)), str: []const u8, end: *usize) !void { 164pub fn parseParamsIntoArrayListEx(allocator: std.mem.Allocator, list: *std.ArrayList(Param(Help)), str: []const u8, end: *usize) !void {
168 var i: usize = 0; 165 var i: usize = 0;
169 while (i != str.len) { 166 while (i != str.len) {
170 var end_of_this: usize = undefined; 167 var end_of_this: usize = undefined;
171 errdefer end.* = i + end_of_this; 168 errdefer end.* = i + end_of_this;
172 169
173 try list.append(try parseParamEx(str[i..], &end_of_this)); 170 try list.append(allocator, try parseParamEx(str[i..], &end_of_this));
174 i += end_of_this; 171 i += end_of_this;
175 } 172 }
176 173
diff --git a/example/help.zig b/example/help.zig
index 5c88d83..d8e8f12 100644
--- a/example/help.zig
+++ b/example/help.zig
@@ -1,5 +1,5 @@
1pub fn main() !void { 1pub fn main() !void {
2 var gpa = std.heap.GeneralPurposeAllocator(.{}){}; 2 var gpa = std.heap.DebugAllocator(.{}){};
3 defer _ = gpa.deinit(); 3 defer _ = gpa.deinit();
4 4
5 const params = comptime clap.parseParamsComptime( 5 const params = comptime clap.parseParamsComptime(
diff --git a/example/simple-ex.zig b/example/simple-ex.zig
index 77d8d09..912c75b 100644
--- a/example/simple-ex.zig
+++ b/example/simple-ex.zig
@@ -1,5 +1,5 @@
1pub fn main() !void { 1pub fn main() !void {
2 var gpa = std.heap.GeneralPurposeAllocator(.{}){}; 2 var gpa = std.heap.DebugAllocator(.{}){};
3 defer _ = gpa.deinit(); 3 defer _ = gpa.deinit();
4 4
5 // First we specify what parameters our program can take. 5 // First we specify what parameters our program can take.
diff --git a/example/simple.zig b/example/simple.zig
index 1834396..abcf448 100644
--- a/example/simple.zig
+++ b/example/simple.zig
@@ -1,5 +1,5 @@
1pub fn main() !void { 1pub fn main() !void {
2 var gpa = std.heap.GeneralPurposeAllocator(.{}){}; 2 var gpa = std.heap.DebugAllocator(.{}){};
3 defer _ = gpa.deinit(); 3 defer _ = gpa.deinit();
4 4
5 // First we specify what parameters our program can take. 5 // First we specify what parameters our program can take.
diff --git a/example/subcommands.zig b/example/subcommands.zig
index 7d9f5f1..5c3e7c7 100644
--- a/example/subcommands.zig
+++ b/example/subcommands.zig
@@ -20,7 +20,7 @@ const main_params = clap.parseParamsComptime(
20const MainArgs = clap.ResultEx(clap.Help, &main_params, main_parsers); 20const MainArgs = clap.ResultEx(clap.Help, &main_params, main_parsers);
21 21
22pub fn main() !void { 22pub fn main() !void {
23 var gpa_state = std.heap.GeneralPurposeAllocator(.{}){}; 23 var gpa_state = std.heap.DebugAllocator(.{}){};
24 const gpa = gpa_state.allocator(); 24 const gpa = gpa_state.allocator();
25 defer _ = gpa_state.deinit(); 25 defer _ = gpa_state.deinit();
26 26
diff --git a/example/usage.zig b/example/usage.zig
index b7308f5..aab9cb6 100644
--- a/example/usage.zig
+++ b/example/usage.zig
@@ -1,5 +1,5 @@
1pub fn main() !void { 1pub fn main() !void {
2 var gpa = std.heap.GeneralPurposeAllocator(.{}){}; 2 var gpa = std.heap.DebugAllocator(.{}){};
3 defer _ = gpa.deinit(); 3 defer _ = gpa.deinit();
4 4
5 const params = comptime clap.parseParamsComptime( 5 const params = comptime clap.parseParamsComptime(