⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 read.adb

📁 gcc的组建
💻 ADB
字号:
------------------------------------------------------------------  ZLib for Ada thick binding.                               ----                                                            ----  Copyright (C) 2002-2003 Dmitriy Anisimkov                 ----                                                            ----  Open source license information is in the zlib.ads file.  --------------------------------------------------------------------  $Id: read.adb,v 1.8 2004/05/31 10:53:40 vagul Exp $--  Test/demo program for the generic read interface.with Ada.Numerics.Discrete_Random;with Ada.Streams;with Ada.Text_IO;with ZLib;procedure Read is   use Ada.Streams;   ------------------------------------   --  Test configuration parameters --   ------------------------------------   File_Size   : Stream_Element_Offset := 100_000;   Continuous  : constant Boolean          := False;   --  If this constant is True, the test would be repeated again and again,   --  with increment File_Size for every iteration.   Header      : constant ZLib.Header_Type := ZLib.Default;   --  Do not use Header other than Default in ZLib versions 1.1.4 and older.   Init_Random : constant := 8;   --  We are using the same random sequence, in case of we catch bug,   --  so we would be able to reproduce it.   -- End --   Pack_Size : Stream_Element_Offset;   Offset    : Stream_Element_Offset;   Filter     : ZLib.Filter_Type;   subtype Visible_Symbols      is Stream_Element range 16#20# .. 16#7E#;   package Random_Elements is new      Ada.Numerics.Discrete_Random (Visible_Symbols);   Gen : Random_Elements.Generator;   Period  : constant Stream_Element_Offset := 200;   --  Period constant variable for random generator not to be very random.   --  Bigger period, harder random.   Read_Buffer : Stream_Element_Array (1 .. 2048);   Read_First  : Stream_Element_Offset;   Read_Last   : Stream_Element_Offset;   procedure Reset;   procedure Read     (Item : out Stream_Element_Array;      Last : out Stream_Element_Offset);   --  this procedure is for generic instantiation of   --  ZLib.Read   --  reading data from the File_In.   procedure Read is new ZLib.Read                           (Read,                            Read_Buffer,                            Rest_First => Read_First,                            Rest_Last  => Read_Last);   ----------   -- Read --   ----------   procedure Read     (Item : out Stream_Element_Array;      Last : out Stream_Element_Offset) is   begin      Last := Stream_Element_Offset'Min               (Item'Last,                Item'First + File_Size - Offset);      for J in Item'First .. Last loop         if J < Item'First + Period then            Item (J) := Random_Elements.Random (Gen);         else            Item (J) := Item (J - Period);         end if;         Offset   := Offset + 1;      end loop;   end Read;   -----------   -- Reset --   -----------   procedure Reset is   begin      Random_Elements.Reset (Gen, Init_Random);      Pack_Size := 0;      Offset := 1;      Read_First := Read_Buffer'Last + 1;      Read_Last  := Read_Buffer'Last;   end Reset;begin   Ada.Text_IO.Put_Line ("ZLib " & ZLib.Version);   loop      for Level in ZLib.Compression_Level'Range loop         Ada.Text_IO.Put ("Level ="            & ZLib.Compression_Level'Image (Level));         --  Deflate using generic instantiation.         ZLib.Deflate_Init               (Filter,                Level,                Header => Header);         Reset;         Ada.Text_IO.Put           (Stream_Element_Offset'Image (File_Size) & " ->");         loop            declare               Buffer : Stream_Element_Array (1 .. 1024);               Last   : Stream_Element_Offset;            begin               Read (Filter, Buffer, Last);               Pack_Size := Pack_Size + Last - Buffer'First + 1;               exit when Last < Buffer'Last;            end;         end loop;         Ada.Text_IO.Put_Line (Stream_Element_Offset'Image (Pack_Size));         ZLib.Close (Filter);      end loop;      exit when not Continuous;      File_Size := File_Size + 1;   end loop;end Read;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -