Function appendLz [src]
Fetch an LZ sequence (length, distance) from inside the buffer
Prototype
pub fn appendLz( self: *AccumBuffer, allocator: Allocator, len: usize, dist: usize, writer: *Writer, ) !void Parameters
self: *AccumBufferallocator: Allocatorlen: usizedist: usizewriter: *Writer Source
pub fn appendLz(
self: *AccumBuffer,
allocator: Allocator,
len: usize,
dist: usize,
writer: *Writer,
) !void {
_ = writer;
const buf_len = self.buf.items.len;
if (dist > buf_len) return error.CorruptInput;
try self.buf.ensureUnusedCapacity(allocator, len);
const buffer = self.buf.allocatedSlice();
const src = buffer[buf_len - dist ..][0..len];
const dst = buffer[buf_len..][0..len];
// This is not a @memmove; it intentionally repeats patterns caused by
// iterating one byte at a time.
for (dst, src) |*d, s| d.* = s;
self.buf.items.len = buf_len + len;
self.len += len;
}