symbian-qemu-0.9.1-12/zlib-1.2.3/contrib/ada/zlib-streams.ads
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     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-streams.ads,v 1.12 2004/05/31 10:53:40 vagul Exp $
       
    10 
       
    11 package ZLib.Streams is
       
    12 
       
    13    type Stream_Mode is (In_Stream, Out_Stream, Duplex);
       
    14 
       
    15    type Stream_Access is access all Ada.Streams.Root_Stream_Type'Class;
       
    16 
       
    17    type Stream_Type is
       
    18       new Ada.Streams.Root_Stream_Type with private;
       
    19 
       
    20    procedure Read
       
    21      (Stream : in out Stream_Type;
       
    22       Item   :    out Ada.Streams.Stream_Element_Array;
       
    23       Last   :    out Ada.Streams.Stream_Element_Offset);
       
    24 
       
    25    procedure Write
       
    26      (Stream : in out Stream_Type;
       
    27       Item   : in     Ada.Streams.Stream_Element_Array);
       
    28 
       
    29    procedure Flush
       
    30      (Stream : in out Stream_Type;
       
    31       Mode   : in     Flush_Mode := Sync_Flush);
       
    32    --  Flush the written data to the back stream,
       
    33    --  all data placed to the compressor is flushing to the Back stream.
       
    34    --  Should not be used untill necessary, becouse it is decreasing
       
    35    --  compression.
       
    36 
       
    37    function Read_Total_In (Stream : in Stream_Type) return Count;
       
    38    pragma Inline (Read_Total_In);
       
    39    --  Return total number of bytes read from back stream so far.
       
    40 
       
    41    function Read_Total_Out (Stream : in Stream_Type) return Count;
       
    42    pragma Inline (Read_Total_Out);
       
    43    --  Return total number of bytes read so far.
       
    44 
       
    45    function Write_Total_In (Stream : in Stream_Type) return Count;
       
    46    pragma Inline (Write_Total_In);
       
    47    --  Return total number of bytes written so far.
       
    48 
       
    49    function Write_Total_Out (Stream : in Stream_Type) return Count;
       
    50    pragma Inline (Write_Total_Out);
       
    51    --  Return total number of bytes written to the back stream.
       
    52 
       
    53    procedure Create
       
    54      (Stream            :    out Stream_Type;
       
    55       Mode              : in     Stream_Mode;
       
    56       Back              : in     Stream_Access;
       
    57       Back_Compressed   : in     Boolean;
       
    58       Level             : in     Compression_Level := Default_Compression;
       
    59       Strategy          : in     Strategy_Type     := Default_Strategy;
       
    60       Header            : in     Header_Type       := Default;
       
    61       Read_Buffer_Size  : in     Ada.Streams.Stream_Element_Offset
       
    62                                     := Default_Buffer_Size;
       
    63       Write_Buffer_Size : in     Ada.Streams.Stream_Element_Offset
       
    64                                     := Default_Buffer_Size);
       
    65    --  Create the Comression/Decompression stream.
       
    66    --  If mode is In_Stream then Write operation is disabled.
       
    67    --  If mode is Out_Stream then Read operation is disabled.
       
    68 
       
    69    --  If Back_Compressed is true then
       
    70    --  Data written to the Stream is compressing to the Back stream
       
    71    --  and data read from the Stream is decompressed data from the Back stream.
       
    72 
       
    73    --  If Back_Compressed is false then
       
    74    --  Data written to the Stream is decompressing to the Back stream
       
    75    --  and data read from the Stream is compressed data from the Back stream.
       
    76 
       
    77    --  !!! When the Need_Header is False ZLib-Ada is using undocumented
       
    78    --  ZLib 1.1.4 functionality to do not create/wait for ZLib headers.
       
    79 
       
    80    function Is_Open (Stream : Stream_Type) return Boolean;
       
    81 
       
    82    procedure Close (Stream : in out Stream_Type);
       
    83 
       
    84 private
       
    85 
       
    86    use Ada.Streams;
       
    87 
       
    88    type Buffer_Access is access all Stream_Element_Array;
       
    89 
       
    90    type Stream_Type
       
    91      is new Root_Stream_Type with
       
    92    record
       
    93       Mode       : Stream_Mode;
       
    94 
       
    95       Buffer     : Buffer_Access;
       
    96       Rest_First : Stream_Element_Offset;
       
    97       Rest_Last  : Stream_Element_Offset;
       
    98       --  Buffer for Read operation.
       
    99       --  We need to have this buffer in the record
       
   100       --  becouse not all read data from back stream
       
   101       --  could be processed during the read operation.
       
   102 
       
   103       Buffer_Size : Stream_Element_Offset;
       
   104       --  Buffer size for write operation.
       
   105       --  We do not need to have this buffer
       
   106       --  in the record becouse all data could be
       
   107       --  processed in the write operation.
       
   108 
       
   109       Back       : Stream_Access;
       
   110       Reader     : Filter_Type;
       
   111       Writer     : Filter_Type;
       
   112    end record;
       
   113 
       
   114 end ZLib.Streams;