struct Symbol [src]

Fields

symbol: u8 = 0
code_bits: u4 = 0
kind: Kind = .literal
code: u16 = 0
next: u16 = 0

Members

Source

pub const Symbol = packed struct { pub const Kind = enum(u2) { literal, end_of_block, match, }; symbol: u8 = 0, // symbol from alphabet code_bits: u4 = 0, // number of bits in code 0-15 kind: Kind = .literal, code: u16 = 0, // huffman code of the symbol next: u16 = 0, // pointer to the next symbol in linked list // it is safe to use 0 as null pointer, when sorted 0 has shortest code and fits into lookup // Sorting less than function. pub fn asc(_: void, a: Symbol, b: Symbol) bool { if (a.code_bits == b.code_bits) { if (a.kind == b.kind) { return a.symbol < b.symbol; } return @intFromEnum(a.kind) < @intFromEnum(b.kind); } return a.code_bits < b.code_bits; } }