141 lines
3.3 KiB
Ada
141 lines
3.3 KiB
Ada
----------------------------------------------------------------
|
|
-- ZLib for Ada thick binding. --
|
|
-- --
|
|
-- Copyright (C) 2002-2003 Dmitriy Anisimkov --
|
|
-- --
|
|
-- Open source license information is in the zlib.ads file. --
|
|
----------------------------------------------------------------
|
|
|
|
-- $Id: zlib-thin.adb,v 1.8 2003/12/14 18:27:31 vagul Exp $
|
|
|
|
package body ZLib.Thin is
|
|
|
|
ZLIB_VERSION : constant Chars_Ptr := zlibVersion;
|
|
|
|
Z_Stream_Size : constant Int := Z_Stream'Size / System.Storage_Unit;
|
|
|
|
--------------
|
|
-- Avail_In --
|
|
--------------
|
|
|
|
function Avail_In (Strm : in Z_Stream) return UInt is
|
|
begin
|
|
return Strm.Avail_In;
|
|
end Avail_In;
|
|
|
|
---------------
|
|
-- Avail_Out --
|
|
---------------
|
|
|
|
function Avail_Out (Strm : in Z_Stream) return UInt is
|
|
begin
|
|
return Strm.Avail_Out;
|
|
end Avail_Out;
|
|
|
|
------------------
|
|
-- Deflate_Init --
|
|
------------------
|
|
|
|
function Deflate_Init
|
|
(strm : Z_Streamp;
|
|
level : Int;
|
|
method : Int;
|
|
windowBits : Int;
|
|
memLevel : Int;
|
|
strategy : Int)
|
|
return Int is
|
|
begin
|
|
return deflateInit2
|
|
(strm,
|
|
level,
|
|
method,
|
|
windowBits,
|
|
memLevel,
|
|
strategy,
|
|
ZLIB_VERSION,
|
|
Z_Stream_Size);
|
|
end Deflate_Init;
|
|
|
|
------------------
|
|
-- Inflate_Init --
|
|
------------------
|
|
|
|
function Inflate_Init (strm : Z_Streamp; windowBits : Int) return Int is
|
|
begin
|
|
return inflateInit2 (strm, windowBits, ZLIB_VERSION, Z_Stream_Size);
|
|
end Inflate_Init;
|
|
|
|
------------------------
|
|
-- Last_Error_Message --
|
|
------------------------
|
|
|
|
function Last_Error_Message (Strm : in Z_Stream) return String is
|
|
use Interfaces.C.Strings;
|
|
begin
|
|
if Strm.msg = Null_Ptr then
|
|
return "";
|
|
else
|
|
return Value (Strm.msg);
|
|
end if;
|
|
end Last_Error_Message;
|
|
|
|
------------
|
|
-- Set_In --
|
|
------------
|
|
|
|
procedure Set_In
|
|
(Strm : in out Z_Stream;
|
|
Buffer : in Voidp;
|
|
Size : in UInt) is
|
|
begin
|
|
Strm.Next_In := Buffer;
|
|
Strm.Avail_In := Size;
|
|
end Set_In;
|
|
|
|
------------------
|
|
-- Set_Mem_Func --
|
|
------------------
|
|
|
|
procedure Set_Mem_Func
|
|
(Strm : in out Z_Stream;
|
|
Opaque : in Voidp;
|
|
Alloc : in alloc_func;
|
|
Free : in free_func) is
|
|
begin
|
|
Strm.opaque := Opaque;
|
|
Strm.zalloc := Alloc;
|
|
Strm.zfree := Free;
|
|
end Set_Mem_Func;
|
|
|
|
-------------
|
|
-- Set_Out --
|
|
-------------
|
|
|
|
procedure Set_Out
|
|
(Strm : in out Z_Stream;
|
|
Buffer : in Voidp;
|
|
Size : in UInt) is
|
|
begin
|
|
Strm.Next_Out := Buffer;
|
|
Strm.Avail_Out := Size;
|
|
end Set_Out;
|
|
|
|
--------------
|
|
-- Total_In --
|
|
--------------
|
|
|
|
function Total_In (Strm : in Z_Stream) return ULong is
|
|
begin
|
|
return Strm.Total_In;
|
|
end Total_In;
|
|
|
|
---------------
|
|
-- Total_Out --
|
|
---------------
|
|
|
|
function Total_Out (Strm : in Z_Stream) return ULong is
|
|
begin
|
|
return Strm.Total_Out;
|
|
end Total_Out;
|
|
|
|
end ZLib.Thin;
|