~ubuntu-branches/ubuntu/raring/smplayer/raring

« back to all changes in this revision

Viewing changes to zlib-1.2.6/contrib/ada/read.adb

  • Committer: Package Import Robot
  • Author(s): Alessio Treglia
  • Date: 2013-02-12 03:00:21 UTC
  • mfrom: (20.1.2 experimental)
  • Revision ID: package-import@ubuntu.com-20130212030021-q5mg053fru2u6zl8
Tags: 0.8.3-1
* Team upload.
* New upstream release. (Closes: #698300)

Show diffs side-by-side

added added

removed removed

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