5c04933520
Getting the basics re-added
35 lines
877 B
Zig
35 lines
877 B
Zig
const std = @import("std");
|
|
const build = @import("build_options");
|
|
|
|
const c = @import("c_decomp.zig");
|
|
const zig = @import("zig_decomp.zig");
|
|
|
|
pub fn getFn(e: Enum) !Fn {
|
|
return switch (e) {
|
|
.gzip => if (build.use_zig_decomp) zig.gzip else c.gzip,
|
|
.lzma => if (build.use_zig_decomp) zig.lzma else c.lzma,
|
|
.lzo => if (build.use_zig_decomp or !build.allow_lzo) error.LzoUnsupported else c.lzo,
|
|
.xz => if (build.use_zig_decomp) zig.xz else c.xz,
|
|
.lz4 => if (build.use_zig_decomp) error.Lz4Unsupported else c.lz4,
|
|
.zstd => if (build.use_zig_decomp) zig.zstd else c.zstd,
|
|
};
|
|
}
|
|
|
|
// Types
|
|
|
|
pub const Fn = *fn (std.mem.Allocator, in: []u8, out: []u8) Error!usize;
|
|
|
|
pub const Enum = enum(u16) {
|
|
gzip = 1,
|
|
lzma,
|
|
lzo,
|
|
xz,
|
|
lz4,
|
|
zstd,
|
|
};
|
|
|
|
pub const Error = error{
|
|
OutOfMemory,
|
|
DecompressionFailed,
|
|
};
|