From 501f9909712950bdbd4212e0aee1fb8b993b8087 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sat, 2 May 2015 10:41:52 -0700 Subject: [PATCH] compression.zlib: Just deal with raw bytes, no compressed object tuple. --- basis/compression/zlib/zlib-docs.factor | 25 +++-------------- basis/compression/zlib/zlib-tests.factor | 1 - basis/compression/zlib/zlib.factor | 34 +++++------------------- 3 files changed, 11 insertions(+), 49 deletions(-) diff --git a/basis/compression/zlib/zlib-docs.factor b/basis/compression/zlib/zlib-docs.factor index bfe8c12ccd..5e39a71b30 100644 --- a/basis/compression/zlib/zlib-docs.factor +++ b/basis/compression/zlib/zlib-docs.factor @@ -3,36 +3,19 @@ USING: help.markup help.syntax kernel math strings byte-arrays ; IN: compression.zlib -HELP: -{ $values - { "data" byte-array } { "length" integer } - { "compressed" compressed } -} -{ $description "Creates a new " { $link compressed } ", using the provided bytes as the compressed data and the provided length as the uncompressed length. You should almost always use " { $link compress } ", rather than using this constructor directly." } ; - HELP: compress { $values { "byte-array" byte-array } - { "compressed" compressed } + { "byte-array'" byte-array } } -{ $description "Compresses the given byte-array, returning a Factor object holding the compressed data." } ; - -HELP: compressed -{ $class-description "The class used to hold compressed data." } ; - -HELP: compressed-size -{ $values - { "byte-array" byte-array } - { "n" integer } -} -{ $description "Returns the maximum number of bytes required to store the compressed version of a byte array." } ; +{ $description "Returns a byte-array of compressed bytes." } ; HELP: uncompress { $values - { "compressed" compressed } { "byte-array" byte-array } + { "byte-array'" byte-array } } -{ $description "Uncompresses a compressed object, returning a byte-array of the underlying data." } ; +{ $description "Takes a zlib-compressed byte-array and uncompresses it to another byte-array." } ; ARTICLE: "compression.zlib" "Compression (ZLIB)" "The " { $vocab-link "compression.zlib" } " vocabulary provides support for ZLIB:" diff --git a/basis/compression/zlib/zlib-tests.factor b/basis/compression/zlib/zlib-tests.factor index b9bc502d46..d4a8ed7364 100644 --- a/basis/compression/zlib/zlib-tests.factor +++ b/basis/compression/zlib/zlib-tests.factor @@ -7,6 +7,5 @@ IN: compression.zlib.tests : compress-me ( -- byte-array ) B{ 1 2 3 4 5 } ; [ t ] [ compress-me [ compress uncompress ] keep = ] unit-test -[ t ] [ compress-me compress compressed instance? ] unit-test [ ffi:Z_DATA_ERROR zlib-error-message ] [ string>> "data error" = ] must-fail-with diff --git a/basis/compression/zlib/zlib.factor b/basis/compression/zlib/zlib.factor index 3baf8778e4..111a41ea5e 100644 --- a/basis/compression/zlib/zlib.factor +++ b/basis/compression/zlib/zlib.factor @@ -6,13 +6,6 @@ fry kernel libc math math.functions math.ranges sequences system ; QUALIFIED: compression.zlib.ffi IN: compression.zlib -TUPLE: compressed data length ; - -: ( data length -- compressed ) - compressed new - swap >>length - swap >>data ; - ERROR: zlib-failed n string ; : zlib-error-message ( n -- * ) @@ -34,26 +27,13 @@ ERROR: zlib-failed n string ; : compressed-size ( byte-array -- n ) length 1001/1000 * ceiling 12 + ; -: compress ( byte-array -- compressed ) +: compress ( byte-array -- byte-array' ) [ - [ - compressed-size - [ dup underlying>> ] keep ulong - ] keep [ - dup length compression.zlib.ffi:compress zlib-error - ] 2keep drop ulong deref >>length B{ } like - ] keep length ; - -GENERIC: uncompress ( obj -- byte-array ) - -M: compressed uncompress ( compressed -- byte-array ) - [ - length>> [ dup underlying>> ] keep - ulong - ] [ - data>> dup length pick - [ compression.zlib.ffi:uncompress zlib-error ] dip - ] bi ulong deref >>length B{ } like ; + compressed-size + [ dup underlying>> ] keep ulong + ] keep [ + dup length compression.zlib.ffi:compress zlib-error + ] 2keep drop ulong deref >>length B{ } like ; : (uncompress) ( length byte-array -- byte-array ) [ @@ -63,6 +43,6 @@ M: compressed uncompress ( compressed -- byte-array ) 2drop ulong deref memory>byte-array ] with-destructors ; -M: byte-array uncompress ( byte-array -- byte-array ) +: uncompress ( byte-array -- byte-array' ) [ length 5 [0,b) [ 2^ * ] with map ] keep '[ _ (uncompress) ] attempt-all ;