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