23 lines
598 B
Zig
23 lines
598 B
Zig
const std = @import("std");
|
|
|
|
const Decompressor = @This();
|
|
|
|
pub const Error = error{
|
|
OutOfMemory,
|
|
BadInput,
|
|
OutputTooSmall,
|
|
};
|
|
|
|
vtable: *const struct {
|
|
decompress: *const fn (*Decompressor, []u8, []u8) Error!usize = DefaultDecompress,
|
|
stateless: *const fn (std.mem.Allocator, []u8, []u8) Error!usize,
|
|
},
|
|
|
|
pub fn decompress(self: *Decompressor, in: []u8, out: []u8) Error!usize {
|
|
return self.vtable.decompress(self, in, out);
|
|
}
|
|
|
|
fn DefaultDecompress(self: *Decompressor, in: []u8, out: []u8) Error!usize {
|
|
return self.vtable.stateless(std.heap.smp_allocator, in, out);
|
|
}
|