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