annotate gcc/testsuite/ada/acats/support/fa13a00.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 -- FA13A00.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 -- 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 --
kono
parents:
diff changeset
26 -- FOUNDATION DESCRIPTION:
kono
parents:
diff changeset
27 -- This foundation code is used to check visibility of separate
kono
parents:
diff changeset
28 -- subunit of child packages.
kono
parents:
diff changeset
29 -- Declares a package containing type definitions; package will be
kono
parents:
diff changeset
30 -- with'ed by the root of the elevator abstraction.
kono
parents:
diff changeset
31 --
kono
parents:
diff changeset
32 -- Declare an elevator abstraction in a parent root package which manages
kono
parents:
diff changeset
33 -- basic operations. This package has a private part. Declare a
kono
parents:
diff changeset
34 -- private child package which calculates the floors for going up or
kono
parents:
diff changeset
35 -- down. Declare a public child package which provides the actual
kono
parents:
diff changeset
36 -- operations.
kono
parents:
diff changeset
37 --
kono
parents:
diff changeset
38 -- CHANGE HISTORY:
kono
parents:
diff changeset
39 -- 06 Dec 94 SAIC ACVC 2.0
kono
parents:
diff changeset
40 --
kono
parents:
diff changeset
41 --!
kono
parents:
diff changeset
42
kono
parents:
diff changeset
43 -- Simulates a fragment of an elevator operation application.
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 package FA13A00_0 is -- Building Manager
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47 type Electrical_Power is (Off, V120, V240);
kono
parents:
diff changeset
48 Power : Electrical_Power := V120;
kono
parents:
diff changeset
49
kono
parents:
diff changeset
50 -- other type definitions and procedure declarations in real application.
kono
parents:
diff changeset
51
kono
parents:
diff changeset
52 end FA13A00_0;
kono
parents:
diff changeset
53
kono
parents:
diff changeset
54 -- No bodies provided for FA13A00_0.
kono
parents:
diff changeset
55
kono
parents:
diff changeset
56 --==================================================================--
kono
parents:
diff changeset
57
kono
parents:
diff changeset
58 package FA13A00_1 is -- Basic Elevator Operations
kono
parents:
diff changeset
59
kono
parents:
diff changeset
60 type Call_Waiting_Type is private;
kono
parents:
diff changeset
61 type Floor is (Basement, Floor1, Floor2, Floor3, Penthouse);
kono
parents:
diff changeset
62 type Floor_No is range Floor'Pos(Floor'First) .. Floor'Pos(Floor'Last);
kono
parents:
diff changeset
63 Current_Floor : Floor := Floor1;
kono
parents:
diff changeset
64
kono
parents:
diff changeset
65 TC_Operation : boolean := true;
kono
parents:
diff changeset
66
kono
parents:
diff changeset
67 procedure Call (F : in Floor; C : in out Call_Waiting_Type);
kono
parents:
diff changeset
68 procedure Clear_Calls (C : in out Call_Waiting_Type);
kono
parents:
diff changeset
69
kono
parents:
diff changeset
70 private
kono
parents:
diff changeset
71 type Call_Waiting_Type is array (Floor) of boolean;
kono
parents:
diff changeset
72 Call_Waiting : Call_Waiting_Type := (others => false);
kono
parents:
diff changeset
73
kono
parents:
diff changeset
74 end FA13A00_1;
kono
parents:
diff changeset
75
kono
parents:
diff changeset
76
kono
parents:
diff changeset
77 --==================================================================--
kono
parents:
diff changeset
78
kono
parents:
diff changeset
79 package body FA13A00_1 is
kono
parents:
diff changeset
80
kono
parents:
diff changeset
81 -- Call the elevator.
kono
parents:
diff changeset
82
kono
parents:
diff changeset
83 procedure Call (F : in Floor; C : in out Call_Waiting_Type) is
kono
parents:
diff changeset
84 begin
kono
parents:
diff changeset
85 C (F) := true;
kono
parents:
diff changeset
86 end Call;
kono
parents:
diff changeset
87
kono
parents:
diff changeset
88 --------------------------------------------
kono
parents:
diff changeset
89
kono
parents:
diff changeset
90 -- Clear all calls of the elevator.
kono
parents:
diff changeset
91
kono
parents:
diff changeset
92 procedure Clear_Calls (C : in out Call_Waiting_Type) is
kono
parents:
diff changeset
93 begin
kono
parents:
diff changeset
94 C := (others => false);
kono
parents:
diff changeset
95 end Clear_Calls;
kono
parents:
diff changeset
96
kono
parents:
diff changeset
97 end FA13A00_1;
kono
parents:
diff changeset
98
kono
parents:
diff changeset
99 --==================================================================--
kono
parents:
diff changeset
100
kono
parents:
diff changeset
101 -- Private child package of an elevator application. This package calculates
kono
parents:
diff changeset
102 -- how many floors to go up or down.
kono
parents:
diff changeset
103
kono
parents:
diff changeset
104 private package FA13A00_1.FA13A00_2 is -- Floor Calculation
kono
parents:
diff changeset
105
kono
parents:
diff changeset
106 -- Other type definitions in real application.
kono
parents:
diff changeset
107
kono
parents:
diff changeset
108 procedure Up (HowMany : in Floor_No);
kono
parents:
diff changeset
109
kono
parents:
diff changeset
110 procedure Down (HowMany : in Floor_No);
kono
parents:
diff changeset
111
kono
parents:
diff changeset
112 end FA13A00_1.FA13A00_2;
kono
parents:
diff changeset
113
kono
parents:
diff changeset
114 --==================================================================--
kono
parents:
diff changeset
115
kono
parents:
diff changeset
116 package body FA13A00_1.FA13A00_2 is
kono
parents:
diff changeset
117
kono
parents:
diff changeset
118 -- Go up from the current floor.
kono
parents:
diff changeset
119
kono
parents:
diff changeset
120 procedure Up (HowMany : in Floor_No) is
kono
parents:
diff changeset
121 begin
kono
parents:
diff changeset
122 Current_Floor := Floor'val (Floor'pos (Current_Floor) + HowMany);
kono
parents:
diff changeset
123 end Up;
kono
parents:
diff changeset
124
kono
parents:
diff changeset
125 --------------------------------------------
kono
parents:
diff changeset
126
kono
parents:
diff changeset
127 -- Go down from the current floor.
kono
parents:
diff changeset
128
kono
parents:
diff changeset
129 procedure Down (HowMany : in Floor_No) is
kono
parents:
diff changeset
130 begin
kono
parents:
diff changeset
131 Current_Floor := Floor'val (Floor'pos (Current_Floor) - HowMany);
kono
parents:
diff changeset
132 end Down;
kono
parents:
diff changeset
133
kono
parents:
diff changeset
134 end FA13A00_1.FA13A00_2;
kono
parents:
diff changeset
135
kono
parents:
diff changeset
136 --==================================================================--
kono
parents:
diff changeset
137
kono
parents:
diff changeset
138 -- Public child package of an elevator application. This package provides
kono
parents:
diff changeset
139 -- the actual operation of the elevator.
kono
parents:
diff changeset
140
kono
parents:
diff changeset
141 package FA13A00_1.FA13A00_3 is -- Move Elevator
kono
parents:
diff changeset
142
kono
parents:
diff changeset
143 -- Other type definitions in real application.
kono
parents:
diff changeset
144
kono
parents:
diff changeset
145 procedure Move_Elevator (F : in Floor;
kono
parents:
diff changeset
146 C : in out Call_Waiting_Type);
kono
parents:
diff changeset
147
kono
parents:
diff changeset
148 end FA13A00_1.FA13A00_3;
kono
parents:
diff changeset
149
kono
parents:
diff changeset
150 --==================================================================--
kono
parents:
diff changeset
151
kono
parents:
diff changeset
152 with FA13A00_1.FA13A00_2; -- Floor Calculation
kono
parents:
diff changeset
153
kono
parents:
diff changeset
154 package body FA13A00_1.FA13A00_3 is
kono
parents:
diff changeset
155
kono
parents:
diff changeset
156 -- Going up or down depends on the current floor.
kono
parents:
diff changeset
157
kono
parents:
diff changeset
158 procedure Move_Elevator (F : in Floor;
kono
parents:
diff changeset
159 C : in out Call_Waiting_Type) is
kono
parents:
diff changeset
160 begin
kono
parents:
diff changeset
161 if F > Current_Floor then
kono
parents:
diff changeset
162 FA13A00_1.FA13A00_2.Up (Floor'Pos (F) - Floor'Pos (Current_Floor));
kono
parents:
diff changeset
163 FA13A00_1.Call (F, C);
kono
parents:
diff changeset
164 elsif F < Current_Floor then
kono
parents:
diff changeset
165 FA13A00_1.FA13A00_2.Down (Floor'Pos (Current_Floor) - Floor'Pos (F));
kono
parents:
diff changeset
166 FA13A00_1.Call (F, C);
kono
parents:
diff changeset
167 end if;
kono
parents:
diff changeset
168
kono
parents:
diff changeset
169 end Move_Elevator;
kono
parents:
diff changeset
170
kono
parents:
diff changeset
171 end FA13A00_1.FA13A00_3;