Handbook
Glossary
dynamic-tables ( reader -- literals distances )
Vocabulary
compression
.
deflate
.
private
Inputs
reader
an
object
Outputs
literals
an
object
distances
an
object
Definition
USING:
arrays
compression.deflate
kernel
math
sequences
;
IN:
compression.deflate.private
::
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
;