annotate src/zlib-1.2.8/contrib/ada/read.adb @ 84:08ae793730bd

Add null config files
author Chris Cannam
date Mon, 02 Mar 2020 14:03:47 +0000
parents 5ea0608b923f
children
rev   line source
Chris@43 1 ----------------------------------------------------------------
Chris@43 2 -- ZLib for Ada thick binding. --
Chris@43 3 -- --
Chris@43 4 -- Copyright (C) 2002-2003 Dmitriy Anisimkov --
Chris@43 5 -- --
Chris@43 6 -- Open source license information is in the zlib.ads file. --
Chris@43 7 ----------------------------------------------------------------
Chris@43 8
Chris@43 9 -- $Id: read.adb,v 1.8 2004/05/31 10:53:40 vagul Exp $
Chris@43 10
Chris@43 11 -- Test/demo program for the generic read interface.
Chris@43 12
Chris@43 13 with Ada.Numerics.Discrete_Random;
Chris@43 14 with Ada.Streams;
Chris@43 15 with Ada.Text_IO;
Chris@43 16
Chris@43 17 with ZLib;
Chris@43 18
Chris@43 19 procedure Read is
Chris@43 20
Chris@43 21 use Ada.Streams;
Chris@43 22
Chris@43 23 ------------------------------------
Chris@43 24 -- Test configuration parameters --
Chris@43 25 ------------------------------------
Chris@43 26
Chris@43 27 File_Size : Stream_Element_Offset := 100_000;
Chris@43 28
Chris@43 29 Continuous : constant Boolean := False;
Chris@43 30 -- If this constant is True, the test would be repeated again and again,
Chris@43 31 -- with increment File_Size for every iteration.
Chris@43 32
Chris@43 33 Header : constant ZLib.Header_Type := ZLib.Default;
Chris@43 34 -- Do not use Header other than Default in ZLib versions 1.1.4 and older.
Chris@43 35
Chris@43 36 Init_Random : constant := 8;
Chris@43 37 -- We are using the same random sequence, in case of we catch bug,
Chris@43 38 -- so we would be able to reproduce it.
Chris@43 39
Chris@43 40 -- End --
Chris@43 41
Chris@43 42 Pack_Size : Stream_Element_Offset;
Chris@43 43 Offset : Stream_Element_Offset;
Chris@43 44
Chris@43 45 Filter : ZLib.Filter_Type;
Chris@43 46
Chris@43 47 subtype Visible_Symbols
Chris@43 48 is Stream_Element range 16#20# .. 16#7E#;
Chris@43 49
Chris@43 50 package Random_Elements is new
Chris@43 51 Ada.Numerics.Discrete_Random (Visible_Symbols);
Chris@43 52
Chris@43 53 Gen : Random_Elements.Generator;
Chris@43 54 Period : constant Stream_Element_Offset := 200;
Chris@43 55 -- Period constant variable for random generator not to be very random.
Chris@43 56 -- Bigger period, harder random.
Chris@43 57
Chris@43 58 Read_Buffer : Stream_Element_Array (1 .. 2048);
Chris@43 59 Read_First : Stream_Element_Offset;
Chris@43 60 Read_Last : Stream_Element_Offset;
Chris@43 61
Chris@43 62 procedure Reset;
Chris@43 63
Chris@43 64 procedure Read
Chris@43 65 (Item : out Stream_Element_Array;
Chris@43 66 Last : out Stream_Element_Offset);
Chris@43 67 -- this procedure is for generic instantiation of
Chris@43 68 -- ZLib.Read
Chris@43 69 -- reading data from the File_In.
Chris@43 70
Chris@43 71 procedure Read is new ZLib.Read
Chris@43 72 (Read,
Chris@43 73 Read_Buffer,
Chris@43 74 Rest_First => Read_First,
Chris@43 75 Rest_Last => Read_Last);
Chris@43 76
Chris@43 77 ----------
Chris@43 78 -- Read --
Chris@43 79 ----------
Chris@43 80
Chris@43 81 procedure Read
Chris@43 82 (Item : out Stream_Element_Array;
Chris@43 83 Last : out Stream_Element_Offset) is
Chris@43 84 begin
Chris@43 85 Last := Stream_Element_Offset'Min
Chris@43 86 (Item'Last,
Chris@43 87 Item'First + File_Size - Offset);
Chris@43 88
Chris@43 89 for J in Item'First .. Last loop
Chris@43 90 if J < Item'First + Period then
Chris@43 91 Item (J) := Random_Elements.Random (Gen);
Chris@43 92 else
Chris@43 93 Item (J) := Item (J - Period);
Chris@43 94 end if;
Chris@43 95
Chris@43 96 Offset := Offset + 1;
Chris@43 97 end loop;
Chris@43 98 end Read;
Chris@43 99
Chris@43 100 -----------
Chris@43 101 -- Reset --
Chris@43 102 -----------
Chris@43 103
Chris@43 104 procedure Reset is
Chris@43 105 begin
Chris@43 106 Random_Elements.Reset (Gen, Init_Random);
Chris@43 107 Pack_Size := 0;
Chris@43 108 Offset := 1;
Chris@43 109 Read_First := Read_Buffer'Last + 1;
Chris@43 110 Read_Last := Read_Buffer'Last;
Chris@43 111 end Reset;
Chris@43 112
Chris@43 113 begin
Chris@43 114 Ada.Text_IO.Put_Line ("ZLib " & ZLib.Version);
Chris@43 115
Chris@43 116 loop
Chris@43 117 for Level in ZLib.Compression_Level'Range loop
Chris@43 118
Chris@43 119 Ada.Text_IO.Put ("Level ="
Chris@43 120 & ZLib.Compression_Level'Image (Level));
Chris@43 121
Chris@43 122 -- Deflate using generic instantiation.
Chris@43 123
Chris@43 124 ZLib.Deflate_Init
Chris@43 125 (Filter,
Chris@43 126 Level,
Chris@43 127 Header => Header);
Chris@43 128
Chris@43 129 Reset;
Chris@43 130
Chris@43 131 Ada.Text_IO.Put
Chris@43 132 (Stream_Element_Offset'Image (File_Size) & " ->");
Chris@43 133
Chris@43 134 loop
Chris@43 135 declare
Chris@43 136 Buffer : Stream_Element_Array (1 .. 1024);
Chris@43 137 Last : Stream_Element_Offset;
Chris@43 138 begin
Chris@43 139 Read (Filter, Buffer, Last);
Chris@43 140
Chris@43 141 Pack_Size := Pack_Size + Last - Buffer'First + 1;
Chris@43 142
Chris@43 143 exit when Last < Buffer'Last;
Chris@43 144 end;
Chris@43 145 end loop;
Chris@43 146
Chris@43 147 Ada.Text_IO.Put_Line (Stream_Element_Offset'Image (Pack_Size));
Chris@43 148
Chris@43 149 ZLib.Close (Filter);
Chris@43 150 end loop;
Chris@43 151
Chris@43 152 exit when not Continuous;
Chris@43 153
Chris@43 154 File_Size := File_Size + 1;
Chris@43 155 end loop;
Chris@43 156 end Read;