! 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" {
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 ) ;