1 ----------------------------------------------------------------
   2 --  ZLib for Ada thick binding.                               --
   3 --                                                            --
   4 --  Copyright (C) 2002-2003 Dmitriy Anisimkov                 --
   5 --                                                            --
   6 --  Open source license information is in the zlib.ads file.  --
   7 ----------------------------------------------------------------
   8 
   9 --  $Id: zlib-thin.adb,v 1.8 2003/12/14 18:27:31 vagul Exp $
  10 
  11 package body ZLib.Thin is
  12 
  13    ZLIB_VERSION  : constant Chars_Ptr := zlibVersion;
  14 
  15    Z_Stream_Size : constant Int := Z_Stream'Size / System.Storage_Unit;
  16 
  17    --------------
  18    -- Avail_In --
  19    --------------
  20 
  21    function Avail_In (Strm : in Z_Stream) return UInt is
  22    begin
  23       return Strm.Avail_In;
  24    end Avail_In;
  25 
  26    ---------------
  27    -- Avail_Out --
  28    ---------------
  29 
  30    function Avail_Out (Strm : in Z_Stream) return UInt is
  31    begin
  32       return Strm.Avail_Out;
  33    end Avail_Out;
  34 
  35    ------------------
  36    -- Deflate_Init --
  37    ------------------
  38 
  39    function Deflate_Init
  40      (strm       : Z_Streamp;
  41       level      : Int;
  42       method     : Int;
  43       windowBits : Int;
  44       memLevel   : Int;
  45       strategy   : Int)
  46       return       Int is
  47    begin
  48       return deflateInit2
  49                (strm,
  50                 level,
  51                 method,
  52                 windowBits,
  53                 memLevel,
  54                 strategy,
  55                 ZLIB_VERSION,
  56                 Z_Stream_Size);
  57    end Deflate_Init;
  58 
  59    ------------------
  60    -- Inflate_Init --
  61    ------------------
  62 
  63    function Inflate_Init (strm : Z_Streamp; windowBits : Int) return Int is
  64    begin
  65       return inflateInit2 (strm, windowBits, ZLIB_VERSION, Z_Stream_Size);
  66    end Inflate_Init;
  67 
  68    ------------------------
  69    -- Last_Error_Message --
  70    ------------------------
  71 
  72    function Last_Error_Message (Strm : in Z_Stream) return String is
  73       use Interfaces.C.Strings;
  74    begin
  75       if Strm.msg = Null_Ptr then
  76          return "";
  77       else
  78          return Value (Strm.msg);
  79       end if;
  80    end Last_Error_Message;
  81 
  82    ------------
  83    -- Set_In --
  84    ------------
  85 
  86    procedure Set_In
  87      (Strm   : in out Z_Stream;
  88       Buffer : in     Voidp;
  89       Size   : in     UInt) is
  90    begin
  91       Strm.Next_In  := Buffer;
  92       Strm.Avail_In := Size;
  93    end Set_In;
  94 
  95    ------------------
  96    -- Set_Mem_Func --
  97    ------------------
  98 
  99    procedure Set_Mem_Func
 100      (Strm   : in out Z_Stream;
 101       Opaque : in     Voidp;
 102       Alloc  : in     alloc_func;
 103       Free   : in     free_func) is
 104    begin
 105       Strm.opaque := Opaque;
 106       Strm.zalloc := Alloc;
 107       Strm.zfree  := Free;
 108    end Set_Mem_Func;
 109 
 110    -------------
 111    -- Set_Out --
 112    -------------
 113 
 114    procedure Set_Out
 115      (Strm   : in out Z_Stream;
 116       Buffer : in     Voidp;
 117       Size   : in     UInt) is
 118    begin
 119       Strm.Next_Out  := Buffer;
 120       Strm.Avail_Out := Size;
 121    end Set_Out;
 122 
 123    --------------
 124    -- Total_In --
 125    --------------
 126 
 127    function Total_In (Strm : in Z_Stream) return ULong is
 128    begin
 129       return Strm.Total_In;
 130    end Total_In;
 131 
 132    ---------------
 133    -- Total_Out --
 134    ---------------
 135 
 136    function Total_Out (Strm : in Z_Stream) return ULong is
 137    begin
 138       return Strm.Total_Out;
 139    end Total_Out;
 140 
 141 end ZLib.Thin;