authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-05-05 16:55:49-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-05-05 16:55:49-07:00
logc714a3250f57817ea565f0390cecf12025655376
tree1e9d2c65239070cc3fcfc3ff1915c2efbb019c39
parent5d7f2697deadbcc6f2b370c6eaa69099d6a54ee7

std.ArrayList: add clearRetainingCapacity and clearAndFree


1 files changed, 24 insertions(+), 0 deletions(-)

lib/std/array_list.zig+24
......@@ -294,6 +294,18 @@ pub fn ArrayListAligned(comptime T: type, comptime alignment: ?u29) type {
294294 self.items.len = new_len;
295295 }
296296
297 /// Invalidates all element pointers.
298 pub fn clearRetainingCapacity(self: *Self) void {
299 self.items.len = 0;
300 }
301
302 /// Invalidates all element pointers.
303 pub fn clearAndFree(self: *Self) void {
304 self.allocator.free(self.allocatedSlice());
305 self.items.len = 0;
306 self.capacity = 0;
307 }
308
297309 /// Deprecated: call `ensureUnusedCapacity` or `ensureTotalCapacity`.
298310 pub const ensureCapacity = ensureTotalCapacity;
299311
......@@ -611,6 +623,18 @@ pub fn ArrayListAlignedUnmanaged(comptime T: type, comptime alignment: ?u29) typ
611623 self.items.len = new_len;
612624 }
613625
626 /// Invalidates all element pointers.
627 pub fn clearRetainingCapacity(self: *Self) void {
628 self.items.len = 0;
629 }
630
631 /// Invalidates all element pointers.
632 pub fn clearAndFree(self: *Self, allocator: *Allocator) void {
633 allocator.free(self.allocatedSlice());
634 self.items.len = 0;
635 self.capacity = 0;
636 }
637
614638 /// Deprecated: call `ensureUnusedCapacity` or `ensureTotalCapacity`.
615639 pub const ensureCapacity = ensureTotalCapacity;
616640