1-- C38005B.ADA
2
3--                             Grant of Unlimited Rights
4--
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
14--     to do so.
15--
16--                                    DISCLAIMER
17--
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.
24--*
25-- OBJECTIVE:
26--     CHECK THAT ANY OBJECT WITH A FORMAL PRIVATE TYPE, WHOSE ACTUAL
27--     TYPE IN AN INSTANTIATION IS AN ACCESS TYPE, IS INITIALIZED BY
28--     DEFAULT TO THE VALUE NULL. THIS INCLUDES OBJECTS WHICH ARE ARRAY
29--     AND RECORD COMPONENTS.
30
31-- HISTORY:
32--     DHH 07/12/88 CREATED ORIGINAL TEST.
33
34WITH REPORT; USE REPORT;
35PROCEDURE C38005B IS
36
37BEGIN
38     TEST("C38005B", "CHECK THAT ANY OBJECT WITH A FORMAL PRIVATE " &
39                     "TYPE, WHOSE ACTUAL TYPE IN AN INSTANTIATION " &
40                     "IS AN ACCESS TYPE, IS INITIALIZED BY DEFAULT " &
41                     "TO THE VALUE NULL. THIS INCLUDES OBJECTS WHICH " &
42                     "ARE ARRAY AND RECORD COMPONENTS");
43     DECLARE
44          TYPE ARRY IS ARRAY(1 .. 10) OF BOOLEAN;
45          TYPE REC1 IS
46               RECORD
47                    A : INTEGER;
48                    B : ARRY;
49               END RECORD;
50
51          TYPE POINTER IS ACCESS REC1;
52
53          GENERIC
54               TYPE NEW_PTR IS PRIVATE;
55          PACKAGE GEN_PACK IS
56               TYPE PTR_ARY IS ARRAY(1 .. 5) OF NEW_PTR;
57               TYPE RECORD1 IS
58                    RECORD
59                         A : NEW_PTR;
60                         B : PTR_ARY;
61                    END RECORD;
62
63               OBJ : NEW_PTR;
64               ARY : PTR_ARY;
65               REC : RECORD1;
66          END GEN_PACK;
67
68          PACKAGE TEST_P IS NEW GEN_PACK(POINTER);
69          USE TEST_P;
70
71     BEGIN
72          IF OBJ /= NULL THEN
73               FAILED("OBJECT NOT INITIALIZED TO NULL");
74          END IF;
75
76          FOR I IN 1 .. 5 LOOP
77               IF ARY(I) /= NULL THEN
78                    FAILED("ARRAY COMPONENT " &
79                            INTEGER'IMAGE(I) &
80                           " NOT INITIALIZED TO NULL");
81               END IF;
82          END LOOP;
83
84          IF REC.A /= NULL THEN
85               FAILED("RECORD OBJECT NOT INITIALIZED TO NULL");
86          END IF;
87
88          FOR I IN 1 .. 5 LOOP
89               IF REC.B(I) /= NULL THEN
90                    FAILED("RECORD SUBCOMPONENT " &
91                           INTEGER'IMAGE(I) &
92                           " NOT INITIALIZED TO NULL");
93               END IF;
94          END LOOP;
95     END;
96
97     RESULT;
98END C38005B;
99