minor cleanup of compression.inflate

db4
Doug Coleman 2009-10-05 22:34:43 -05:00
parent b350345f69
commit a182b1835b
1 changed files with 16 additions and 22 deletions

View File

@ -1,13 +1,12 @@
! Copyright (C) 2009 Marc Fauconneau. ! Copyright (C) 2009 Marc Fauconneau.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: accessors arrays assocs byte-vectors combinators USING: accessors arrays assocs byte-vectors combinators
compression.huffman fry hashtables io.binary kernel locals math combinators.smart compression.huffman fry hashtables io.binary
math.bitwise math.order math.ranges sequences sorting ; kernel literals locals math math.bitwise math.order math.ranges
sequences sorting ;
QUALIFIED-WITH: bitstreams bs QUALIFIED-WITH: bitstreams bs
IN: compression.inflate IN: compression.inflate
QUALIFIED-WITH: bitstreams bs
<PRIVATE <PRIVATE
: enum>seq ( assoc -- seq ) : enum>seq ( assoc -- seq )
@ -29,13 +28,6 @@ ERROR: bad-zlib-header ;
2 data bs:seek ! compression level; ignore 2 data bs:seek ! compression level; ignore
; ;
:: default-table ( -- table )
0 <hashtable> :> table
0 143 [a,b] 280 287 [a,b] append 8 table set-at
144 255 [a,b] >array 9 table set-at
256 279 [a,b] >array 7 table set-at
table enum>seq 1 tail ;
CONSTANT: clen-shuffle { 16 17 18 0 8 7 9 6 10 5 11 4 12 3 13 2 14 1 15 } CONSTANT: clen-shuffle { 16 17 18 0 8 7 9 6 10 5 11 4 12 3 13 2 14 1 15 }
: get-table ( values size -- table ) : get-table ( values size -- table )
@ -67,13 +59,17 @@ CONSTANT: clen-shuffle { 16 17 18 0 8 7 9 6 10 5 11 4 12 3 13 2 14 1 15 }
[ dup array? [ second 0 <repetition> ] [ 1array ] if ] map concat [ dup array? [ second 0 <repetition> ] [ 1array ] if ] map concat
nip swap cut 2array [ [ length>> [0,b) ] [ ] bi get-table ] map ; nip swap cut 2array [ [ length>> [0,b) ] [ ] bi get-table ] map ;
: static-huffman-tables ( -- tables ) CONSTANT: static-huffman-tables
$[
[
0 143 [a,b] [ 8 ] replicate 0 143 [a,b] [ 8 ] replicate
144 255 [a,b] [ 9 ] replicate append 144 255 [a,b] [ 9 ] replicate append
256 279 [a,b] [ 7 ] replicate append 256 279 [a,b] [ 7 ] replicate append
280 287 [a,b] [ 8 ] replicate append 280 287 [a,b] [ 8 ] replicate append
0 31 [a,b] [ 5 ] replicate ] append-outputs
2array [ [ length>> [0,b) ] [ ] bi get-table ] map ; 0 31 [a,b] [ 5 ] replicate 2array
[ [ length>> [0,b) ] [ ] bi get-table ] map
]
CONSTANT: length-table CONSTANT: length-table
{ {
@ -183,10 +179,8 @@ CONSTANT: dist-table
{ 1 [ inflate-static ] } { 1 [ inflate-static ] }
{ 2 [ inflate-dynamic ] } { 2 [ inflate-dynamic ] }
{ 3 [ bad-zlib-data f ] } { 3 [ bad-zlib-data f ] }
} } case
case ] [ produce ] keep call suffix concat ;
]
[ produce ] keep call suffix concat ;
PRIVATE> PRIVATE>