dynamic-tables ( reader -- literals distances )


Vocabulary
compression.deflate.private

Inputs
readeran object


Outputs
literalsan object
distancesan object


Definition


:: dynamic-tables ( reader -- literals distances )
5 reader read-bits 257 + :> nl 5 reader read-bits 1 +
:> nd nl 286 >
[ "reserved literal count" invalid-deflate ] when
4 reader read-bits 4 + :> nc 19 0 <array> :> lengths nc [| i
|
3 reader read-bits i code-length-order nth
lengths set-nth
] each-integer lengths f huffman-table :> table nl nd +
table reader read-lengths nl cut :> ( ll dl ) 256 ll nth
zero? [ "missing end-of-block code" invalid-deflate ] when
ll t huffman-table dl [ zero? ] all?
[ H{ } clone ] [ dl t huffman-table ] if ;