3 -- Grant of Unlimited Rights
5 -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
6 -- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
7 -- unlimited rights in the software and documentation contained herein.
8 -- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
9 -- this public release, the Government intends to confer upon all
10 -- recipients unlimited rights equal to those held by the Government.
11 -- These rights include rights to use, duplicate, release or disclose the
12 -- released technical data and computer software in whole or in part, in
13 -- any manner and for any purpose whatsoever, and to have or permit others
18 -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
19 -- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
20 -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
21 -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
22 -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
23 -- PARTICULAR PURPOSE OF SAID MATERIAL.
25 -- THIS IS GENERIC PACKAGE WHICH IS USED TO CHECK THE LEVEL OF
26 -- NESTED GENERICS SUPPORTED BY AN IMPLEMENTATION.
29 -- EDWARD V. BERARD, 31 AUGUST 1990
33 TYPE ELEMENT
IS LIMITED PRIVATE ;
35 WITH PROCEDURE ASSIGN
(SOURCE
: IN OUT ELEMENT
;
36 DESTINATION
: IN OUT ELEMENT
) ;
38 WITH FUNCTION "=" (LEFT
: IN ELEMENT
;
39 RIGHT
: IN ELEMENT
) RETURN BOOLEAN ;
41 PACKAGE CC3019B0_LIST_CLASS
IS
43 TYPE LIST
IS LIMITED PRIVATE ;
45 OVERFLOW
: EXCEPTION ;
46 UNDERFLOW
: EXCEPTION ;
48 PROCEDURE ADD
(THIS_ELEMENT
: IN OUT ELEMENT
;
49 TO_THIS_LIST
: IN OUT LIST
) ;
51 PROCEDURE DELETE
(THIS_ELEMENT
: IN OUT ELEMENT
;
52 FROM_THIS_LIST
: IN OUT LIST
) ;
54 PROCEDURE COPY
(THIS_LIST
: IN OUT LIST
;
55 TO_THIS_LIST
: IN OUT LIST
) ;
57 PROCEDURE CLEAR
(THIS_LIST
: IN OUT LIST
) ;
61 WITH PROCEDURE PROCESS
(THIS_ELEMENT
: IN ELEMENT
;
62 CONTINUE
: OUT BOOLEAN) ;
64 PROCEDURE ITERATE
(OVER_THIS_LIST
: IN LIST
) ;
66 FUNCTION NUMBER_OF_ELEMENTS
(IN_THIS_LIST
: IN LIST
)
69 FUNCTION "=" (LEFT
: IN LIST
;
70 RIGHT
: IN LIST
) RETURN BOOLEAN ;
74 TYPE LIST_TABLE
IS ARRAY (POSITIVE RANGE 1 .. 10) OF ELEMENT
;
77 LENGTH
: NATURAL := 0 ;
78 ACTUAL_LIST
: LIST_TABLE
;
81 END CC3019B0_LIST_CLASS
;
83 PACKAGE BODY CC3019B0_LIST_CLASS
IS
85 PROCEDURE ADD
(THIS_ELEMENT
: IN OUT ELEMENT
;
86 TO_THIS_LIST
: IN OUT LIST
) IS
90 IF TO_THIS_LIST
.LENGTH
>= 10 THEN
93 TO_THIS_LIST
.LENGTH
:= TO_THIS_LIST
.LENGTH
+ 1 ;
95 SOURCE
=> THIS_ELEMENT
,
97 TO_THIS_LIST
.ACTUAL_LIST
(TO_THIS_LIST
.LENGTH
));
102 PROCEDURE DELETE
(THIS_ELEMENT
: IN OUT ELEMENT
;
103 FROM_THIS_LIST
: IN OUT LIST
) IS
107 IF FROM_THIS_LIST
.LENGTH
<= 0 THEN
112 FROM_THIS_LIST
.ACTUAL_LIST
(FROM_THIS_LIST
.LENGTH
),
113 DESTINATION
=> THIS_ELEMENT
) ;
114 FROM_THIS_LIST
.LENGTH
:= FROM_THIS_LIST
.LENGTH
- 1 ;
119 PROCEDURE COPY
(THIS_LIST
: IN OUT LIST
;
120 TO_THIS_LIST
: IN OUT LIST
) IS
124 TO_THIS_LIST
.LENGTH
:= THIS_LIST
.LENGTH
;
125 FOR INDEX
IN TO_THIS_LIST
.ACTUAL_LIST
'RANGE LOOP
127 SOURCE
=> THIS_LIST
.ACTUAL_LIST
(INDEX
),
128 DESTINATION
=> TO_THIS_LIST
.ACTUAL_LIST
(INDEX
)) ;
133 PROCEDURE CLEAR
(THIS_LIST
: IN OUT LIST
) IS
137 THIS_LIST
.LENGTH
:= 0 ;
141 PROCEDURE ITERATE
(OVER_THIS_LIST
: IN LIST
) IS
143 CONTINUE
: BOOLEAN := TRUE ;
144 FINISHED
: NATURAL := 0 ;
148 WHILE (CONTINUE
= TRUE) AND (FINISHED
< OVER_THIS_LIST
.LENGTH
)
150 FINISHED
:= FINISHED
+ 1 ;
151 PROCESS
(THIS_ELEMENT
=>
152 OVER_THIS_LIST
.ACTUAL_LIST
(FINISHED
),
153 CONTINUE
=> CONTINUE
) ;
158 FUNCTION NUMBER_OF_ELEMENTS
(IN_THIS_LIST
: IN LIST
)
161 BEGIN -- NUMBER_OF_ELEMENTS
163 RETURN IN_THIS_LIST
.LENGTH
;
165 END NUMBER_OF_ELEMENTS
;
167 FUNCTION "=" (LEFT
: IN LIST
;
168 RIGHT
: IN LIST
) RETURN BOOLEAN IS
170 RESULT
: BOOLEAN := TRUE ;
171 INDEX
: NATURAL := 0 ;
175 IF LEFT
.LENGTH
/= RIGHT
.LENGTH
THEN
178 WHILE (INDEX
< LEFT
.LENGTH
) AND RESULT
LOOP
180 IF LEFT
.ACTUAL_LIST
(INDEX
) /=
181 RIGHT
.ACTUAL_LIST
(INDEX
) THEN
191 END CC3019B0_LIST_CLASS
;