core/compress/shoco
compress_shoco
Types
2Shoco_Model
Shoco_Model :: struct {
min_char: u8,
max_char: u8,
characters_by_id: []u8,
ids_by_character: [256]i16,
successors_by_bigram: []i8,
successors_reversed: []u8,
character_count: u8,
successor_count: u8,
max_successor_n: i8,
packs: []Shoco_Pack,
}SourceShoco_Pack
Shoco_Pack :: struct {
word: u32,
bytes_packed: i8,
bytes_unpacked: i8,
offsets: [8]u16,
masks: [8]i16,
header_mask: u8,
header: u8,
}SourceConstants
1DEFAULT_MODEL
DEFAULT_MODEL :: Shoco_Model = Shoco_Model {
min_char = 39,
max_char = 122,
characters_by_id = {
'e', 'a', 'i', 'o', 't', 'h', 'n', 'r', 's', 'l', 'u', 'c', 'w', 'm', 'd', 'b', 'p', 'f', 'g', 'v', 'y', 'k', '-', 'H', 'M', 'T', '\'', 'B', 'x', 'I', 'W', 'L',
},
ids_by_character = SourceThis file was generated, so don't edit this by hand.
Transliterated from https://github.com/Ed-von-Schleck/shoco/blob/master/shoco_model.h,
which is an English word model.Procedures
8compress_bound
compress_bound :: proc(uncompressed_size: int) -> (worst_case_compressed_size: int)Sourcecompress_string
compress_string :: proc(input: string, model = DEFAULT_MODEL, allocator: mem.Allocator = context.allocator) -> (output: []u8, err: compress.Error)Sourcecompress_string_to_buffer
compress_string_to_buffer :: proc(input: string, output: []u8, model = DEFAULT_MODEL, allocator: mem.Allocator = context.allocator) -> (size: int, err: compress.Error)Sourcedecompress_bound
decompress_bound :: proc(compressed_size: int, model = DEFAULT_MODEL) -> (maximum_decompressed_size: int)Sourcedecompress_slice_to_output_buffer
decompress_slice_to_output_buffer :: proc(input: []u8, output: []u8, model = DEFAULT_MODEL) -> (size: int, err: compress.Error)SourceDecompresses into provided buffer.
decompress_slice_to_string
decompress_slice_to_string :: proc(input: []u8, model = DEFAULT_MODEL, allocator: mem.Allocator = context.allocator) -> (res: string, err: compress.Error)Sourcefind_best_encoding
find_best_encoding :: proc(indices: []i16, n_consecutive: i8, model = DEFAULT_MODEL) -> (res: int)Sourcevalidate_model
validate_model :: proc(model: Shoco_Model) -> (compress.Error, int)Source