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; |