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 ----------------------------------------------------------------
9 -- $Id: zlib-thin.adb,v 1.1.1.1 2004/10/11 17:44:23 tromey Exp $
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
;