compressed-block ( literals distances reader output -- )


Vocabulary
compression.deflate.private

Inputs
literalsan object
distancesan object
readeran object
outputan object


Outputs
None

Definition


:: compressed-block ( literals distances reader output -- )
f :> done!
[ done not ] [
literals reader read-code :> symbol symbol 256 <
[ symbol output push ] [
symbol 256 =
[ t done! ] [
symbol 285 >
[ "reserved length code" invalid-deflate ] when
symbol 257 - :> i i length-bases nth
i length-extras nth reader read-bits +
:> n distances reader read-code :> d d 30 >=
[ "reserved distance code" invalid-deflate ]
when d distance-bases nth d distance-extras nth
reader read-bits +
:> distance n distance output copy-match
] if
] if
] while ;