authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-07-31 01:16:17-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-07-31 01:16:17-07:00
log9d0872a625f511cee0628c92e5d4a0797641ad24
treebbf433fa27ddce3ea9d1af7843f1081c75ac9c94
parentacd0dabab29e2e771e65919366fa8914d97f6e60

std.ArrayList: add appendNTimesAssumeCapacity


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

lib/std/array_list.zig+18
...@@ -216,6 +216,15 @@ pub fn ArrayListAligned(comptime T: type, comptime alignment: ?u29) type {...@@ -216,6 +216,15 @@ pub fn ArrayListAligned(comptime T: type, comptime alignment: ?u29) type {
216 mem.set(T, self.items[old_len..self.items.len], value);216 mem.set(T, self.items[old_len..self.items.len], value);
217 }217 }
218218
219 /// Append a value to the list `n` times.
220 /// Asserts the capacity is enough.
221 pub fn appendNTimesAssumeCapacity(self: *Self, value: T, n: usize) void {
222 const new_len = self.items.len + n;
223 assert(new_len <= self.capacity);
224 mem.set(T, self.items.ptr[self.items.len..new_len], value);
225 self.items.len = new_len;
226 }
227
219 /// Adjust the list's length to `new_len`.228 /// Adjust the list's length to `new_len`.
220 /// Does not initialize added items if any.229 /// Does not initialize added items if any.
221 pub fn resize(self: *Self, new_len: usize) !void {230 pub fn resize(self: *Self, new_len: usize) !void {
...@@ -473,6 +482,15 @@ pub fn ArrayListAlignedUnmanaged(comptime T: type, comptime alignment: ?u29) typ...@@ -473,6 +482,15 @@ pub fn ArrayListAlignedUnmanaged(comptime T: type, comptime alignment: ?u29) typ
473 mem.set(T, self.items[old_len..self.items.len], value);482 mem.set(T, self.items[old_len..self.items.len], value);
474 }483 }
475484
485 /// Append a value to the list `n` times.
486 /// Asserts the capacity is enough.
487 pub fn appendNTimesAssumeCapacity(self: *Self, value: T, n: usize) void {
488 const new_len = self.items.len + n;
489 assert(new_len <= self.capacity);
490 mem.set(T, self.items.ptr[self.items.len..new_len], value);
491 self.items.len = new_len;
492 }
493
476 /// Adjust the list's length to `new_len`.494 /// Adjust the list's length to `new_len`.
477 /// Does not initialize added items if any.495 /// Does not initialize added items if any.
478 pub fn resize(self: *Self, allocator: *Allocator, new_len: usize) !void {496 pub fn resize(self: *Self, allocator: *Allocator, new_len: usize) !void {