1 ----------------------------------------------------------------
2 -- ZLib for Ada thick binding. --
4 -- Copyright (C) 2002-2003 Dmitriy Anisimkov --
6 -- Open source license information is in the zlib.ads file. --
7 ----------------------------------------------------------------
11 package body ZLib.Thin is
13 ZLIB_VERSION : constant Chars_Ptr :=
14 Interfaces.C.Strings.New_String ("1.1.4");
16 Z_Stream_Size : constant Int := Z_Stream'Size / System.Storage_Unit;
22 function Avail_In (Strm : in Z_Stream) return UInt is
31 function Avail_Out (Strm : in Z_Stream) return UInt is
33 return Strm.Avail_Out;
42 level : in Int := Z_DEFAULT_COMPRESSION)
45 return deflateInit (strm, level, ZLIB_VERSION, Z_Stream_Size);
72 function Inflate_Init (strm : Z_Streamp) return Int is
74 return inflateInit (strm, ZLIB_VERSION, Z_Stream_Size);
77 function Inflate_Init (strm : Z_Streamp; windowBits : Int) return Int is
79 return inflateInit2 (strm, windowBits, ZLIB_VERSION, Z_Stream_Size);
82 function Last_Error_Message (Strm : in Z_Stream) return String is
83 use Interfaces.C.Strings;
85 if Strm.msg = Null_Ptr then
88 return Value (Strm.msg);
90 end Last_Error_Message;
96 function Need_In (strm : Z_Stream) return Boolean is
98 return strm.Avail_In = 0;
105 function Need_Out (strm : Z_Stream) return Boolean is
107 return strm.Avail_Out = 0;
115 (Strm : in out Z_Stream;
116 Buffer : in Byte_Access;
119 Strm.Next_In := Buffer;
120 Strm.Avail_In := Size;
124 (Strm : in out Z_Stream;
128 Set_In (Strm, Bytes.To_Pointer (Buffer), Size);
135 procedure Set_Mem_Func
136 (Strm : in out Z_Stream;
138 Alloc : in alloc_func;
139 Free : in free_func) is
141 Strm.opaque := Opaque;
142 Strm.zalloc := Alloc;
151 (Strm : in out Z_Stream;
152 Buffer : in Byte_Access;
155 Strm.Next_Out := Buffer;
156 Strm.Avail_Out := Size;
160 (Strm : in out Z_Stream;
164 Set_Out (Strm, Bytes.To_Pointer (Buffer), Size);
171 function Total_In (Strm : in Z_Stream) return ULong is
173 return Strm.Total_In;
180 function Total_Out (Strm : in Z_Stream) return ULong is
182 return Strm.Total_Out;