Initial project import
This commit is contained in:
commit
23f2d29e32
11957 files changed
+1754577
No files matched your search
@@ -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) }
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user