1 ! Copyright (C) 2014 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.c-types alien.data byte-arrays compression.snappy.ffi
7 ERROR: snappy-error error ;
11 : check-snappy ( ret -- )
12 dup SNAPPY_OK = [ drop ] [ throw-snappy-error ] if ;
14 : n>outs ( n -- byte-array size_t* )
15 [ <byte-array> ] [ size_t <ref> ] bi ;
19 : snappy-compress ( byte-array -- compressed )
21 dup snappy_max_compressed_length
23 [ snappy_compress check-snappy ] 2keep size_t deref head ;
25 : snappy-uncompress ( compressed -- byte-array )
28 dup length 0 size_t <ref>
29 [ snappy_uncompressed_length check-snappy ] keep
32 [ snappy_uncompress check-snappy ] 2keep drop >byte-array ;