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