Further implementing everthing again.

Added Decompressor vtable interface.
Directory table parsing
Inode reading
Metadata Reader
This commit is contained in:
Caleb J. Gardner
2026-03-27 02:39:07 -05:00
parent a8c067e933
commit ad8222911f
10 changed files with 374 additions and 10 deletions
+24
View File
@@ -0,0 +1,24 @@
const std = @import("std");
const Error = error{
OutOfMemory,
EndOfStream,
ReadFailed,
WriteFailed,
};
const Decompressor = @This();
alloc: std.mem.Allocator = std.heap.page_allocator,
vtable: *struct {
decompress: *const fn (*Decompressor, in: []u8, out: []u8) Error!usize = defaultDecompress,
stateless: *const fn (std.mem.Allocator, in: []u8, out: []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(self.alloc, in, out);
}