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.
26 -- FOUNDATION DESCRIPTION:
27 -- This foundation declares various volatile and non-volatile types. Some
28 -- are by-reference types, and some allow pass-by-copy.
31 -- 23 Jan 96 SAIC Initial version for ACVC 2.1.
32 -- 02 DEC 97 EDS Removed Pragma Volatile applied to composite types.
33 -- 27 AUG 99 RLB Repaired so Nonvolatile_Tagged really is
39 type Roman
is ('I', 'V', 'X', 'L', 'C', 'D', 'M'); -- By-copy type.
41 type Acc_Roman
is access all Roman
;
44 type Tagged_Type
is tagged record -- By-reference type.
49 type Volatile_Tagged
is new Tagged_Type
with record -- Volatile by-reference
52 pragma Volatile
(Volatile_Tagged
);
54 type Acc_Volatile_Tagged
is access all Volatile_Tagged
;
57 type NonVolatile_Tagged
is new Tagged_Type
with record
62 task type Task_Type
is -- By-reference type.
63 entry Calculate
(C
: in out Natural);
66 type Acc_Task_Type
is access all Task_Type
;
69 protected type Protected_Type
is -- By-reference type.
76 protected type Volatile_Protected
is -- Volatile by-reference
77 procedure Handler
; -- type.
78 pragma Interrupt_Handler
(Handler
);
80 function Handled
return Boolean;
82 Was_Handled
: Boolean := False;
83 end Volatile_Protected
;
84 pragma Volatile
(Volatile_Protected
);
86 type Acc_Vol_Protected
is access all Volatile_Protected
;
89 type Record_Type
is record -- Allows pass-by-copy.
94 type Volatile_Record
is limited record -- Volatile by-reference
95 C
: String(1 .. 2); -- type.
97 pragma Volatile
(Volatile_Record
);
100 type Composite_Type
is record -- By-reference type.
102 D
: aliased Volatile_Tagged
; -- Volatile component.
106 type Private_Type
is private; -- By-reference type.
109 type Array_Type
is array (1..3) of Tagged_Type
; -- By-reference type.
110 pragma Volatile_Components
(Array_Type
);
112 type Acc_Array_Type
is access all Array_Type
;
115 type Lim_Private_Type
is limited private; -- By-copy type.
119 type Private_Type
is new Tagged_Type
with record
124 type Lim_Private_Type
is new Integer;
129 --==================================================================--
132 package body FXC6A00
is
134 task body Task_Type
is
136 accept Calculate
(C
: in out Natural) do
142 protected body Protected_Type
is
150 protected body Volatile_Protected
is
156 function Handled
return Boolean is
160 end Volatile_Protected
;