cc3019c2.ada

来自「linux下编程用 编译软件」· ADA 代码 · 共 458 行 · 第 1/2 页

ADA
458
字号
-- CC3019C2M.ADA--                             Grant of Unlimited Rights----     Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,--     F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained --     unlimited rights in the software and documentation contained herein.--     Unlimited rights are defined in DFAR 252.227-7013(a)(19).  By making --     this public release, the Government intends to confer upon all --     recipients unlimited rights  equal to those held by the Government.  --     These rights include rights to use, duplicate, release or disclose the --     released technical data and computer software in whole or in part, in --     any manner and for any purpose whatsoever, and to have or permit others --     to do so.----                                    DISCLAIMER----     ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR--     DISCLOSED ARE AS IS.  THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED --     WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE--     SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE --     OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A--     PARTICULAR PURPOSE OF SAID MATERIAL.--*--   CHECK INSTANTIATIONS OF UNITS WITHIN GENERIC UNITS, E.G.--   TO SUPPORT ITERATORS.--  THIS TEST SPECIFICALLY CHECKS THAT A--  NESTING LEVEL OF 3 IS SUPPORTED FOR GENERICS:--       INSTANTIATE CC3019C1_NESTED_GENERICS IN THE MAIN--       PROCEDURE, THE INSTANTIATION OF CC3019C0_LIST_CLASS--       IN GENERIC PACKAGE CC3019C1_NESTED_GENERICS, AND--       THE INSTANTIATION OF NEW_LIST_CLASS.ITERATE IN--       PROCEDURE ITERATE IN PACKAGE BODY STACK_CLASS.----  *** THIS IS THE MAIN PROGRAM. IT MUST BE COMPILED AFTER THE--  *** SOURCE CODE IN FILES CC3019C0.ADA AND CC3019C1.ADA HAVE--  *** BEEN COMPILED.---- HISTORY:--         EDWARD V. BERARD, 31 AUGUST 1990WITH REPORT ;WITH CC3019C1_NESTED_GENERICS ;PROCEDURE CC3019C2M IS     TYPE MONTH_TYPE IS (JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG,                         SEP, OCT, NOV, DEC) ;     TYPE DAY_TYPE IS RANGE 1 .. 31 ;     TYPE YEAR_TYPE IS RANGE 1904 .. 2050 ;     TYPE DATE IS RECORD          MONTH : MONTH_TYPE ;          DAY   : DAY_TYPE ;          YEAR  : YEAR_TYPE ;     END RECORD ;     STORE_DATE   : DATE ;     TODAY        : DATE := (MONTH => AUG,                             DAY   => 31,                             YEAR  => 1990) ;     FIRST_DATE   : DATE := (MONTH => JUN,                             DAY   => 4,                             YEAR  => 1967) ;     BIRTH_DATE   : DATE := (MONTH => OCT,                             DAY   => 3,                             YEAR  => 1949) ;     WALL_DATE    : DATE := (MONTH => NOV,                             DAY   => 9,                             YEAR  => 1989) ;     TYPE SEX IS (MALE, FEMALE) ;     TYPE PERSON IS RECORD          BIRTH_DATE : DATE ;          GENDER     : SEX ;          NAME       : STRING (1 .. 10) ;     END RECORD ;     FIRST_PERSON  : PERSON ;     SECOND_PERSON : PERSON ;     MYSELF      : PERSON := (BIRTH_DATE => BIRTH_DATE,                              GENDER     => MALE,                              NAME        => "ED        ") ;     FRIEND      : PERSON := (BIRTH_DATE => DATE'(DEC, 27, 1949),                              GENDER     => MALE,                              NAME        => "DENNIS    ") ;     FATHER      : PERSON := (BIRTH_DATE => DATE'(JUL, 5, 1925),                              GENDER     => MALE,                              NAME        => "EDWARD    ") ;     DAUGHTER    : PERSON := (BIRTH_DATE => DATE'(DEC, 10, 1980),                              GENDER     => FEMALE,                              NAME       => "CHRISSY   ") ;     PROCEDURE ASSIGN (THE_VALUE_OF_THIS_DATE    : IN OUT DATE ;                       TO_THIS_DATE              : IN OUT DATE) ;     FUNCTION IS_EQUAL (LEFT  : IN DATE ;                        RIGHT : IN DATE) RETURN BOOLEAN ;     PROCEDURE ASSIGN (THE_VALUE_OF_THIS_PERSON  : IN OUT PERSON ;                       TO_THIS_PERSON            : IN OUT PERSON) ;     FUNCTION IS_EQUAL (LEFT  : IN PERSON ;                        RIGHT : IN PERSON) RETURN BOOLEAN ;--  INSTANTIATE OUTER GENERIC PACKAGE     PACKAGE NEW_NESTED_GENERICS IS NEW          CC3019C1_NESTED_GENERICS (ELEMENT => DATE,                                    ASSIGN  => ASSIGN,                                    "="     => IS_EQUAL) ;     FIRST_NNG  : NEW_NESTED_GENERICS.NESTED_GENERICS_TYPE ;     SECOND_NNG : NEW_NESTED_GENERICS.NESTED_GENERICS_TYPE ;     FUNCTION "=" (LEFT  : IN NEW_NESTED_GENERICS.NESTED_GENERICS_TYPE ;                   RIGHT : IN NEW_NESTED_GENERICS.NESTED_GENERICS_TYPE)                   RETURN BOOLEAN RENAMES NEW_NESTED_GENERICS."=" ;--  INSTANTIATE NESTED TASK PACKAGE     PACKAGE NEW_GENERIC_TASK IS NEW          NEW_NESTED_GENERICS.GENERIC_TASK (ELEMENT => PERSON,                                            ASSIGN  => ASSIGN) ;     FIRST_GENERIC_TASK  : NEW_GENERIC_TASK.PROTECTED_AREA ;     SECOND_GENERIC_TASK : NEW_GENERIC_TASK.PROTECTED_AREA ;--  INSTANTIATE NESTED STACK PACKAGE     PACKAGE PERSON_STACK IS NEW          NEW_NESTED_GENERICS.STACK_CLASS (ELEMENT => PERSON,                                           ASSIGN  => ASSIGN,                                           "="     => IS_EQUAL) ;     FIRST_PERSON_STACK  : PERSON_STACK.STACK ;     SECOND_PERSON_STACK : PERSON_STACK.STACK ;     THIRD_PERSON_STACK  : PERSON_STACK.STACK ;     FUNCTION "=" (LEFT  : IN PERSON_STACK.STACK ;                   RIGHT : IN PERSON_STACK.STACK) RETURN BOOLEAN              RENAMES PERSON_STACK."=" ;     PROCEDURE ASSIGN (THE_VALUE_OF_THIS_DATE    : IN OUT DATE ;                       TO_THIS_DATE              : IN OUT DATE) IS     BEGIN -- ASSIGN          TO_THIS_DATE := THE_VALUE_OF_THIS_DATE ;     END ASSIGN ;     FUNCTION IS_EQUAL (LEFT  : IN DATE ;                        RIGHT : IN DATE) RETURN BOOLEAN IS     BEGIN -- IS_EQUAL          IF (LEFT.MONTH = RIGHT.MONTH) AND (LEFT.DAY = RIGHT.DAY)             AND (LEFT.YEAR = RIGHT.YEAR) THEN               RETURN TRUE ;          ELSE               RETURN FALSE ;          END IF ;     END IS_EQUAL ;     PROCEDURE ASSIGN (THE_VALUE_OF_THIS_PERSON  : IN OUT PERSON ;                       TO_THIS_PERSON            : IN OUT PERSON) IS     BEGIN -- ASSIGN          TO_THIS_PERSON := THE_VALUE_OF_THIS_PERSON ;     END ASSIGN ;     FUNCTION IS_EQUAL (LEFT  : IN PERSON ;                        RIGHT : IN PERSON) RETURN BOOLEAN IS     BEGIN -- IS_EQUAL          IF (LEFT.BIRTH_DATE = RIGHT.BIRTH_DATE) AND             (LEFT.GENDER = RIGHT.GENDER) AND             (LEFT.NAME = RIGHT.NAME) THEN               RETURN TRUE ;          ELSE               RETURN FALSE ;          END IF ;     END IS_EQUAL ;BEGIN  -- CC3019C2M     REPORT.TEST ("CC3019C2M",                  "CHECK INSTANTIATIONS OF UNITS WITHIN GENERIC " &                  "UNITS, E.G., TO SUPPORT ITERATORS. THIS TEST " &                  "SPECIFICALLY CHECKS THAT A NESTING LEVEL OF 3 " &                  "IS SUPPORTED FOR GENERICS.") ;-- CHECK THE OUTERMOST GENERIC (NEW_NESTED_GENERICS)     NEW_NESTED_GENERICS.SET_ELEMENT (          FOR_THIS_NGT_OBJECT => FIRST_NNG,          TO_THIS_ELEMENT     => TODAY) ;     NEW_NESTED_GENERICS.SET_NUMBER (          FOR_THIS_NGT_OBJECT => FIRST_NNG,          TO_THIS_NUMBER      => 1) ;     NEW_NESTED_GENERICS.SET_ELEMENT (          FOR_THIS_NGT_OBJECT => SECOND_NNG,          TO_THIS_ELEMENT     => FIRST_DATE) ;     NEW_NESTED_GENERICS.SET_NUMBER  (          FOR_THIS_NGT_OBJECT => SECOND_NNG,          TO_THIS_NUMBER      => 2) ;     IF FIRST_NNG = SECOND_NNG THEN          REPORT.FAILED ("PROBLEMS WITH TESTING EQUALITY FOR " &                         "OUTERMOST GENERIC") ;     END IF ;     IF (NEW_NESTED_GENERICS.ELEMENT_OF (THIS_NGT_OBJECT => FIRST_NNG)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?