From a05e82841740fbc3a79474aa88b107d86392f948 Mon Sep 17 00:00:00 2001 From: Fabrice Date: Thu, 14 Aug 2025 21:16:46 +0200 Subject: using new arraylist api --- README.md | 10 +++++----- clap.zig | 19 ++++++++----------- example/help.zig | 2 +- example/simple-ex.zig | 2 +- example/simple.zig | 2 +- example/subcommands.zig | 2 +- example/usage.zig | 2 +- 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. ```zig pub fn main() !void { - var gpa = std.heap.GeneralPurposeAllocator(.{}){}; + var gpa = std.heap.DebugAllocator(.{}){}; defer _ = gpa.deinit(); // First we specify what parameters our program can take. @@ -109,7 +109,7 @@ if you want some other mapping. ```zig pub fn main() !void { - var gpa = std.heap.GeneralPurposeAllocator(.{}){}; + var gpa = std.heap.DebugAllocator(.{}){}; defer _ = gpa.deinit(); // First we specify what parameters our program can take. @@ -190,7 +190,7 @@ const main_params = clap.parseParamsComptime( const MainArgs = clap.ResultEx(clap.Help, &main_params, main_parsers); pub fn main() !void { - var gpa_state = std.heap.GeneralPurposeAllocator(.{}){}; + var gpa_state = std.heap.DebugAllocator(.{}){}; const gpa = gpa_state.allocator(); defer _ = gpa_state.deinit(); @@ -347,7 +347,7 @@ is passed to `help` to control how the help message is printed. ```zig pub fn main() !void { - var gpa = std.heap.GeneralPurposeAllocator(.{}){}; + var gpa = std.heap.DebugAllocator(.{}){}; defer _ = gpa.deinit(); const params = comptime clap.parseParamsComptime( @@ -389,7 +389,7 @@ $ zig-out/bin/help --help ```zig pub fn main() !void { - var gpa = std.heap.GeneralPurposeAllocator(.{}){}; + var gpa = std.heap.DebugAllocator(.{}){}; defer _ = gpa.deinit(); 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) /// Takes a string and parses it into many Param(Help). Returned is a newly allocated slice /// containing all the parsed params. The caller is responsible for freeing the slice. pub fn parseParamsEx(allocator: std.mem.Allocator, str: []const u8, end: *usize) ![]Param(Help) { - var list = std.ArrayList(Param(Help)).init(allocator); - errdefer list.deinit(); + var list = std.ArrayList(Param(Help)){}; + errdefer list.deinit(allocator); - try parseParamsIntoArrayListEx(&list, str, end); - return try list.toOwnedSlice(); + try parseParamsIntoArrayListEx(allocator, &list, str, end); + return try list.toOwnedSlice(allocator); } /// 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 { /// is returned, containing all the parameters parsed. This function will fail if the input slice /// is to small. pub fn parseParamsIntoSlice(slice: []Param(Help), str: []const u8) ![]Param(Help) { - var null_alloc = std.heap.FixedBufferAllocator.init(""); var list = std.ArrayList(Param(Help)){ - .allocator = null_alloc.allocator(), .items = slice[0..0], .capacity = slice.len, }; @@ -146,14 +144,13 @@ pub fn parseParamsIntoSlice(slice: []Param(Help), str: []const u8) ![]Param(Help /// is returned, containing all the parameters parsed. This function will fail if the input slice /// is to small. pub fn parseParamsIntoSliceEx(slice: []Param(Help), str: []const u8, end: *usize) ![]Param(Help) { - var null_alloc = std.heap.FixedBufferAllocator.init(""); + var null_allocator = std.heap.FixedBufferAllocator.init(""); var list = std.ArrayList(Param(Help)){ - .allocator = null_alloc.allocator(), .items = slice[0..0], .capacity = slice.len, }; - try parseParamsIntoArrayListEx(&list, str, end); + try parseParamsIntoArrayListEx(null_allocator.allocator(), &list, str, end); return list.items; } @@ -164,13 +161,13 @@ pub fn parseParamsIntoArrayList(list: *std.ArrayList(Param(Help)), str: []const } /// Takes a string and parses it into many Param(Help), which are appended onto `list`. -pub fn parseParamsIntoArrayListEx(list: *std.ArrayList(Param(Help)), str: []const u8, end: *usize) !void { +pub fn parseParamsIntoArrayListEx(allocator: std.mem.Allocator, list: *std.ArrayList(Param(Help)), str: []const u8, end: *usize) !void { var i: usize = 0; while (i != str.len) { var end_of_this: usize = undefined; errdefer end.* = i + end_of_this; - try list.append(try parseParamEx(str[i..], &end_of_this)); + try list.append(allocator, try parseParamEx(str[i..], &end_of_this)); i += end_of_this; } 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 @@ pub fn main() !void { - var gpa = std.heap.GeneralPurposeAllocator(.{}){}; + var gpa = std.heap.DebugAllocator(.{}){}; defer _ = gpa.deinit(); 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 @@ pub fn main() !void { - var gpa = std.heap.GeneralPurposeAllocator(.{}){}; + var gpa = std.heap.DebugAllocator(.{}){}; defer _ = gpa.deinit(); // 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 @@ pub fn main() !void { - var gpa = std.heap.GeneralPurposeAllocator(.{}){}; + var gpa = std.heap.DebugAllocator(.{}){}; defer _ = gpa.deinit(); // 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( const MainArgs = clap.ResultEx(clap.Help, &main_params, main_parsers); pub fn main() !void { - var gpa_state = std.heap.GeneralPurposeAllocator(.{}){}; + var gpa_state = std.heap.DebugAllocator(.{}){}; const gpa = gpa_state.allocator(); defer _ = gpa_state.deinit(); 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 @@ pub fn main() !void { - var gpa = std.heap.GeneralPurposeAllocator(.{}){}; + var gpa = std.heap.DebugAllocator(.{}){}; defer _ = gpa.deinit(); const params = comptime clap.parseParamsComptime( -- cgit v1.2.3