Home | History | Annotate | Download | only in ada
      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;
    142