OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [zlib/] [contrib/] [ada/] [read.adb] - Blame information for rev 15

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 15 jlechner
----------------------------------------------------------------
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.1.1.1 2007/08/18 13:53:34 jeunes2 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;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.