struct Decompress [src]

Fields

interface: Reader
state: union { inflate: flate.Decompress, store: *Reader, }

Members

Source

pub const Decompress = struct { interface: Reader, state: union { inflate: flate.Decompress, store: *Reader, }, pub fn init(reader: *Reader, method: CompressionMethod, buffer: []u8) Reader { return switch (method) { .store => .{ .state = .{ .store = reader }, .interface = .{ .context = undefined, .vtable = &.{ .stream = streamStore }, .buffer = buffer, .end = 0, .seek = 0, }, }, .deflate => .{ .state = .{ .inflate = .init(reader, .raw) }, .interface = .{ .context = undefined, .vtable = &.{ .stream = streamDeflate }, .buffer = buffer, .end = 0, .seek = 0, }, }, else => unreachable, }; } fn streamStore(r: *Reader, w: *Writer, limit: std.Io.Limit) Reader.StreamError!usize { const d: *Decompress = @fieldParentPtr("interface", r); return d.store.read(w, limit); } fn streamDeflate(r: *Reader, w: *Writer, limit: std.Io.Limit) Reader.StreamError!usize { const d: *Decompress = @fieldParentPtr("interface", r); return flate.Decompress.read(&d.inflate, w, limit); } }