1 1.1 christos ---------------------------------------------------------------- 2 1.1 christos -- ZLib for Ada thick binding. -- 3 1.1 christos -- -- 4 1.1 christos -- Copyright (C) 2002-2003 Dmitriy Anisimkov -- 5 1.1 christos -- -- 6 1.1 christos -- Open source license information is in the zlib.ads file. -- 7 1.1 christos ---------------------------------------------------------------- 8 1.1 christos 9 1.1.1.3 christos -- Id: zlib-thin.ads,v 1.11 2004/07/23 06:33:11 vagul Exp 10 1.1 christos 11 1.1 christos with Interfaces.C.Strings; 12 1.1 christos 13 1.1 christos with System; 14 1.1 christos 15 1.1 christos private package ZLib.Thin is 16 1.1 christos 17 1.1 christos -- From zconf.h 18 1.1 christos 19 1.1 christos MAX_MEM_LEVEL : constant := 9; -- zconf.h:105 20 1.1 christos -- zconf.h:105 21 1.1 christos MAX_WBITS : constant := 15; -- zconf.h:115 22 1.1 christos -- 32K LZ77 window 23 1.1 christos -- zconf.h:115 24 1.1 christos SEEK_SET : constant := 8#0000#; -- zconf.h:244 25 1.1 christos -- Seek from beginning of file. 26 1.1 christos -- zconf.h:244 27 1.1 christos SEEK_CUR : constant := 1; -- zconf.h:245 28 1.1 christos -- Seek from current position. 29 1.1 christos -- zconf.h:245 30 1.1 christos SEEK_END : constant := 2; -- zconf.h:246 31 1.1 christos -- Set file pointer to EOF plus "offset" 32 1.1 christos -- zconf.h:246 33 1.1 christos 34 1.1 christos type Byte is new Interfaces.C.unsigned_char; -- 8 bits 35 1.1 christos -- zconf.h:214 36 1.1 christos type UInt is new Interfaces.C.unsigned; -- 16 bits or more 37 1.1 christos -- zconf.h:216 38 1.1 christos type Int is new Interfaces.C.int; 39 1.1 christos 40 1.1 christos type ULong is new Interfaces.C.unsigned_long; -- 32 bits or more 41 1.1 christos -- zconf.h:217 42 1.1 christos subtype Chars_Ptr is Interfaces.C.Strings.chars_ptr; 43 1.1 christos 44 1.1 christos type ULong_Access is access ULong; 45 1.1 christos type Int_Access is access Int; 46 1.1 christos 47 1.1 christos subtype Voidp is System.Address; -- zconf.h:232 48 1.1 christos 49 1.1 christos subtype Byte_Access is Voidp; 50 1.1 christos 51 1.1 christos Nul : constant Voidp := System.Null_Address; 52 1.1 christos -- end from zconf 53 1.1 christos 54 1.1 christos Z_NO_FLUSH : constant := 8#0000#; -- zlib.h:125 55 1.1 christos -- zlib.h:125 56 1.1 christos Z_PARTIAL_FLUSH : constant := 1; -- zlib.h:126 57 1.1 christos -- will be removed, use 58 1.1 christos -- Z_SYNC_FLUSH instead 59 1.1 christos -- zlib.h:126 60 1.1 christos Z_SYNC_FLUSH : constant := 2; -- zlib.h:127 61 1.1 christos -- zlib.h:127 62 1.1 christos Z_FULL_FLUSH : constant := 3; -- zlib.h:128 63 1.1 christos -- zlib.h:128 64 1.1 christos Z_FINISH : constant := 4; -- zlib.h:129 65 1.1 christos -- zlib.h:129 66 1.1 christos Z_OK : constant := 8#0000#; -- zlib.h:132 67 1.1 christos -- zlib.h:132 68 1.1 christos Z_STREAM_END : constant := 1; -- zlib.h:133 69 1.1 christos -- zlib.h:133 70 1.1 christos Z_NEED_DICT : constant := 2; -- zlib.h:134 71 1.1 christos -- zlib.h:134 72 1.1 christos Z_ERRNO : constant := -1; -- zlib.h:135 73 1.1 christos -- zlib.h:135 74 1.1 christos Z_STREAM_ERROR : constant := -2; -- zlib.h:136 75 1.1 christos -- zlib.h:136 76 1.1 christos Z_DATA_ERROR : constant := -3; -- zlib.h:137 77 1.1 christos -- zlib.h:137 78 1.1 christos Z_MEM_ERROR : constant := -4; -- zlib.h:138 79 1.1 christos -- zlib.h:138 80 1.1 christos Z_BUF_ERROR : constant := -5; -- zlib.h:139 81 1.1 christos -- zlib.h:139 82 1.1 christos Z_VERSION_ERROR : constant := -6; -- zlib.h:140 83 1.1 christos -- zlib.h:140 84 1.1 christos Z_NO_COMPRESSION : constant := 8#0000#; -- zlib.h:145 85 1.1 christos -- zlib.h:145 86 1.1 christos Z_BEST_SPEED : constant := 1; -- zlib.h:146 87 1.1 christos -- zlib.h:146 88 1.1 christos Z_BEST_COMPRESSION : constant := 9; -- zlib.h:147 89 1.1 christos -- zlib.h:147 90 1.1 christos Z_DEFAULT_COMPRESSION : constant := -1; -- zlib.h:148 91 1.1 christos -- zlib.h:148 92 1.1 christos Z_FILTERED : constant := 1; -- zlib.h:151 93 1.1 christos -- zlib.h:151 94 1.1 christos Z_HUFFMAN_ONLY : constant := 2; -- zlib.h:152 95 1.1 christos -- zlib.h:152 96 1.1 christos Z_DEFAULT_STRATEGY : constant := 8#0000#; -- zlib.h:153 97 1.1 christos -- zlib.h:153 98 1.1 christos Z_BINARY : constant := 8#0000#; -- zlib.h:156 99 1.1 christos -- zlib.h:156 100 1.1 christos Z_ASCII : constant := 1; -- zlib.h:157 101 1.1 christos -- zlib.h:157 102 1.1 christos Z_UNKNOWN : constant := 2; -- zlib.h:158 103 1.1 christos -- zlib.h:158 104 1.1 christos Z_DEFLATED : constant := 8; -- zlib.h:161 105 1.1 christos -- zlib.h:161 106 1.1 christos Z_NULL : constant := 8#0000#; -- zlib.h:164 107 1.1 christos -- for initializing zalloc, zfree, opaque 108 1.1 christos -- zlib.h:164 109 1.1 christos type gzFile is new Voidp; -- zlib.h:646 110 1.1 christos 111 1.1 christos type Z_Stream is private; 112 1.1 christos 113 1.1 christos type Z_Streamp is access all Z_Stream; -- zlib.h:89 114 1.1 christos 115 1.1 christos type alloc_func is access function 116 1.1 christos (Opaque : Voidp; 117 1.1 christos Items : UInt; 118 1.1 christos Size : UInt) 119 1.1 christos return Voidp; -- zlib.h:63 120 1.1 christos 121 1.1 christos type free_func is access procedure (opaque : Voidp; address : Voidp); 122 1.1 christos 123 1.1 christos function zlibVersion return Chars_Ptr; 124 1.1 christos 125 1.1 christos function Deflate (strm : Z_Streamp; flush : Int) return Int; 126 1.1 christos 127 1.1 christos function DeflateEnd (strm : Z_Streamp) return Int; 128 1.1 christos 129 1.1 christos function Inflate (strm : Z_Streamp; flush : Int) return Int; 130 1.1 christos 131 1.1 christos function InflateEnd (strm : Z_Streamp) return Int; 132 1.1 christos 133 1.1 christos function deflateSetDictionary 134 1.1 christos (strm : Z_Streamp; 135 1.1 christos dictionary : Byte_Access; 136 1.1 christos dictLength : UInt) 137 1.1 christos return Int; 138 1.1 christos 139 1.1 christos function deflateCopy (dest : Z_Streamp; source : Z_Streamp) return Int; 140 1.1 christos -- zlib.h:478 141 1.1 christos 142 1.1 christos function deflateReset (strm : Z_Streamp) return Int; -- zlib.h:495 143 1.1 christos 144 1.1 christos function deflateParams 145 1.1 christos (strm : Z_Streamp; 146 1.1 christos level : Int; 147 1.1 christos strategy : Int) 148 1.1 christos return Int; -- zlib.h:506 149 1.1 christos 150 1.1 christos function inflateSetDictionary 151 1.1 christos (strm : Z_Streamp; 152 1.1 christos dictionary : Byte_Access; 153 1.1 christos dictLength : UInt) 154 1.1 christos return Int; -- zlib.h:548 155 1.1 christos 156 1.1 christos function inflateSync (strm : Z_Streamp) return Int; -- zlib.h:565 157 1.1 christos 158 1.1 christos function inflateReset (strm : Z_Streamp) return Int; -- zlib.h:580 159 1.1 christos 160 1.1 christos function compress 161 1.1 christos (dest : Byte_Access; 162 1.1 christos destLen : ULong_Access; 163 1.1 christos source : Byte_Access; 164 1.1 christos sourceLen : ULong) 165 1.1 christos return Int; -- zlib.h:601 166 1.1 christos 167 1.1 christos function compress2 168 1.1 christos (dest : Byte_Access; 169 1.1 christos destLen : ULong_Access; 170 1.1 christos source : Byte_Access; 171 1.1 christos sourceLen : ULong; 172 1.1 christos level : Int) 173 1.1 christos return Int; -- zlib.h:615 174 1.1 christos 175 1.1 christos function uncompress 176 1.1 christos (dest : Byte_Access; 177 1.1 christos destLen : ULong_Access; 178 1.1 christos source : Byte_Access; 179 1.1 christos sourceLen : ULong) 180 1.1 christos return Int; 181 1.1 christos 182 1.1 christos function gzopen (path : Chars_Ptr; mode : Chars_Ptr) return gzFile; 183 1.1 christos 184 1.1 christos function gzdopen (fd : Int; mode : Chars_Ptr) return gzFile; 185 1.1 christos 186 1.1 christos function gzsetparams 187 1.1 christos (file : gzFile; 188 1.1 christos level : Int; 189 1.1 christos strategy : Int) 190 1.1 christos return Int; 191 1.1 christos 192 1.1 christos function gzread 193 1.1 christos (file : gzFile; 194 1.1 christos buf : Voidp; 195 1.1 christos len : UInt) 196 1.1 christos return Int; 197 1.1 christos 198 1.1 christos function gzwrite 199 1.1 christos (file : in gzFile; 200 1.1 christos buf : in Voidp; 201 1.1 christos len : in UInt) 202 1.1 christos return Int; 203 1.1 christos 204 1.1 christos function gzprintf (file : in gzFile; format : in Chars_Ptr) return Int; 205 1.1 christos 206 1.1 christos function gzputs (file : in gzFile; s : in Chars_Ptr) return Int; 207 1.1 christos 208 1.1 christos function gzgets 209 1.1 christos (file : gzFile; 210 1.1 christos buf : Chars_Ptr; 211 1.1 christos len : Int) 212 1.1 christos return Chars_Ptr; 213 1.1 christos 214 1.1 christos function gzputc (file : gzFile; char : Int) return Int; 215 1.1 christos 216 1.1 christos function gzgetc (file : gzFile) return Int; 217 1.1 christos 218 1.1 christos function gzflush (file : gzFile; flush : Int) return Int; 219 1.1 christos 220 1.1 christos function gzseek 221 1.1 christos (file : gzFile; 222 1.1 christos offset : Int; 223 1.1 christos whence : Int) 224 1.1 christos return Int; 225 1.1 christos 226 1.1 christos function gzrewind (file : gzFile) return Int; 227 1.1 christos 228 1.1 christos function gztell (file : gzFile) return Int; 229 1.1 christos 230 1.1 christos function gzeof (file : gzFile) return Int; 231 1.1 christos 232 1.1 christos function gzclose (file : gzFile) return Int; 233 1.1 christos 234 1.1 christos function gzerror (file : gzFile; errnum : Int_Access) return Chars_Ptr; 235 1.1 christos 236 1.1 christos function adler32 237 1.1 christos (adler : ULong; 238 1.1 christos buf : Byte_Access; 239 1.1 christos len : UInt) 240 1.1 christos return ULong; 241 1.1 christos 242 1.1 christos function crc32 243 1.1 christos (crc : ULong; 244 1.1 christos buf : Byte_Access; 245 1.1 christos len : UInt) 246 1.1 christos return ULong; 247 1.1 christos 248 1.1 christos function deflateInit 249 1.1 christos (strm : Z_Streamp; 250 1.1 christos level : Int; 251 1.1 christos version : Chars_Ptr; 252 1.1 christos stream_size : Int) 253 1.1 christos return Int; 254 1.1 christos 255 1.1 christos function deflateInit2 256 1.1 christos (strm : Z_Streamp; 257 1.1 christos level : Int; 258 1.1 christos method : Int; 259 1.1 christos windowBits : Int; 260 1.1 christos memLevel : Int; 261 1.1 christos strategy : Int; 262 1.1 christos version : Chars_Ptr; 263 1.1 christos stream_size : Int) 264 1.1 christos return Int; 265 1.1 christos 266 1.1 christos function Deflate_Init 267 1.1 christos (strm : Z_Streamp; 268 1.1 christos level : Int; 269 1.1 christos method : Int; 270 1.1 christos windowBits : Int; 271 1.1 christos memLevel : Int; 272 1.1 christos strategy : Int) 273 1.1 christos return Int; 274 1.1 christos pragma Inline (Deflate_Init); 275 1.1 christos 276 1.1 christos function inflateInit 277 1.1 christos (strm : Z_Streamp; 278 1.1 christos version : Chars_Ptr; 279 1.1 christos stream_size : Int) 280 1.1 christos return Int; 281 1.1 christos 282 1.1 christos function inflateInit2 283 1.1 christos (strm : in Z_Streamp; 284 1.1 christos windowBits : in Int; 285 1.1 christos version : in Chars_Ptr; 286 1.1 christos stream_size : in Int) 287 1.1 christos return Int; 288 1.1 christos 289 1.1 christos function inflateBackInit 290 1.1 christos (strm : in Z_Streamp; 291 1.1 christos windowBits : in Int; 292 1.1 christos window : in Byte_Access; 293 1.1 christos version : in Chars_Ptr; 294 1.1 christos stream_size : in Int) 295 1.1 christos return Int; 296 1.1 christos -- Size of window have to be 2**windowBits. 297 1.1 christos 298 1.1 christos function Inflate_Init (strm : Z_Streamp; windowBits : Int) return Int; 299 1.1 christos pragma Inline (Inflate_Init); 300 1.1 christos 301 1.1 christos function zError (err : Int) return Chars_Ptr; 302 1.1 christos 303 1.1 christos function inflateSyncPoint (z : Z_Streamp) return Int; 304 1.1 christos 305 1.1 christos function get_crc_table return ULong_Access; 306 1.1 christos 307 1.1 christos -- Interface to the available fields of the z_stream structure. 308 1.1 christos -- The application must update next_in and avail_in when avail_in has 309 1.1 christos -- dropped to zero. It must update next_out and avail_out when avail_out 310 1.1 christos -- has dropped to zero. The application must initialize zalloc, zfree and 311 1.1 christos -- opaque before calling the init function. 312 1.1 christos 313 1.1 christos procedure Set_In 314 1.1 christos (Strm : in out Z_Stream; 315 1.1 christos Buffer : in Voidp; 316 1.1 christos Size : in UInt); 317 1.1 christos pragma Inline (Set_In); 318 1.1 christos 319 1.1 christos procedure Set_Out 320 1.1 christos (Strm : in out Z_Stream; 321 1.1 christos Buffer : in Voidp; 322 1.1 christos Size : in UInt); 323 1.1 christos pragma Inline (Set_Out); 324 1.1 christos 325 1.1 christos procedure Set_Mem_Func 326 1.1 christos (Strm : in out Z_Stream; 327 1.1 christos Opaque : in Voidp; 328 1.1 christos Alloc : in alloc_func; 329 1.1 christos Free : in free_func); 330 1.1 christos pragma Inline (Set_Mem_Func); 331 1.1 christos 332 1.1 christos function Last_Error_Message (Strm : in Z_Stream) return String; 333 1.1 christos pragma Inline (Last_Error_Message); 334 1.1 christos 335 1.1 christos function Avail_Out (Strm : in Z_Stream) return UInt; 336 1.1 christos pragma Inline (Avail_Out); 337 1.1 christos 338 1.1 christos function Avail_In (Strm : in Z_Stream) return UInt; 339 1.1 christos pragma Inline (Avail_In); 340 1.1 christos 341 1.1 christos function Total_In (Strm : in Z_Stream) return ULong; 342 1.1 christos pragma Inline (Total_In); 343 1.1 christos 344 1.1 christos function Total_Out (Strm : in Z_Stream) return ULong; 345 1.1 christos pragma Inline (Total_Out); 346 1.1 christos 347 1.1 christos function inflateCopy 348 1.1 christos (dest : in Z_Streamp; 349 1.1 christos Source : in Z_Streamp) 350 1.1 christos return Int; 351 1.1 christos 352 1.1 christos function compressBound (Source_Len : in ULong) return ULong; 353 1.1 christos 354 1.1 christos function deflateBound 355 1.1 christos (Strm : in Z_Streamp; 356 1.1 christos Source_Len : in ULong) 357 1.1 christos return ULong; 358 1.1 christos 359 1.1 christos function gzungetc (C : in Int; File : in gzFile) return Int; 360 1.1 christos 361 1.1 christos function zlibCompileFlags return ULong; 362 1.1 christos 363 1.1 christos private 364 1.1 christos 365 1.1 christos type Z_Stream is record -- zlib.h:68 366 1.1 christos Next_In : Voidp := Nul; -- next input byte 367 1.1 christos Avail_In : UInt := 0; -- number of bytes available at next_in 368 1.1 christos Total_In : ULong := 0; -- total nb of input bytes read so far 369 1.1 christos Next_Out : Voidp := Nul; -- next output byte should be put there 370 1.1 christos Avail_Out : UInt := 0; -- remaining free space at next_out 371 1.1 christos Total_Out : ULong := 0; -- total nb of bytes output so far 372 1.1 christos msg : Chars_Ptr; -- last error message, NULL if no error 373 1.1 christos state : Voidp; -- not visible by applications 374 1.1 christos zalloc : alloc_func := null; -- used to allocate the internal state 375 1.1 christos zfree : free_func := null; -- used to free the internal state 376 1.1 christos opaque : Voidp; -- private data object passed to 377 1.1 christos -- zalloc and zfree 378 1.1 christos data_type : Int; -- best guess about the data type: 379 1.1 christos -- ascii or binary 380 1.1 christos adler : ULong; -- adler32 value of the uncompressed 381 1.1 christos -- data 382 1.1 christos reserved : ULong; -- reserved for future use 383 1.1 christos end record; 384 1.1 christos 385 1.1 christos pragma Convention (C, Z_Stream); 386 1.1 christos 387 1.1 christos pragma Import (C, zlibVersion, "zlibVersion"); 388 1.1 christos pragma Import (C, Deflate, "deflate"); 389 1.1 christos pragma Import (C, DeflateEnd, "deflateEnd"); 390 1.1 christos pragma Import (C, Inflate, "inflate"); 391 1.1 christos pragma Import (C, InflateEnd, "inflateEnd"); 392 1.1 christos pragma Import (C, deflateSetDictionary, "deflateSetDictionary"); 393 1.1 christos pragma Import (C, deflateCopy, "deflateCopy"); 394 1.1 christos pragma Import (C, deflateReset, "deflateReset"); 395 1.1 christos pragma Import (C, deflateParams, "deflateParams"); 396 1.1 christos pragma Import (C, inflateSetDictionary, "inflateSetDictionary"); 397 1.1 christos pragma Import (C, inflateSync, "inflateSync"); 398 1.1 christos pragma Import (C, inflateReset, "inflateReset"); 399 1.1 christos pragma Import (C, compress, "compress"); 400 1.1 christos pragma Import (C, compress2, "compress2"); 401 1.1 christos pragma Import (C, uncompress, "uncompress"); 402 1.1 christos pragma Import (C, gzopen, "gzopen"); 403 1.1 christos pragma Import (C, gzdopen, "gzdopen"); 404 1.1 christos pragma Import (C, gzsetparams, "gzsetparams"); 405 1.1 christos pragma Import (C, gzread, "gzread"); 406 1.1 christos pragma Import (C, gzwrite, "gzwrite"); 407 1.1 christos pragma Import (C, gzprintf, "gzprintf"); 408 1.1 christos pragma Import (C, gzputs, "gzputs"); 409 1.1 christos pragma Import (C, gzgets, "gzgets"); 410 1.1 christos pragma Import (C, gzputc, "gzputc"); 411 1.1 christos pragma Import (C, gzgetc, "gzgetc"); 412 1.1 christos pragma Import (C, gzflush, "gzflush"); 413 1.1 christos pragma Import (C, gzseek, "gzseek"); 414 1.1 christos pragma Import (C, gzrewind, "gzrewind"); 415 1.1 christos pragma Import (C, gztell, "gztell"); 416 1.1 christos pragma Import (C, gzeof, "gzeof"); 417 1.1 christos pragma Import (C, gzclose, "gzclose"); 418 1.1 christos pragma Import (C, gzerror, "gzerror"); 419 1.1 christos pragma Import (C, adler32, "adler32"); 420 1.1 christos pragma Import (C, crc32, "crc32"); 421 1.1 christos pragma Import (C, deflateInit, "deflateInit_"); 422 1.1 christos pragma Import (C, inflateInit, "inflateInit_"); 423 1.1 christos pragma Import (C, deflateInit2, "deflateInit2_"); 424 1.1 christos pragma Import (C, inflateInit2, "inflateInit2_"); 425 1.1 christos pragma Import (C, zError, "zError"); 426 1.1 christos pragma Import (C, inflateSyncPoint, "inflateSyncPoint"); 427 1.1 christos pragma Import (C, get_crc_table, "get_crc_table"); 428 1.1 christos 429 1.1 christos -- since zlib 1.2.0: 430 1.1 christos 431 1.1 christos pragma Import (C, inflateCopy, "inflateCopy"); 432 1.1 christos pragma Import (C, compressBound, "compressBound"); 433 1.1 christos pragma Import (C, deflateBound, "deflateBound"); 434 1.1 christos pragma Import (C, gzungetc, "gzungetc"); 435 1.1 christos pragma Import (C, zlibCompileFlags, "zlibCompileFlags"); 436 1.1 christos 437 1.1 christos pragma Import (C, inflateBackInit, "inflateBackInit_"); 438 1.1 christos 439 1.1.1.2 christos -- I stopped binding the inflateBack routines, because realize that 440 1.1 christos -- it does not support zlib and gzip headers for now, and have no 441 1.1 christos -- symmetric deflateBack routines. 442 1.1 christos -- ZLib-Ada is symmetric regarding deflate/inflate data transformation 443 1.1 christos -- and has a similar generic callback interface for the 444 1.1 christos -- deflate/inflate transformation based on the regular Deflate/Inflate 445 1.1 christos -- routines. 446 1.1 christos 447 1.1 christos -- pragma Import (C, inflateBack, "inflateBack"); 448 1.1 christos -- pragma Import (C, inflateBackEnd, "inflateBackEnd"); 449 1.1 christos 450 1.1 christos end ZLib.Thin; 451