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
11package 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
141end ZLib.Thin;
142