#![allow(dead_code)]
const fn make_decode(widths: [usize; 4]) -> [[u8; 16]; 256] {
let mut table = [[0u8; 16]; 256];
let mut ctrl = 0usize;
while ctrl < 256 {
let mut src = 0u8;
let mut i = 0usize;
while i < 4 {
let tag = (ctrl >> (2 * i)) & 3;
let width = widths[tag];
let base = 4 * i;
let mut b = 0usize;
while b < 4 {
table[ctrl][base + b] = if b < width { src + b as u8 } else { 0x80 };
b += 1;
}
src += width as u8;
i += 1;
}
ctrl += 1;
}
table
}
pub(super) static TABLE_1234: [[u8; 16]; 256] = make_decode([1, 2, 3, 4]);
const fn make_data_len(widths: [usize; 4]) -> [u8; 256] {
let mut table = [0u8; 256];
let mut ctrl = 0usize;
while ctrl < 256 {
let mut sum = 0u8;
let mut i = 0usize;
while i < 4 {
sum += widths[(ctrl >> (2 * i)) & 3] as u8;
i += 1;
}
table[ctrl] = sum;
ctrl += 1;
}
table
}
pub(super) static DATA_LEN_1234: [u8; 256] = make_data_len([1, 2, 3, 4]);
const fn make_decode_1248_pair() -> [[u8; 16]; 16] {
const WIDTHS: [usize; 4] = [1, 2, 4, 8];
let mut table = [[0u8; 16]; 16];
let mut key = 0usize;
while key < 16 {
let tag0 = key & 3;
let tag1 = (key >> 2) & 3;
let w0 = WIDTHS[tag0];
let w1 = WIDTHS[tag1];
let mut b = 0usize;
while b < 8 {
table[key][b] = if b < w0 { b as u8 } else { 0x80 };
b += 1;
}
let src1 = w0 as u8;
b = 0;
while b < 8 {
table[key][8 + b] = if b < w1 { src1 + b as u8 } else { 0x80 };
b += 1;
}
key += 1;
}
table
}
pub(super) static TABLE_1248_PAIR: [[u8; 16]; 16] = make_decode_1248_pair();
const fn make_data_len_1248_pair() -> [u8; 16] {
const WIDTHS: [u8; 4] = [1, 2, 4, 8];
let mut table = [0u8; 16];
let mut key = 0usize;
while key < 16 {
table[key] = WIDTHS[key & 3] + WIDTHS[(key >> 2) & 3];
key += 1;
}
table
}
pub(super) static DATA_LEN_1248_PAIR: [u8; 16] = make_data_len_1248_pair();
const fn make_encode(widths: [usize; 4]) -> [[u8; 16]; 256] {
let mut table = [[0u8; 16]; 256];
let mut ctrl = 0usize;
while ctrl < 256 {
let mut dst = 0usize;
let mut i = 0usize;
while i < 4 {
let tag = (ctrl >> (2 * i)) & 3;
let width = widths[tag];
let mut b = 0usize;
while b < width {
table[ctrl][dst] = (4 * i + b) as u8;
dst += 1;
b += 1;
}
i += 1;
}
ctrl += 1;
}
table
}
pub(super) static ENCODE_TABLE_1234: [[u8; 16]; 256] = make_encode([1, 2, 3, 4]);
const fn make_encode_1248_pair() -> [[u8; 16]; 16] {
const WIDTHS: [usize; 4] = [1, 2, 4, 8];
let mut table = [[0u8; 16]; 16];
let mut key = 0usize;
while key < 16 {
let w0 = WIDTHS[key & 3];
let w1 = WIDTHS[(key >> 2) & 3];
let mut dst = 0usize;
let mut b = 0usize;
while b < w0 {
table[key][dst] = b as u8;
dst += 1;
b += 1;
}
b = 0;
while b < w1 {
table[key][dst] = (8 + b) as u8;
dst += 1;
b += 1;
}
key += 1;
}
table
}
pub(super) static ENCODE_TABLE_1248_PAIR: [[u8; 16]; 16] = make_encode_1248_pair();