@@ -15,14 +15,20 @@ pub const Error = error{
15
15
EndOfStream ,
16
16
};
17
17
18
- fn decodeFseHuffmanTree (source : anytype , compressed_size : usize , buffer : []u8 , weights : * [256 ]u4 ) ! usize {
18
+ fn decodeFseHuffmanTree (
19
+ source : anytype ,
20
+ compressed_size : usize ,
21
+ buffer : []u8 ,
22
+ weights : * [256 ]u4 ,
23
+ ) ! usize {
19
24
var stream = std .io .limitedReader (source , compressed_size );
20
25
var bit_reader = readers .bitReader (stream .reader ());
21
26
22
27
var entries : [1 << 6 ]Table.Fse = undefined ;
23
28
const table_size = decodeFseTable (& bit_reader , 256 , 6 , & entries ) catch | err | switch (err ) {
24
29
error .MalformedAccuracyLog , error .MalformedFseTable = > | e | return e ,
25
30
error .EndOfStream = > return error .MalformedFseTable ,
31
+ else = > | e | return e ,
26
32
};
27
33
const accuracy_log = std .math .log2_int_ceil (usize , table_size );
28
34
@@ -46,15 +52,21 @@ fn decodeFseHuffmanTreeSlice(src: []const u8, compressed_size: usize, weights: *
46
52
};
47
53
const accuracy_log = std .math .log2_int_ceil (usize , table_size );
48
54
49
- const start_index = std .math .cast (usize , counting_reader .bytes_read ) orelse return error .MalformedHuffmanTree ;
55
+ const start_index = std .math .cast (usize , counting_reader .bytes_read ) orelse
56
+ return error .MalformedHuffmanTree ;
50
57
var huff_data = src [start_index .. compressed_size ];
51
58
var huff_bits : readers.ReverseBitReader = undefined ;
52
59
huff_bits .init (huff_data ) catch return error .MalformedHuffmanTree ;
53
60
54
61
return assignWeights (& huff_bits , accuracy_log , & entries , weights );
55
62
}
56
63
57
- fn assignWeights (huff_bits : * readers.ReverseBitReader , accuracy_log : usize , entries : * [1 << 6 ]Table.Fse , weights : * [256 ]u4 ) ! usize {
64
+ fn assignWeights (
65
+ huff_bits : * readers.ReverseBitReader ,
66
+ accuracy_log : usize ,
67
+ entries : * [1 << 6 ]Table.Fse ,
68
+ weights : * [256 ]u4 ,
69
+ ) ! usize {
58
70
var i : usize = 0 ;
59
71
var even_state : u32 = huff_bits .readBitsNoEof (u32 , accuracy_log ) catch return error .MalformedHuffmanTree ;
60
72
var odd_state : u32 = huff_bits .readBitsNoEof (u32 , accuracy_log ) catch return error .MalformedHuffmanTree ;
@@ -173,7 +185,10 @@ fn buildHuffmanTree(weights: *[256]u4, symbol_count: usize) error{MalformedHuffm
173
185
return tree ;
174
186
}
175
187
176
- pub fn decodeHuffmanTree (source : anytype , buffer : []u8 ) ! LiteralsSection.HuffmanTree {
188
+ pub fn decodeHuffmanTree (
189
+ source : anytype ,
190
+ buffer : []u8 ,
191
+ ) (@TypeOf (source ).Error || Error )! LiteralsSection.HuffmanTree {
177
192
const header = try source .readByte ();
178
193
var weights : [256 ]u4 = undefined ;
179
194
const symbol_count = if (header < 128 )
@@ -185,7 +200,10 @@ pub fn decodeHuffmanTree(source: anytype, buffer: []u8) !LiteralsSection.Huffman
185
200
return buildHuffmanTree (& weights , symbol_count );
186
201
}
187
202
188
- pub fn decodeHuffmanTreeSlice (src : []const u8 , consumed_count : * usize ) Error ! LiteralsSection.HuffmanTree {
203
+ pub fn decodeHuffmanTreeSlice (
204
+ src : []const u8 ,
205
+ consumed_count : * usize ,
206
+ ) Error ! LiteralsSection.HuffmanTree {
189
207
if (src .len == 0 ) return error .MalformedHuffmanTree ;
190
208
const header = src [0 ];
191
209
var bytes_read : usize = 1 ;
0 commit comments