ca11a02.a
来自「linux下编程用 编译软件」· A 代码 · 共 157 行
A
157 行
-- CA11A02.A---- 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.--*---- OBJECTIVE:-- Check that a type extended in a client of a public child inherits -- primitive operations from parent. ---- TEST DESCRIPTION:-- Declare a root tagged type in a package specification. Declare two -- primitive subprograms for the type (foundation code).---- Add a public child to the above package. Extend the root type with -- a record extension in the specification. Declare a new primitive -- subprogram to write to the child extension.---- In the main program, "with" the child. Declare an extension of-- the child extension. Access the primitive operations from both -- parent and child packages.---- TEST FILES:-- This test depends on the following foundation code:---- FA11A00.A------ CHANGE HISTORY:-- 06 Dec 94 SAIC ACVC 2.0-- 20 Dec 94 SAIC Moved declaration of Label_Widget to library level----!package FA11A00.CA11A02_0 is -- Color_Widget_Pkg-- This public child declares an extension from its parent. It -- represents processing of widgets in a window system. type Widget_Color_Enum is (Black, Green, White); type Color_Widget is new Widget with -- Record extension of record -- parent tagged type. Color : Widget_Color_Enum; end record; -- Inherits procedure Set_Width from parent. -- Inherits procedure Set_Height from parent. -- To be inherited by its derivatives. procedure Set_Color (The_Widget : in out Color_Widget; C : in Widget_Color_Enum);end FA11A00.CA11A02_0; -- Color_Widget_Pkg--=======================================================================--package body FA11A00.CA11A02_0 is -- Color_Widget_Pkg procedure Set_Color (The_Widget : in out Color_Widget; C : in Widget_Color_Enum) is begin The_Widget.Color := C; end Set_Color;end FA11A00.CA11A02_0; -- Color_Widget_Pkg--=======================================================================--with FA11A00.CA11A02_0; -- Color_Widget_Pkg.package CA11A02_1 is type Label_Widget (Str_Disc : Integer) is new FA11A00.CA11A02_0.Color_Widget with record Label : String (1 .. Str_Disc); end record; -- Inherits (inherited) procedure Set_Width from Color_Widget. -- Inherits (inherited) procedure Set_Height from Color_Widget. -- Inherits procedure Set_Color from Color_Widget.end CA11A02_1;--=======================================================================--with FA11A00.CA11A02_0; -- Color_Widget_Pkg, -- implicitly with Widget_Pkgwith CA11A02_1;with Report;procedure CA11A02 is package Widget_Pkg renames FA11A00; package Color_Widget_Pkg renames FA11A00.CA11A02_0; use Widget_Pkg; -- All user-defined operators directly visible. procedure Set_Label (The_Widget : in out CA11A02_1.Label_Widget; L : in String) is begin The_Widget.Label := L; end Set_Label; --------------------------------------------------------- procedure Set_Widget (The_Widget : in out CA11A02_1.Label_Widget; The_Width : in Widget_Length; The_Height : in Widget_Length; The_Color : in Color_Widget_Pkg.Widget_Color_Enum; The_Label : in String) is begin CA11A02_1.Set_Width (The_Widget, The_Width); -- Twice inherited. CA11A02_1.Set_Height (The_Widget, The_Height); -- Twice inherited. CA11A02_1.Set_Color (The_Widget, The_Color); -- Inherited. Set_Label (The_Widget, The_Label); -- Explicitly declared. end Set_Widget; White_Widget : CA11A02_1.Label_Widget (11);begin Report.Test ("CA11A02", "Check that a type extended in a client of " & "a public child inherits primitive operations from parent"); Set_Widget (White_Widget, 15, 21, Color_Widget_Pkg.White, "Alarm_Clock"); If White_Widget.Width /= Widget_Length (Report.Ident_Int (15)) or White_Widget.Height /= Widget_Length (Report.Ident_Int (21)) or Color_Widget_Pkg."/=" (White_Widget.Color, Color_Widget_Pkg.White) or White_Widget.Label /= "Alarm_Clock" then Report.Failed ("Incorrect result for White_Widget"); end if; Report.Result;end CA11A02;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?