authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-06-04 19:38:53 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-06-04 19:38:53 -07:00
log777e31f720d2e64bcdb17ba36880c5bc85f959ee
tree4a2e41b421b3e206830a00b970c874767d2348dc
parent6b43022f6f0b56d7148a3a3f62c91e04a2f10716
signaturebadge-check Signed by SSH key SHA256:4hHJbtBRU58AYXwjL7fkz2fnQHdiye8x1QpTCQ0sHNw

AllocatingWriter: add more methods from ArrayList.Writer


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

allocating_writer.zig+24
......@@ -61,6 +61,30 @@ pub const AllocatingWriter = struct {
6161 self.items.len += bytes.len;
6262 }
6363
64 pub fn orderedRemove(self: *AllocatingWriter, index: usize) u8 {
65 const old_item = self.items[index];
66 std.mem.copyForwards(u8, self.items[index .. self.items.len - 1], self.items[index + 1 .. self.items.len]);
67 self.items.len -= 1;
68 return old_item;
69 }
70
71 pub fn last(self: *AllocatingWriter) u8 {
72 return self.items[self.items.len - 1];
73 }
74
75 pub fn insertAt(self: *AllocatingWriter, index: usize, bytes: []const u8) !void {
76 try self.ensureUnusedCapacity(bytes.len);
77 self.items.len += bytes.len;
78 std.mem.copyBackwards(u8, self.items[index + bytes.len .. self.items.len], self.items[index .. self.items.len - bytes.len]);
79 @memcpy(self.items[index..][0..bytes.len], bytes);
80 }
81
82 pub fn clearAndFree(self: *AllocatingWriter) void {
83 self.allocator.free(self.allocatedSlice());
84 self.items.len = 0;
85 self.capacity = 0;
86 }
87
6488 const W = nio.Writable(@This(), ._var);
6589 pub const writeAll = W.writeAll;
6690 pub const writevAll = W.writevAll;