fdd2a00.a
来自「linux下编程用 编译软件」· A 代码 · 共 150 行
A
150 行
-- FDD2A00.A---- Grant of Unlimited Rights---- The Ada Conformity Assessment Authority (ACAA) holds unlimited-- rights in the software and documentation contained herein. Unlimited-- rights are the same as those granted by the U.S. Government for older-- parts of the Ada Conformity Assessment Test Suite, and are defined-- in DFAR 252.227-7013(a)(19). By making this public release, the ACAA-- intends to confer upon all recipients unlimited rights equal to those-- held by the ACAA. These rights include rights to use, duplicate,-- release or disclose the released technical data and computer software-- in whole or in part, in any manner and for any purpose whatsoever, and-- to have or permit others to do so.---- DISCLAIMER---- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A-- PARTICULAR PURPOSE OF SAID MATERIAL.------ FOUNDATION DESCRIPTION:-- This foundation provides the basis for testing user-defined stream-- attributes. It provides operations which count calls to stream-- attributes.---- CHANGE HISTORY:-- 30 JUL 2001 PHL Initial version.-- 5 DEC 2001 RLB Reformatted for ACATS.--with Ada.Streams;use Ada.Streams;package FDD2A00 is type Kinds is (Read, Write, Input, Output); type Counts is array (Kinds) of Natural; type My_Stream (Size : Stream_Element_Count) is new Root_Stream_Type with record First : Stream_Element_Offset := 1; Last : Stream_Element_Offset := 0; Contents : Stream_Element_Array (1 .. Size); end record; procedure Clear (Stream : in out My_Stream); procedure Read (Stream : in out My_Stream; Item : out Stream_Element_Array; Last : out Stream_Element_Offset); procedure Write (Stream : in out My_Stream; Item : in Stream_Element_Array); generic type T (<>) is limited private; with procedure Actual_Write (Stream : access Root_Stream_Type'Class; Item : T); with function Actual_Input (Stream : access Root_Stream_Type'Class) return T; with procedure Actual_Read (Stream : access Root_Stream_Type'Class; Item : out T); with procedure Actual_Output (Stream : access Root_Stream_Type'Class; Item : T); package Counting_Stream_Ops is procedure Write (Stream : access Root_Stream_Type'Class; Item : T); function Input (Stream : access Root_Stream_Type'Class) return T; procedure Read (Stream : access Root_Stream_Type'Class; Item : out T); procedure Output (Stream : access Root_Stream_Type'Class; Item : T); function Get_Counts return Counts; end Counting_Stream_Ops;end FDD2A00;package body FDD2A00 is procedure Clear (Stream : in out My_Stream) is begin Stream.First := 1; Stream.Last := 0; end Clear; procedure Read (Stream : in out My_Stream; Item : out Stream_Element_Array; Last : out Stream_Element_Offset) is begin if Item'Length >= Stream.Last - Stream.First + 1 then Item (Item'First .. Item'First + Stream.Last - Stream.First) := Stream.Contents (Stream.First .. Stream.Last); Last := Item'First + Stream.Last - Stream.First; Stream.First := Stream.Last + 1; else Item := Stream.Contents (Stream.First .. Stream.First + Item'Length - 1); Last := Item'Last; Stream.First := Stream.First + Item'Length; end if; end Read; procedure Write (Stream : in out My_Stream; Item : in Stream_Element_Array) is begin Stream.Contents (Stream.Last + 1 .. Stream.Last + Item'Length) := Item; Stream.Last := Stream.Last + Item'Length; end Write; package body Counting_Stream_Ops is Cnts : Counts := (others => 0); procedure Write (Stream : access Root_Stream_Type'Class; Item : T) is begin Cnts (Write) := Cnts (Write) + 1; Actual_Write (Stream, Item); end Write; function Input (Stream : access Root_Stream_Type'Class) return T is begin Cnts (Input) := Cnts (Input) + 1; return Actual_Input (Stream); end Input; procedure Read (Stream : access Root_Stream_Type'Class; Item : out T) is begin Cnts (Read) := Cnts (Read) + 1; Actual_Read (Stream, Item); end Read; procedure Output (Stream : access Root_Stream_Type'Class; Item : T) is begin Cnts (Output) := Cnts (Output) + 1; Actual_Output (Stream, Item); end Output; function Get_Counts return Counts is begin return Cnts; end Get_Counts; end Counting_Stream_Ops;end FDD2A00;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?