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 + -
显示快捷键?