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. IT IS USED
27 -- BY THE MAIN PROCEDURE, I.E., CC3019B2M.ADA.
29 -- *** THIS FILE MUST BE COMPILED AFTER CC3019B0.ADA HAS BEEN
33 -- EDWARD V. BERARD, 31 AUGUST 1990
35 WITH CC3019B0_LIST_CLASS
;
39 TYPE ELEMENT
IS LIMITED PRIVATE ;
41 WITH PROCEDURE ASSIGN
(SOURCE
: IN OUT ELEMENT
;
42 DESTINATION
: IN OUT ELEMENT
) ;
44 WITH FUNCTION "=" (LEFT
: IN ELEMENT
;
45 RIGHT
: IN ELEMENT
) RETURN BOOLEAN ;
47 PACKAGE CC3019B1_STACK_CLASS
IS
49 TYPE STACK
IS LIMITED PRIVATE ;
51 OVERFLOW
: EXCEPTION ;
52 UNDERFLOW
: EXCEPTION ;
54 PROCEDURE PUSH
(THIS_ELEMENT
: IN OUT ELEMENT
;
55 ON_TO_THIS_STACK
: IN OUT STACK
) ;
57 PROCEDURE POP
(THIS_ELEMENT
: IN OUT ELEMENT
;
58 OFF_THIS_STACK
: IN OUT STACK
) ;
60 PROCEDURE COPY
(THIS_STACK
: IN OUT STACK
;
61 TO_THIS_STACK
: IN OUT STACK
) ;
63 PROCEDURE CLEAR
(THIS_STACK
: IN OUT STACK
) ;
67 WITH PROCEDURE PROCESS
(THIS_ELEMENT
: IN ELEMENT
;
68 CONTINUE
: OUT BOOLEAN) ;
70 PROCEDURE ITERATE
(OVER_THIS_STACK
: IN STACK
) ;
72 FUNCTION NUMBER_OF_ELEMENTS
(ON_THIS_STACK
: IN STACK
)
75 FUNCTION "=" (LEFT
: IN STACK
;
76 RIGHT
: IN STACK
) RETURN BOOLEAN ;
80 PACKAGE NEW_LIST_CLASS
IS
81 NEW CC3019B0_LIST_CLASS
(ELEMENT
=> ELEMENT
,
85 TYPE STACK
IS NEW NEW_LIST_CLASS
.LIST
;
87 END CC3019B1_STACK_CLASS
;
89 PACKAGE BODY CC3019B1_STACK_CLASS
IS
91 PROCEDURE PUSH
(THIS_ELEMENT
: IN OUT ELEMENT
;
92 ON_TO_THIS_STACK
: IN OUT STACK
) IS
97 THIS_ELEMENT
=> THIS_ELEMENT
,
99 NEW_LIST_CLASS
.LIST
(ON_TO_THIS_STACK
)) ;
103 WHEN NEW_LIST_CLASS
.OVERFLOW
=> RAISE OVERFLOW
;
107 PROCEDURE POP
(THIS_ELEMENT
: IN OUT ELEMENT
;
108 OFF_THIS_STACK
: IN OUT STACK
) IS
112 NEW_LIST_CLASS
.DELETE
(
113 THIS_ELEMENT
=> THIS_ELEMENT
,
115 NEW_LIST_CLASS
.LIST
(OFF_THIS_STACK
)) ;
119 WHEN NEW_LIST_CLASS
.UNDERFLOW
=> RAISE UNDERFLOW
;
123 PROCEDURE COPY
(THIS_STACK
: IN OUT STACK
;
124 TO_THIS_STACK
: IN OUT STACK
) IS
128 NEW_LIST_CLASS
.COPY
(
129 THIS_LIST
=> NEW_LIST_CLASS
.LIST
(THIS_STACK
),
130 TO_THIS_LIST
=> NEW_LIST_CLASS
.LIST
(TO_THIS_STACK
)) ;
134 PROCEDURE CLEAR
(THIS_STACK
: IN OUT STACK
) IS
138 NEW_LIST_CLASS
.CLEAR
(NEW_LIST_CLASS
.LIST
(THIS_STACK
)) ;
142 PROCEDURE ITERATE
(OVER_THIS_STACK
: IN STACK
) IS
144 PROCEDURE STACK_ITERATE
IS NEW NEW_LIST_CLASS
.ITERATE
145 (PROCESS
=> PROCESS
) ;
149 STACK_ITERATE
(NEW_LIST_CLASS
.LIST
(OVER_THIS_STACK
)) ;
153 FUNCTION NUMBER_OF_ELEMENTS
(ON_THIS_STACK
: IN STACK
)
156 BEGIN -- NUMBER_OF_ELEMENTS
158 RETURN NEW_LIST_CLASS
.NUMBER_OF_ELEMENTS
159 (IN_THIS_LIST
=> NEW_LIST_CLASS
.LIST
(ON_THIS_STACK
)) ;
161 END NUMBER_OF_ELEMENTS
;
163 FUNCTION "=" (LEFT
: IN STACK
;
164 RIGHT
: IN STACK
) RETURN BOOLEAN IS
168 RETURN NEW_LIST_CLASS
."=" (
169 LEFT
=> NEW_LIST_CLASS
.LIST
(LEFT
),
170 RIGHT
=> NEW_LIST_CLASS
.LIST
(RIGHT
)) ;
174 END CC3019B1_STACK_CLASS
;