annotate gcc/testsuite/ada/acats/tests/cc/cc3019c1.ada @ 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 -- CC3019C1.ADA
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 -- Grant of Unlimited Rights
kono
parents:
diff changeset
4 --
kono
parents:
diff changeset
5 -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
kono
parents:
diff changeset
6 -- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
kono
parents:
diff changeset
7 -- unlimited rights in the software and documentation contained herein.
kono
parents:
diff changeset
8 -- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
kono
parents:
diff changeset
9 -- this public release, the Government intends to confer upon all
kono
parents:
diff changeset
10 -- recipients unlimited rights equal to those held by the Government.
kono
parents:
diff changeset
11 -- These rights include rights to use, duplicate, release or disclose the
kono
parents:
diff changeset
12 -- released technical data and computer software in whole or in part, in
kono
parents:
diff changeset
13 -- any manner and for any purpose whatsoever, and to have or permit others
kono
parents:
diff changeset
14 -- 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 -- THIS IS GENERIC PACKAGE WHICH IS USED TO CHECK THE LEVEL OF
kono
parents:
diff changeset
26 -- NESTED GENERICS SUPPORTED BY AN IMPLEMENTATION. IT IS USED
kono
parents:
diff changeset
27 -- BY MAIN PROCEDURE CC3019C2M.ADA.
kono
parents:
diff changeset
28 --
kono
parents:
diff changeset
29 -- HISTORY:
kono
parents:
diff changeset
30 -- EDWARD V. BERARD, 31 AUGUST 1990
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 WITH CC3019C0_LIST_CLASS ;
kono
parents:
diff changeset
33
kono
parents:
diff changeset
34 GENERIC
kono
parents:
diff changeset
35
kono
parents:
diff changeset
36 TYPE ELEMENT IS LIMITED PRIVATE ;
kono
parents:
diff changeset
37
kono
parents:
diff changeset
38 WITH PROCEDURE ASSIGN (SOURCE : IN OUT ELEMENT ;
kono
parents:
diff changeset
39 DESTINATION : IN OUT ELEMENT) ;
kono
parents:
diff changeset
40
kono
parents:
diff changeset
41 WITH FUNCTION "=" (LEFT : IN ELEMENT ;
kono
parents:
diff changeset
42 RIGHT : IN ELEMENT) RETURN BOOLEAN ;
kono
parents:
diff changeset
43
kono
parents:
diff changeset
44 PACKAGE CC3019C1_NESTED_GENERICS IS
kono
parents:
diff changeset
45
kono
parents:
diff changeset
46 TYPE NESTED_GENERICS_TYPE IS LIMITED PRIVATE ;
kono
parents:
diff changeset
47
kono
parents:
diff changeset
48 PROCEDURE COPY (SOURCE : IN OUT NESTED_GENERICS_TYPE ;
kono
parents:
diff changeset
49 DESTINATION : IN OUT NESTED_GENERICS_TYPE) ;
kono
parents:
diff changeset
50
kono
parents:
diff changeset
51 PROCEDURE SET_ELEMENT
kono
parents:
diff changeset
52 (FOR_THIS_NGT_OBJECT : IN OUT NESTED_GENERICS_TYPE ;
kono
parents:
diff changeset
53 TO_THIS_ELEMENT : IN OUT ELEMENT) ;
kono
parents:
diff changeset
54
kono
parents:
diff changeset
55 PROCEDURE SET_NUMBER
kono
parents:
diff changeset
56 (FOR_THIS_NGT_OBJECT : IN OUT NESTED_GENERICS_TYPE ;
kono
parents:
diff changeset
57 TO_THIS_NUMBER : IN NATURAL) ;
kono
parents:
diff changeset
58
kono
parents:
diff changeset
59 FUNCTION "=" (LEFT : IN NESTED_GENERICS_TYPE ;
kono
parents:
diff changeset
60 RIGHT : IN NESTED_GENERICS_TYPE) RETURN BOOLEAN ;
kono
parents:
diff changeset
61
kono
parents:
diff changeset
62 FUNCTION ELEMENT_OF (THIS_NGT_OBJECT : IN NESTED_GENERICS_TYPE)
kono
parents:
diff changeset
63 RETURN ELEMENT ;
kono
parents:
diff changeset
64
kono
parents:
diff changeset
65 FUNCTION NUMBER_OF (THIS_NGT_OBJECT : IN NESTED_GENERICS_TYPE)
kono
parents:
diff changeset
66 RETURN NATURAL ;
kono
parents:
diff changeset
67
kono
parents:
diff changeset
68 GENERIC
kono
parents:
diff changeset
69
kono
parents:
diff changeset
70 TYPE ELEMENT IS LIMITED PRIVATE ;
kono
parents:
diff changeset
71
kono
parents:
diff changeset
72 WITH PROCEDURE ASSIGN (SOURCE : IN OUT ELEMENT ;
kono
parents:
diff changeset
73 DESTINATION : IN OUT ELEMENT) ;
kono
parents:
diff changeset
74
kono
parents:
diff changeset
75 PACKAGE GENERIC_TASK IS
kono
parents:
diff changeset
76
kono
parents:
diff changeset
77 TASK TYPE PROTECTED_AREA IS
kono
parents:
diff changeset
78
kono
parents:
diff changeset
79 ENTRY STORE (ITEM : IN OUT ELEMENT) ;
kono
parents:
diff changeset
80 ENTRY GET (ITEM : IN OUT ELEMENT) ;
kono
parents:
diff changeset
81
kono
parents:
diff changeset
82 END PROTECTED_AREA ;
kono
parents:
diff changeset
83
kono
parents:
diff changeset
84 END GENERIC_TASK ;
kono
parents:
diff changeset
85
kono
parents:
diff changeset
86 GENERIC
kono
parents:
diff changeset
87
kono
parents:
diff changeset
88 TYPE ELEMENT IS LIMITED PRIVATE ;
kono
parents:
diff changeset
89
kono
parents:
diff changeset
90 WITH PROCEDURE ASSIGN (SOURCE : IN OUT ELEMENT ;
kono
parents:
diff changeset
91 DESTINATION : IN OUT ELEMENT) ;
kono
parents:
diff changeset
92
kono
parents:
diff changeset
93 WITH FUNCTION "=" (LEFT : IN ELEMENT ;
kono
parents:
diff changeset
94 RIGHT : IN ELEMENT) RETURN BOOLEAN ;
kono
parents:
diff changeset
95
kono
parents:
diff changeset
96 PACKAGE STACK_CLASS IS
kono
parents:
diff changeset
97
kono
parents:
diff changeset
98 TYPE STACK IS LIMITED PRIVATE ;
kono
parents:
diff changeset
99
kono
parents:
diff changeset
100 OVERFLOW : EXCEPTION ;
kono
parents:
diff changeset
101 UNDERFLOW : EXCEPTION ;
kono
parents:
diff changeset
102
kono
parents:
diff changeset
103 PROCEDURE PUSH (THIS_ELEMENT : IN OUT ELEMENT ;
kono
parents:
diff changeset
104 ON_TO_THIS_STACK : IN OUT STACK) ;
kono
parents:
diff changeset
105
kono
parents:
diff changeset
106 PROCEDURE POP (THIS_ELEMENT : IN OUT ELEMENT ;
kono
parents:
diff changeset
107 OFF_THIS_STACK : IN OUT STACK) ;
kono
parents:
diff changeset
108
kono
parents:
diff changeset
109 PROCEDURE COPY (THIS_STACK : IN OUT STACK ;
kono
parents:
diff changeset
110 TO_THIS_STACK : IN OUT STACK) ;
kono
parents:
diff changeset
111
kono
parents:
diff changeset
112 PROCEDURE CLEAR (THIS_STACK : IN OUT STACK) ;
kono
parents:
diff changeset
113
kono
parents:
diff changeset
114 GENERIC
kono
parents:
diff changeset
115
kono
parents:
diff changeset
116 WITH PROCEDURE PROCESS (THIS_ELEMENT : IN ELEMENT ;
kono
parents:
diff changeset
117 CONTINUE : OUT BOOLEAN) ;
kono
parents:
diff changeset
118
kono
parents:
diff changeset
119 PROCEDURE ITERATE (OVER_THIS_STACK : IN STACK) ;
kono
parents:
diff changeset
120
kono
parents:
diff changeset
121 FUNCTION NUMBER_OF_ELEMENTS (ON_THIS_STACK : IN STACK)
kono
parents:
diff changeset
122 RETURN NATURAL ;
kono
parents:
diff changeset
123
kono
parents:
diff changeset
124 FUNCTION "=" (LEFT : IN STACK ;
kono
parents:
diff changeset
125 RIGHT : IN STACK) RETURN BOOLEAN ;
kono
parents:
diff changeset
126
kono
parents:
diff changeset
127 PRIVATE
kono
parents:
diff changeset
128
kono
parents:
diff changeset
129 PACKAGE NEW_LIST_CLASS IS NEW
kono
parents:
diff changeset
130 CC3019C0_LIST_CLASS (ELEMENT => ELEMENT,
kono
parents:
diff changeset
131 ASSIGN => ASSIGN,
kono
parents:
diff changeset
132 "=" => "=") ;
kono
parents:
diff changeset
133
kono
parents:
diff changeset
134 TYPE STACK IS NEW NEW_LIST_CLASS.LIST ;
kono
parents:
diff changeset
135
kono
parents:
diff changeset
136 END STACK_CLASS ;
kono
parents:
diff changeset
137
kono
parents:
diff changeset
138 PRIVATE
kono
parents:
diff changeset
139
kono
parents:
diff changeset
140 TYPE NESTED_GENERICS_TYPE IS RECORD
kono
parents:
diff changeset
141 FIRST : ELEMENT ;
kono
parents:
diff changeset
142 SECOND : NATURAL ;
kono
parents:
diff changeset
143 END RECORD ;
kono
parents:
diff changeset
144
kono
parents:
diff changeset
145 END CC3019C1_NESTED_GENERICS ;
kono
parents:
diff changeset
146
kono
parents:
diff changeset
147 PACKAGE BODY CC3019C1_NESTED_GENERICS IS
kono
parents:
diff changeset
148
kono
parents:
diff changeset
149 PROCEDURE COPY (SOURCE : IN OUT NESTED_GENERICS_TYPE ;
kono
parents:
diff changeset
150 DESTINATION : IN OUT NESTED_GENERICS_TYPE) IS
kono
parents:
diff changeset
151
kono
parents:
diff changeset
152 BEGIN -- COPY
kono
parents:
diff changeset
153
kono
parents:
diff changeset
154 ASSIGN (SOURCE => SOURCE.FIRST,
kono
parents:
diff changeset
155 DESTINATION => DESTINATION.FIRST) ;
kono
parents:
diff changeset
156
kono
parents:
diff changeset
157 DESTINATION.SECOND := SOURCE.SECOND ;
kono
parents:
diff changeset
158
kono
parents:
diff changeset
159 END COPY ;
kono
parents:
diff changeset
160
kono
parents:
diff changeset
161 PROCEDURE SET_ELEMENT
kono
parents:
diff changeset
162 (FOR_THIS_NGT_OBJECT : IN OUT NESTED_GENERICS_TYPE ;
kono
parents:
diff changeset
163 TO_THIS_ELEMENT : IN OUT ELEMENT) IS
kono
parents:
diff changeset
164
kono
parents:
diff changeset
165 BEGIN -- SET_ELEMENT
kono
parents:
diff changeset
166
kono
parents:
diff changeset
167 ASSIGN (SOURCE => TO_THIS_ELEMENT,
kono
parents:
diff changeset
168 DESTINATION => FOR_THIS_NGT_OBJECT.FIRST) ;
kono
parents:
diff changeset
169
kono
parents:
diff changeset
170 END SET_ELEMENT ;
kono
parents:
diff changeset
171
kono
parents:
diff changeset
172 PROCEDURE SET_NUMBER
kono
parents:
diff changeset
173 (FOR_THIS_NGT_OBJECT : IN OUT NESTED_GENERICS_TYPE ;
kono
parents:
diff changeset
174 TO_THIS_NUMBER : IN NATURAL) IS
kono
parents:
diff changeset
175
kono
parents:
diff changeset
176 BEGIN -- SET_NUMBER
kono
parents:
diff changeset
177
kono
parents:
diff changeset
178 FOR_THIS_NGT_OBJECT.SECOND := TO_THIS_NUMBER ;
kono
parents:
diff changeset
179
kono
parents:
diff changeset
180 END SET_NUMBER ;
kono
parents:
diff changeset
181
kono
parents:
diff changeset
182 FUNCTION "=" (LEFT : IN NESTED_GENERICS_TYPE ;
kono
parents:
diff changeset
183 RIGHT : IN NESTED_GENERICS_TYPE) RETURN BOOLEAN IS
kono
parents:
diff changeset
184
kono
parents:
diff changeset
185 BEGIN -- "="
kono
parents:
diff changeset
186
kono
parents:
diff changeset
187 IF (LEFT.FIRST = RIGHT.FIRST) AND
kono
parents:
diff changeset
188 (LEFT.SECOND = RIGHT.SECOND) THEN
kono
parents:
diff changeset
189 RETURN TRUE ;
kono
parents:
diff changeset
190 ELSE
kono
parents:
diff changeset
191 RETURN FALSE ;
kono
parents:
diff changeset
192 END IF ;
kono
parents:
diff changeset
193
kono
parents:
diff changeset
194 END "=" ;
kono
parents:
diff changeset
195
kono
parents:
diff changeset
196 FUNCTION ELEMENT_OF (THIS_NGT_OBJECT : IN NESTED_GENERICS_TYPE)
kono
parents:
diff changeset
197 RETURN ELEMENT IS
kono
parents:
diff changeset
198
kono
parents:
diff changeset
199 BEGIN -- ELEMENT_OF
kono
parents:
diff changeset
200
kono
parents:
diff changeset
201 RETURN THIS_NGT_OBJECT.FIRST ;
kono
parents:
diff changeset
202
kono
parents:
diff changeset
203 END ELEMENT_OF ;
kono
parents:
diff changeset
204
kono
parents:
diff changeset
205 FUNCTION NUMBER_OF (THIS_NGT_OBJECT : IN NESTED_GENERICS_TYPE)
kono
parents:
diff changeset
206 RETURN NATURAL IS
kono
parents:
diff changeset
207
kono
parents:
diff changeset
208 BEGIN -- NUMBER_OF
kono
parents:
diff changeset
209
kono
parents:
diff changeset
210 RETURN THIS_NGT_OBJECT.SECOND ;
kono
parents:
diff changeset
211
kono
parents:
diff changeset
212 END NUMBER_OF ;
kono
parents:
diff changeset
213
kono
parents:
diff changeset
214 PACKAGE BODY GENERIC_TASK IS
kono
parents:
diff changeset
215
kono
parents:
diff changeset
216 TASK BODY PROTECTED_AREA IS
kono
parents:
diff changeset
217
kono
parents:
diff changeset
218 LOCAL_STORE : ELEMENT ;
kono
parents:
diff changeset
219
kono
parents:
diff changeset
220 BEGIN -- PROTECTED_AREA
kono
parents:
diff changeset
221
kono
parents:
diff changeset
222 LOOP
kono
parents:
diff changeset
223 SELECT
kono
parents:
diff changeset
224 ACCEPT STORE (ITEM : IN OUT ELEMENT) DO
kono
parents:
diff changeset
225 ASSIGN (SOURCE => ITEM,
kono
parents:
diff changeset
226 DESTINATION => LOCAL_STORE) ;
kono
parents:
diff changeset
227 END STORE ;
kono
parents:
diff changeset
228 OR
kono
parents:
diff changeset
229 ACCEPT GET (ITEM : IN OUT ELEMENT) DO
kono
parents:
diff changeset
230 ASSIGN (SOURCE => LOCAL_STORE,
kono
parents:
diff changeset
231 DESTINATION => ITEM) ;
kono
parents:
diff changeset
232 END GET ;
kono
parents:
diff changeset
233 OR
kono
parents:
diff changeset
234 TERMINATE ;
kono
parents:
diff changeset
235 END SELECT ;
kono
parents:
diff changeset
236 END LOOP ;
kono
parents:
diff changeset
237
kono
parents:
diff changeset
238 END PROTECTED_AREA ;
kono
parents:
diff changeset
239
kono
parents:
diff changeset
240 END GENERIC_TASK ;
kono
parents:
diff changeset
241
kono
parents:
diff changeset
242 PACKAGE BODY STACK_CLASS IS
kono
parents:
diff changeset
243
kono
parents:
diff changeset
244 PROCEDURE PUSH (THIS_ELEMENT : IN OUT ELEMENT ;
kono
parents:
diff changeset
245 ON_TO_THIS_STACK : IN OUT STACK) IS
kono
parents:
diff changeset
246
kono
parents:
diff changeset
247 BEGIN -- PUSH
kono
parents:
diff changeset
248
kono
parents:
diff changeset
249 NEW_LIST_CLASS.ADD (
kono
parents:
diff changeset
250 THIS_ELEMENT => THIS_ELEMENT,
kono
parents:
diff changeset
251 TO_THIS_LIST =>
kono
parents:
diff changeset
252 NEW_LIST_CLASS.LIST (ON_TO_THIS_STACK)) ;
kono
parents:
diff changeset
253
kono
parents:
diff changeset
254 EXCEPTION
kono
parents:
diff changeset
255
kono
parents:
diff changeset
256 WHEN NEW_LIST_CLASS.OVERFLOW => RAISE OVERFLOW ;
kono
parents:
diff changeset
257
kono
parents:
diff changeset
258 END PUSH ;
kono
parents:
diff changeset
259
kono
parents:
diff changeset
260 PROCEDURE POP (THIS_ELEMENT : IN OUT ELEMENT ;
kono
parents:
diff changeset
261 OFF_THIS_STACK : IN OUT STACK) IS
kono
parents:
diff changeset
262
kono
parents:
diff changeset
263 BEGIN -- POP
kono
parents:
diff changeset
264
kono
parents:
diff changeset
265 NEW_LIST_CLASS.DELETE (
kono
parents:
diff changeset
266 THIS_ELEMENT => THIS_ELEMENT,
kono
parents:
diff changeset
267 FROM_THIS_LIST =>
kono
parents:
diff changeset
268 NEW_LIST_CLASS.LIST (OFF_THIS_STACK)) ;
kono
parents:
diff changeset
269
kono
parents:
diff changeset
270 EXCEPTION
kono
parents:
diff changeset
271
kono
parents:
diff changeset
272 WHEN NEW_LIST_CLASS.UNDERFLOW => RAISE UNDERFLOW ;
kono
parents:
diff changeset
273
kono
parents:
diff changeset
274 END POP ;
kono
parents:
diff changeset
275
kono
parents:
diff changeset
276 PROCEDURE COPY (THIS_STACK : IN OUT STACK ;
kono
parents:
diff changeset
277 TO_THIS_STACK : IN OUT STACK) IS
kono
parents:
diff changeset
278
kono
parents:
diff changeset
279 BEGIN -- COPY
kono
parents:
diff changeset
280
kono
parents:
diff changeset
281 NEW_LIST_CLASS.COPY (
kono
parents:
diff changeset
282 THIS_LIST => NEW_LIST_CLASS.LIST (THIS_STACK),
kono
parents:
diff changeset
283 TO_THIS_LIST =>
kono
parents:
diff changeset
284 NEW_LIST_CLASS.LIST (TO_THIS_STACK)) ;
kono
parents:
diff changeset
285
kono
parents:
diff changeset
286 END COPY ;
kono
parents:
diff changeset
287
kono
parents:
diff changeset
288 PROCEDURE CLEAR (THIS_STACK : IN OUT STACK) IS
kono
parents:
diff changeset
289
kono
parents:
diff changeset
290 BEGIN -- CLEAR
kono
parents:
diff changeset
291
kono
parents:
diff changeset
292 NEW_LIST_CLASS.CLEAR (NEW_LIST_CLASS.LIST (THIS_STACK)) ;
kono
parents:
diff changeset
293
kono
parents:
diff changeset
294 END CLEAR ;
kono
parents:
diff changeset
295
kono
parents:
diff changeset
296 PROCEDURE ITERATE (OVER_THIS_STACK : IN STACK) IS
kono
parents:
diff changeset
297
kono
parents:
diff changeset
298 PROCEDURE STACK_ITERATE IS NEW NEW_LIST_CLASS.ITERATE
kono
parents:
diff changeset
299 (PROCESS => PROCESS) ;
kono
parents:
diff changeset
300
kono
parents:
diff changeset
301 BEGIN -- ITERATE
kono
parents:
diff changeset
302
kono
parents:
diff changeset
303 STACK_ITERATE (NEW_LIST_CLASS.LIST (OVER_THIS_STACK)) ;
kono
parents:
diff changeset
304
kono
parents:
diff changeset
305 END ITERATE ;
kono
parents:
diff changeset
306
kono
parents:
diff changeset
307 FUNCTION NUMBER_OF_ELEMENTS (ON_THIS_STACK : IN STACK)
kono
parents:
diff changeset
308 RETURN NATURAL IS
kono
parents:
diff changeset
309
kono
parents:
diff changeset
310 BEGIN -- NUMBER_OF_ELEMENTS
kono
parents:
diff changeset
311
kono
parents:
diff changeset
312 RETURN NEW_LIST_CLASS.NUMBER_OF_ELEMENTS
kono
parents:
diff changeset
313 (IN_THIS_LIST =>
kono
parents:
diff changeset
314 NEW_LIST_CLASS.LIST (ON_THIS_STACK)) ;
kono
parents:
diff changeset
315
kono
parents:
diff changeset
316 END NUMBER_OF_ELEMENTS ;
kono
parents:
diff changeset
317
kono
parents:
diff changeset
318 FUNCTION "=" (LEFT : IN STACK ;
kono
parents:
diff changeset
319 RIGHT : IN STACK) RETURN BOOLEAN IS
kono
parents:
diff changeset
320
kono
parents:
diff changeset
321 BEGIN -- "="
kono
parents:
diff changeset
322
kono
parents:
diff changeset
323 RETURN NEW_LIST_CLASS."=" (
kono
parents:
diff changeset
324 LEFT => NEW_LIST_CLASS.LIST (LEFT),
kono
parents:
diff changeset
325 RIGHT => NEW_LIST_CLASS.LIST (RIGHT)) ;
kono
parents:
diff changeset
326
kono
parents:
diff changeset
327 END "=" ;
kono
parents:
diff changeset
328
kono
parents:
diff changeset
329 END STACK_CLASS ;
kono
parents:
diff changeset
330
kono
parents:
diff changeset
331 END CC3019C1_NESTED_GENERICS ;