From c9ef2824c3794e30dd3f376a6e759f178ae39e0a Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 19 May 2015 10:55:47 -0700 Subject: [PATCH] compression.zlib.ffi: Add some structures and functions for streaming unzipping. --- basis/compression/zlib/ffi/ffi.factor | 59 ++++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/basis/compression/zlib/ffi/ffi.factor b/basis/compression/zlib/ffi/ffi.factor index 5325b588cf..77781dea89 100644 --- a/basis/compression/zlib/ffi/ffi.factor +++ b/basis/compression/zlib/ffi/ffi.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2009 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. USING: alien alien.c-types alien.libraries alien.syntax -combinators system ; +classes.struct combinators system ; IN: compression.zlib.ffi << "zlib" { @@ -29,3 +29,60 @@ TYPEDEF: ulong uLong FUNCTION: int compress ( Bytef* dest, uLongf* destLen, Bytef* source, uLong sourceLen ) ; FUNCTION: int compress2 ( Bytef* dest, uLongf* destLen, Bytef* source, uLong sourceLen, int level ) ; FUNCTION: int uncompress ( Bytef* dest, uLongf* destLen, Bytef* source, uLong sourceLen ) ; + +STRUCT: z_stream + { next_in uchar* } + { avail_in uint } + { total_in ulong } + + { next_out uchar* } + { avail_out uint } + { total_out ulong } + + { msg char* } + { state void* } + + { zalloc void* } + { zfree void* } + { opaque void* } + + { data_type int } + { adler ulong } + { reserved ulong } ; + +TYPEDEF: z_stream* z_streamp + +STRUCT: gz_header + { text int } + { time ulong } + { xflags int } + { os int } + { extra uchar* } + { extra_len uint } + { extra_max uint } + { name uchar* } + { name_max uint } + { comment uchar* } + { comm_max uint } + { hcrc int } + { done int } ; + +TYPEDEF: gz_header* gz_headerp + +CONSTANT: ZLIB_VERSION "1.2.5" + +FUNCTION: int inflateInit_ ( z_streamp strm, c-string version, int stream_size ) ; +FUNCTION: int inflateInit2_ ( z_streamp strm, int windowBits, c-string version, int stream_size ) ; +FUNCTION: int inflateReset ( z_streamp strm ) ; +FUNCTION: int inflateEnd ( z_streamp strm ) ; + +CONSTANT: Z_NO_FLUSH 0 +CONSTANT: Z_PARTIAL_FLUSH 1 +CONSTANT: Z_SYNC_FLUSH 2 +CONSTANT: Z_FULL_FLUSH 3 +CONSTANT: Z_FINISH 4 +CONSTANT: Z_BLOCK 5 +CONSTANT: Z_TREES 6 + +FUNCTION: int inflate ( z_streamp strm, int flush ) ; +FUNCTION: int inflateGetHeader ( z_streamp strm, gz_headerp head ) ;