DecompressionContext
A reusable decompression context for decompressing multiple buffers. Defined in src/decompress/context.zig:6 and re-exported as zstd.DecompressionContext (src/zstd.zig:24).
Definition
zig
pub const DecompressionContext = struct {
allocator: std.mem.Allocator,
stream: StreamingDecompressor,
max_window_size: usize, // default 1<<27
// ...
};Methods
init
Create a new decompressor (no options struct):
zig
pub fn init(allocator: std.mem.Allocator) DecompressionContextzig
var dctx = zstd.DecompressionContext.init(allocator);
defer dctx.deinit();deinit
Release streaming buffers:
zig
pub fn deinit(self: *DecompressionContext) voiddecompress
Decompress into preallocated buffer:
zig
pub fn decompress(self: *DecompressionContext, dst: []u8, src: []const u8) !usizezig
var out: [4096]u8 = undefined;
const n = try dctx.decompress(&out, compressed);decompressAlloc
Decompress with allocator:
zig
pub fn decompressAlloc(self: *DecompressionContext, src: []const u8) anyerror![]u8zig
const decompressed = try dctx.decompressAlloc(compressed);
defer allocator.free(decompressed);setMaxWindowSize
Set window size limit:
zig
pub fn setMaxWindowSize(self: *DecompressionContext, size: usize) voidzig
dctx.setMaxWindowSize(1 << 27);reset
Reset internal stream state:
zig
pub fn reset(self: *DecompressionContext) voidExample
zig
var dctx = zstd.DecompressionContext.init(allocator);
defer dctx.deinit();
dctx.setMaxWindowSize(1 << 26);
// Decompress multiple buffers
const d1 = try dctx.decompressAlloc(c1);
defer allocator.free(d1);
var buf: [4096]u8 = undefined;
const n = try dctx.decompress(&buf, c2);
dctx.reset();Removed names: old
Decompressor,Decompressor.init(allocator, opts),decompress(src)returning owned slice withoutdecompressAlloc, and per-callDecompressOptionsare replaced byDecompressionContextabove.