annotate gcc/testsuite/ada/acats/support/fdd2a00.a @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 -- FDD2A00.A
kono
parents:
diff changeset
2 --
kono
parents:
diff changeset
3 -- Grant of Unlimited Rights
kono
parents:
diff changeset
4 --
kono
parents:
diff changeset
5 -- The Ada Conformity Assessment Authority (ACAA) holds unlimited
kono
parents:
diff changeset
6 -- rights in the software and documentation contained herein. Unlimited
kono
parents:
diff changeset
7 -- rights are the same as those granted by the U.S. Government for older
kono
parents:
diff changeset
8 -- parts of the Ada Conformity Assessment Test Suite, and are defined
kono
parents:
diff changeset
9 -- in DFAR 252.227-7013(a)(19). By making this public release, the ACAA
kono
parents:
diff changeset
10 -- intends to confer upon all recipients unlimited rights equal to those
kono
parents:
diff changeset
11 -- held by the ACAA. These rights include rights to use, duplicate,
kono
parents:
diff changeset
12 -- release or disclose the released technical data and computer software
kono
parents:
diff changeset
13 -- in whole or in part, in any manner and for any purpose whatsoever, and
kono
parents:
diff changeset
14 -- to have or permit others to do so.
kono
parents:
diff changeset
15 --
kono
parents:
diff changeset
16 -- DISCLAIMER
kono
parents:
diff changeset
17 --
kono
parents:
diff changeset
18 -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
kono
parents:
diff changeset
19 -- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
kono
parents:
diff changeset
20 -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
kono
parents:
diff changeset
21 -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
kono
parents:
diff changeset
22 -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
kono
parents:
diff changeset
23 -- PARTICULAR PURPOSE OF SAID MATERIAL.
kono
parents:
diff changeset
24 --
kono
parents:
diff changeset
25 --
kono
parents:
diff changeset
26 -- FOUNDATION DESCRIPTION:
kono
parents:
diff changeset
27 -- This foundation provides the basis for testing user-defined stream
kono
parents:
diff changeset
28 -- attributes. It provides operations which count calls to stream
kono
parents:
diff changeset
29 -- attributes.
kono
parents:
diff changeset
30 --
kono
parents:
diff changeset
31 -- CHANGE HISTORY:
kono
parents:
diff changeset
32 -- 30 JUL 2001 PHL Initial version.
kono
parents:
diff changeset
33 -- 5 DEC 2001 RLB Reformatted for ACATS.
kono
parents:
diff changeset
34 --
kono
parents:
diff changeset
35
kono
parents:
diff changeset
36 with Ada.Streams;
kono
parents:
diff changeset
37 use Ada.Streams;
kono
parents:
diff changeset
38 package FDD2A00 is
kono
parents:
diff changeset
39
kono
parents:
diff changeset
40 type Kinds is (Read, Write, Input, Output);
kono
parents:
diff changeset
41 type Counts is array (Kinds) of Natural;
kono
parents:
diff changeset
42
kono
parents:
diff changeset
43
kono
parents:
diff changeset
44 type My_Stream (Size : Stream_Element_Count) is new Root_Stream_Type with
kono
parents:
diff changeset
45 record
kono
parents:
diff changeset
46 First : Stream_Element_Offset := 1;
kono
parents:
diff changeset
47 Last : Stream_Element_Offset := 0;
kono
parents:
diff changeset
48 Contents : Stream_Element_Array (1 .. Size);
kono
parents:
diff changeset
49 end record;
kono
parents:
diff changeset
50
kono
parents:
diff changeset
51 procedure Clear (Stream : in out My_Stream);
kono
parents:
diff changeset
52
kono
parents:
diff changeset
53 procedure Read (Stream : in out My_Stream;
kono
parents:
diff changeset
54 Item : out Stream_Element_Array;
kono
parents:
diff changeset
55 Last : out Stream_Element_Offset);
kono
parents:
diff changeset
56
kono
parents:
diff changeset
57 procedure Write (Stream : in out My_Stream; Item : in Stream_Element_Array);
kono
parents:
diff changeset
58
kono
parents:
diff changeset
59
kono
parents:
diff changeset
60 generic
kono
parents:
diff changeset
61 type T (<>) is limited private;
kono
parents:
diff changeset
62 with procedure Actual_Write
kono
parents:
diff changeset
63 (Stream : access Root_Stream_Type'Class; Item : T);
kono
parents:
diff changeset
64 with function Actual_Input
kono
parents:
diff changeset
65 (Stream : access Root_Stream_Type'Class) return T;
kono
parents:
diff changeset
66 with procedure Actual_Read (Stream : access Root_Stream_Type'Class;
kono
parents:
diff changeset
67 Item : out T);
kono
parents:
diff changeset
68 with procedure Actual_Output
kono
parents:
diff changeset
69 (Stream : access Root_Stream_Type'Class; Item : T);
kono
parents:
diff changeset
70 package Counting_Stream_Ops is
kono
parents:
diff changeset
71
kono
parents:
diff changeset
72 procedure Write (Stream : access Root_Stream_Type'Class; Item : T);
kono
parents:
diff changeset
73 function Input (Stream : access Root_Stream_Type'Class) return T;
kono
parents:
diff changeset
74 procedure Read (Stream : access Root_Stream_Type'Class; Item : out T);
kono
parents:
diff changeset
75 procedure Output (Stream : access Root_Stream_Type'Class; Item : T);
kono
parents:
diff changeset
76
kono
parents:
diff changeset
77 function Get_Counts return Counts;
kono
parents:
diff changeset
78
kono
parents:
diff changeset
79 end Counting_Stream_Ops;
kono
parents:
diff changeset
80
kono
parents:
diff changeset
81 end FDD2A00;
kono
parents:
diff changeset
82 package body FDD2A00 is
kono
parents:
diff changeset
83
kono
parents:
diff changeset
84 procedure Clear (Stream : in out My_Stream) is
kono
parents:
diff changeset
85 begin
kono
parents:
diff changeset
86 Stream.First := 1;
kono
parents:
diff changeset
87 Stream.Last := 0;
kono
parents:
diff changeset
88 end Clear;
kono
parents:
diff changeset
89
kono
parents:
diff changeset
90 procedure Read (Stream : in out My_Stream;
kono
parents:
diff changeset
91 Item : out Stream_Element_Array;
kono
parents:
diff changeset
92 Last : out Stream_Element_Offset) is
kono
parents:
diff changeset
93 begin
kono
parents:
diff changeset
94 if Item'Length >= Stream.Last - Stream.First + 1 then
kono
parents:
diff changeset
95 Item (Item'First .. Item'First + Stream.Last - Stream.First) :=
kono
parents:
diff changeset
96 Stream.Contents (Stream.First .. Stream.Last);
kono
parents:
diff changeset
97 Last := Item'First + Stream.Last - Stream.First;
kono
parents:
diff changeset
98 Stream.First := Stream.Last + 1;
kono
parents:
diff changeset
99 else
kono
parents:
diff changeset
100 Item := Stream.Contents (Stream.First ..
kono
parents:
diff changeset
101 Stream.First + Item'Length - 1);
kono
parents:
diff changeset
102 Last := Item'Last;
kono
parents:
diff changeset
103 Stream.First := Stream.First + Item'Length;
kono
parents:
diff changeset
104 end if;
kono
parents:
diff changeset
105 end Read;
kono
parents:
diff changeset
106
kono
parents:
diff changeset
107 procedure Write (Stream : in out My_Stream;
kono
parents:
diff changeset
108 Item : in Stream_Element_Array) is
kono
parents:
diff changeset
109 begin
kono
parents:
diff changeset
110 Stream.Contents (Stream.Last + 1 .. Stream.Last + Item'Length) := Item;
kono
parents:
diff changeset
111 Stream.Last := Stream.Last + Item'Length;
kono
parents:
diff changeset
112 end Write;
kono
parents:
diff changeset
113
kono
parents:
diff changeset
114
kono
parents:
diff changeset
115 package body Counting_Stream_Ops is
kono
parents:
diff changeset
116 Cnts : Counts := (others => 0);
kono
parents:
diff changeset
117
kono
parents:
diff changeset
118 procedure Write (Stream : access Root_Stream_Type'Class; Item : T) is
kono
parents:
diff changeset
119 begin
kono
parents:
diff changeset
120 Cnts (Write) := Cnts (Write) + 1;
kono
parents:
diff changeset
121 Actual_Write (Stream, Item);
kono
parents:
diff changeset
122 end Write;
kono
parents:
diff changeset
123
kono
parents:
diff changeset
124 function Input (Stream : access Root_Stream_Type'Class) return T is
kono
parents:
diff changeset
125 begin
kono
parents:
diff changeset
126 Cnts (Input) := Cnts (Input) + 1;
kono
parents:
diff changeset
127 return Actual_Input (Stream);
kono
parents:
diff changeset
128 end Input;
kono
parents:
diff changeset
129
kono
parents:
diff changeset
130 procedure Read (Stream : access Root_Stream_Type'Class; Item : out T) is
kono
parents:
diff changeset
131 begin
kono
parents:
diff changeset
132 Cnts (Read) := Cnts (Read) + 1;
kono
parents:
diff changeset
133 Actual_Read (Stream, Item);
kono
parents:
diff changeset
134 end Read;
kono
parents:
diff changeset
135
kono
parents:
diff changeset
136 procedure Output (Stream : access Root_Stream_Type'Class; Item : T) is
kono
parents:
diff changeset
137 begin
kono
parents:
diff changeset
138 Cnts (Output) := Cnts (Output) + 1;
kono
parents:
diff changeset
139 Actual_Output (Stream, Item);
kono
parents:
diff changeset
140 end Output;
kono
parents:
diff changeset
141
kono
parents:
diff changeset
142 function Get_Counts return Counts is
kono
parents:
diff changeset
143 begin
kono
parents:
diff changeset
144 return Cnts;
kono
parents:
diff changeset
145 end Get_Counts;
kono
parents:
diff changeset
146
kono
parents:
diff changeset
147 end Counting_Stream_Ops;
kono
parents:
diff changeset
148
kono
parents:
diff changeset
149 end FDD2A00;