142 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Ada
		
	
	
	
	
	
		
		
			
		
	
	
			142 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Ada
		
	
	
	
	
	
| 
								 | 
							
								----------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								--  ZLib for Ada thick binding.                               --
							 | 
						||
| 
								 | 
							
								--                                                            --
							 | 
						||
| 
								 | 
							
								--  Copyright (C) 2002-2003 Dmitriy Anisimkov                 --
							 | 
						||
| 
								 | 
							
								--                                                            --
							 | 
						||
| 
								 | 
							
								--  Open source license information is in the zlib.ads file.  --
							 | 
						||
| 
								 | 
							
								----------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--  $Id: zlib-thin.adb,v 1.8 2003/12/14 18:27:31 vagul Exp $
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								package body ZLib.Thin is
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   ZLIB_VERSION  : constant Chars_Ptr := zlibVersion;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   Z_Stream_Size : constant Int := Z_Stream'Size / System.Storage_Unit;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   --------------
							 | 
						||
| 
								 | 
							
								   -- Avail_In --
							 | 
						||
| 
								 | 
							
								   --------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   function Avail_In (Strm : in Z_Stream) return UInt is
							 | 
						||
| 
								 | 
							
								   begin
							 | 
						||
| 
								 | 
							
								      return Strm.Avail_In;
							 | 
						||
| 
								 | 
							
								   end Avail_In;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   ---------------
							 | 
						||
| 
								 | 
							
								   -- Avail_Out --
							 | 
						||
| 
								 | 
							
								   ---------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   function Avail_Out (Strm : in Z_Stream) return UInt is
							 | 
						||
| 
								 | 
							
								   begin
							 | 
						||
| 
								 | 
							
								      return Strm.Avail_Out;
							 | 
						||
| 
								 | 
							
								   end Avail_Out;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   ------------------
							 | 
						||
| 
								 | 
							
								   -- Deflate_Init --
							 | 
						||
| 
								 | 
							
								   ------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   function Deflate_Init
							 | 
						||
| 
								 | 
							
								     (strm       : Z_Streamp;
							 | 
						||
| 
								 | 
							
								      level      : Int;
							 | 
						||
| 
								 | 
							
								      method     : Int;
							 | 
						||
| 
								 | 
							
								      windowBits : Int;
							 | 
						||
| 
								 | 
							
								      memLevel   : Int;
							 | 
						||
| 
								 | 
							
								      strategy   : Int)
							 | 
						||
| 
								 | 
							
								      return       Int is
							 | 
						||
| 
								 | 
							
								   begin
							 | 
						||
| 
								 | 
							
								      return deflateInit2
							 | 
						||
| 
								 | 
							
								               (strm,
							 | 
						||
| 
								 | 
							
								                level,
							 | 
						||
| 
								 | 
							
								                method,
							 | 
						||
| 
								 | 
							
								                windowBits,
							 | 
						||
| 
								 | 
							
								                memLevel,
							 | 
						||
| 
								 | 
							
								                strategy,
							 | 
						||
| 
								 | 
							
								                ZLIB_VERSION,
							 | 
						||
| 
								 | 
							
								                Z_Stream_Size);
							 | 
						||
| 
								 | 
							
								   end Deflate_Init;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   ------------------
							 | 
						||
| 
								 | 
							
								   -- Inflate_Init --
							 | 
						||
| 
								 | 
							
								   ------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   function Inflate_Init (strm : Z_Streamp; windowBits : Int) return Int is
							 | 
						||
| 
								 | 
							
								   begin
							 | 
						||
| 
								 | 
							
								      return inflateInit2 (strm, windowBits, ZLIB_VERSION, Z_Stream_Size);
							 | 
						||
| 
								 | 
							
								   end Inflate_Init;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   ------------------------
							 | 
						||
| 
								 | 
							
								   -- Last_Error_Message --
							 | 
						||
| 
								 | 
							
								   ------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   function Last_Error_Message (Strm : in Z_Stream) return String is
							 | 
						||
| 
								 | 
							
								      use Interfaces.C.Strings;
							 | 
						||
| 
								 | 
							
								   begin
							 | 
						||
| 
								 | 
							
								      if Strm.msg = Null_Ptr then
							 | 
						||
| 
								 | 
							
								         return "";
							 | 
						||
| 
								 | 
							
								      else
							 | 
						||
| 
								 | 
							
								         return Value (Strm.msg);
							 | 
						||
| 
								 | 
							
								      end if;
							 | 
						||
| 
								 | 
							
								   end Last_Error_Message;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   ------------
							 | 
						||
| 
								 | 
							
								   -- Set_In --
							 | 
						||
| 
								 | 
							
								   ------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   procedure Set_In
							 | 
						||
| 
								 | 
							
								     (Strm   : in out Z_Stream;
							 | 
						||
| 
								 | 
							
								      Buffer : in     Voidp;
							 | 
						||
| 
								 | 
							
								      Size   : in     UInt) is
							 | 
						||
| 
								 | 
							
								   begin
							 | 
						||
| 
								 | 
							
								      Strm.Next_In  := Buffer;
							 | 
						||
| 
								 | 
							
								      Strm.Avail_In := Size;
							 | 
						||
| 
								 | 
							
								   end Set_In;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   ------------------
							 | 
						||
| 
								 | 
							
								   -- Set_Mem_Func --
							 | 
						||
| 
								 | 
							
								   ------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   procedure Set_Mem_Func
							 | 
						||
| 
								 | 
							
								     (Strm   : in out Z_Stream;
							 | 
						||
| 
								 | 
							
								      Opaque : in     Voidp;
							 | 
						||
| 
								 | 
							
								      Alloc  : in     alloc_func;
							 | 
						||
| 
								 | 
							
								      Free   : in     free_func) is
							 | 
						||
| 
								 | 
							
								   begin
							 | 
						||
| 
								 | 
							
								      Strm.opaque := Opaque;
							 | 
						||
| 
								 | 
							
								      Strm.zalloc := Alloc;
							 | 
						||
| 
								 | 
							
								      Strm.zfree  := Free;
							 | 
						||
| 
								 | 
							
								   end Set_Mem_Func;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   -------------
							 | 
						||
| 
								 | 
							
								   -- Set_Out --
							 | 
						||
| 
								 | 
							
								   -------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   procedure Set_Out
							 | 
						||
| 
								 | 
							
								     (Strm   : in out Z_Stream;
							 | 
						||
| 
								 | 
							
								      Buffer : in     Voidp;
							 | 
						||
| 
								 | 
							
								      Size   : in     UInt) is
							 | 
						||
| 
								 | 
							
								   begin
							 | 
						||
| 
								 | 
							
								      Strm.Next_Out  := Buffer;
							 | 
						||
| 
								 | 
							
								      Strm.Avail_Out := Size;
							 | 
						||
| 
								 | 
							
								   end Set_Out;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   --------------
							 | 
						||
| 
								 | 
							
								   -- Total_In --
							 | 
						||
| 
								 | 
							
								   --------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   function Total_In (Strm : in Z_Stream) return ULong is
							 | 
						||
| 
								 | 
							
								   begin
							 | 
						||
| 
								 | 
							
								      return Strm.Total_In;
							 | 
						||
| 
								 | 
							
								   end Total_In;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   ---------------
							 | 
						||
| 
								 | 
							
								   -- Total_Out --
							 | 
						||
| 
								 | 
							
								   ---------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   function Total_Out (Strm : in Z_Stream) return ULong is
							 | 
						||
| 
								 | 
							
								   begin
							 | 
						||
| 
								 | 
							
								      return Strm.Total_Out;
							 | 
						||
| 
								 | 
							
								   end Total_Out;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								end ZLib.Thin;
							 |