Initial project import

This commit is contained in:
Agila Forge Importer committed 2026-07-13 15:20:32 +00:00
commit 23f2d29e32
11957 files changed
+1754577

No files matched your search

+57
View File
@@ -0,0 +1,57 @@
module lz
// Format identifies which LZ-family codec variant to use.
pub enum Format {
lz77
lz78
lzw
lz4
lzss
lzma
lzma2
lzjb
}
// format_from_string parses a case-insensitive format name.
pub fn format_from_string(name string) !Format {
key := name.to_lower()
return match key {
'lz77' { .lz77 }
'lz78' { .lz78 }
'lzw' { .lzw }
'lz4' { .lz4 }
'lzss' { .lzss }
'lzma' { .lzma }
'lzma2' { .lzma2 }
'lzjb' { .lzjb }
else { return error('unknown lz format: ${name}') }
}
}
// compress compresses data with the selected LZ format.
pub fn compress(data []u8, format Format) ![]u8 {
return match format {
.lz77 { compress_lz77(data) }
.lz78 { compress_lz78(data) }
.lzw { compress_lzw(data) }
.lz4 { compress_lz4(data) }
.lzss { compress_lzss(data) }
.lzma { compress_lzma(data) }
.lzma2 { compress_lzma2(data) }
.lzjb { compress_lzjb(data) }
}
}
// decompress decompresses data with the selected LZ format.
pub fn decompress(data []u8, format Format) ![]u8 {
return match format {
.lz77 { decompress_lz77(data) }
.lz78 { decompress_lz78(data) }
.lzw { decompress_lzw(data) }
.lz4 { decompress_lz4(data) }
.lzss { decompress_lzss(data) }
.lzma { decompress_lzma(data) }
.lzma2 { decompress_lzma2(data) }
.lzjb { decompress_lzjb(data) }
}
}