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.adb,v 1.8 2003/12/14 18:27:31 vagul Exp 10 1.1 christos 11 1.1 christos package body ZLib.Thin is 12 1.1 christos 13 1.1 christos ZLIB_VERSION : constant Chars_Ptr := zlibVersion; 14 1.1 christos 15 1.1 christos Z_Stream_Size : constant Int := Z_Stream'Size / System.Storage_Unit; 16 1.1 christos 17 1.1 christos -------------- 18 1.1 christos -- Avail_In -- 19 1.1 christos -------------- 20 1.1 christos 21 1.1 christos function Avail_In (Strm : in Z_Stream) return UInt is 22 1.1 christos begin 23 1.1 christos return Strm.Avail_In; 24 1.1 christos end Avail_In; 25 1.1 christos 26 1.1 christos --------------- 27 1.1 christos -- Avail_Out -- 28 1.1 christos --------------- 29 1.1 christos 30 1.1 christos function Avail_Out (Strm : in Z_Stream) return UInt is 31 1.1 christos begin 32 1.1 christos return Strm.Avail_Out; 33 1.1 christos end Avail_Out; 34 1.1 christos 35 1.1 christos ------------------ 36 1.1 christos -- Deflate_Init -- 37 1.1 christos ------------------ 38 1.1 christos 39 1.1 christos function Deflate_Init 40 1.1 christos (strm : Z_Streamp; 41 1.1 christos level : Int; 42 1.1 christos method : Int; 43 1.1 christos windowBits : Int; 44 1.1 christos memLevel : Int; 45 1.1 christos strategy : Int) 46 1.1 christos return Int is 47 1.1 christos begin 48 1.1 christos return deflateInit2 49 1.1 christos (strm, 50 1.1 christos level, 51 1.1 christos method, 52 1.1 christos windowBits, 53 1.1 christos memLevel, 54 1.1 christos strategy, 55 1.1 christos ZLIB_VERSION, 56 1.1 christos Z_Stream_Size); 57 1.1 christos end Deflate_Init; 58 1.1 christos 59 1.1 christos ------------------ 60 1.1 christos -- Inflate_Init -- 61 1.1 christos ------------------ 62 1.1 christos 63 1.1 christos function Inflate_Init (strm : Z_Streamp; windowBits : Int) return Int is 64 1.1 christos begin 65 1.1 christos return inflateInit2 (strm, windowBits, ZLIB_VERSION, Z_Stream_Size); 66 1.1 christos end Inflate_Init; 67 1.1 christos 68 1.1 christos ------------------------ 69 1.1 christos -- Last_Error_Message -- 70 1.1 christos ------------------------ 71 1.1 christos 72 1.1 christos function Last_Error_Message (Strm : in Z_Stream) return String is 73 1.1 christos use Interfaces.C.Strings; 74 1.1 christos begin 75 1.1 christos if Strm.msg = Null_Ptr then 76 1.1 christos return ""; 77 1.1 christos else 78 1.1 christos return Value (Strm.msg); 79 1.1 christos end if; 80 1.1 christos end Last_Error_Message; 81 1.1 christos 82 1.1 christos ------------ 83 1.1 christos -- Set_In -- 84 1.1 christos ------------ 85 1.1 christos 86 1.1 christos procedure Set_In 87 1.1 christos (Strm : in out Z_Stream; 88 1.1 christos Buffer : in Voidp; 89 1.1 christos Size : in UInt) is 90 1.1 christos begin 91 1.1 christos Strm.Next_In := Buffer; 92 1.1 christos Strm.Avail_In := Size; 93 1.1 christos end Set_In; 94 1.1 christos 95 1.1 christos ------------------ 96 1.1 christos -- Set_Mem_Func -- 97 1.1 christos ------------------ 98 1.1 christos 99 1.1 christos procedure Set_Mem_Func 100 1.1 christos (Strm : in out Z_Stream; 101 1.1 christos Opaque : in Voidp; 102 1.1 christos Alloc : in alloc_func; 103 1.1 christos Free : in free_func) is 104 1.1 christos begin 105 1.1 christos Strm.opaque := Opaque; 106 1.1 christos Strm.zalloc := Alloc; 107 1.1 christos Strm.zfree := Free; 108 1.1 christos end Set_Mem_Func; 109 1.1 christos 110 1.1 christos ------------- 111 1.1 christos -- Set_Out -- 112 1.1 christos ------------- 113 1.1 christos 114 1.1 christos procedure Set_Out 115 1.1 christos (Strm : in out Z_Stream; 116 1.1 christos Buffer : in Voidp; 117 1.1 christos Size : in UInt) is 118 1.1 christos begin 119 1.1 christos Strm.Next_Out := Buffer; 120 1.1 christos Strm.Avail_Out := Size; 121 1.1 christos end Set_Out; 122 1.1 christos 123 1.1 christos -------------- 124 1.1 christos -- Total_In -- 125 1.1 christos -------------- 126 1.1 christos 127 1.1 christos function Total_In (Strm : in Z_Stream) return ULong is 128 1.1 christos begin 129 1.1 christos return Strm.Total_In; 130 1.1 christos end Total_In; 131 1.1 christos 132 1.1 christos --------------- 133 1.1 christos -- Total_Out -- 134 1.1 christos --------------- 135 1.1 christos 136 1.1 christos function Total_Out (Strm : in Z_Stream) return ULong is 137 1.1 christos begin 138 1.1 christos return Strm.Total_Out; 139 1.1 christos end Total_Out; 140 1.1 christos 141 1.1 christos end ZLib.Thin; 142