OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [ada/] [acats/] [tests/] [c3/] [c3a0005.a] - Diff between revs 294 and 338

Only display areas with differences | Details | Blame | View Log

Rev 294 Rev 338
-- C3A0005.A
-- C3A0005.A
--
--
--                             Grant of Unlimited Rights
--                             Grant of Unlimited Rights
--
--
--     Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
--     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
--     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 in the software and documentation contained herein.
--     Unlimited rights are defined in DFAR 252.227-7013(a)(19).  By making
--     Unlimited rights are defined in DFAR 252.227-7013(a)(19).  By making
--     this public release, the Government intends to confer upon all
--     this public release, the Government intends to confer upon all
--     recipients unlimited rights  equal to those held by the Government.
--     recipients unlimited rights  equal to those held by the Government.
--     These rights include rights to use, duplicate, release or disclose the
--     These rights include rights to use, duplicate, release or disclose the
--     released technical data and computer software in whole or in part, in
--     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
--     any manner and for any purpose whatsoever, and to have or permit others
--     to do so.
--     to do so.
--
--
--                                    DISCLAIMER
--                                    DISCLAIMER
--
--
--     ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
--     ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
--     DISCLOSED ARE AS IS.  THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
--     DISCLOSED ARE AS IS.  THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
--     WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
--     WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
--     SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
--     SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
--     OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
--     OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
--     PARTICULAR PURPOSE OF SAID MATERIAL.
--     PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--*
--
--
-- OBJECTIVE:
-- OBJECTIVE:
--      Check that access to subprogram may be stored within record
--      Check that access to subprogram may be stored within record
--      objects, and that the access to subprogram can subsequently
--      objects, and that the access to subprogram can subsequently
--      be called.
--      be called.
--
--
-- TEST DESCRIPTION:
-- TEST DESCRIPTION:
--      Declare an access to procedure type in a package specification.
--      Declare an access to procedure type in a package specification.
--      Declare two different procedures that can be referred to by the
--      Declare two different procedures that can be referred to by the
--      access to procedure type.  Declare a record with the access to
--      access to procedure type.  Declare a record with the access to
--      procedure type as a component.  Use the access to procedure type to
--      procedure type as a component.  Use the access to procedure type to
--      initialize the component of a record.
--      initialize the component of a record.
--
--
--      In the main program, declare an operation.  An access value
--      In the main program, declare an operation.  An access value
--      designating this operation is passed as a parameter to be
--      designating this operation is passed as a parameter to be
--      stored in the record.
--      stored in the record.
--
--
--
--
-- CHANGE HISTORY:
-- CHANGE HISTORY:
--      06 Dec 94   SAIC    ACVC 2.0
--      06 Dec 94   SAIC    ACVC 2.0
--
--
--!
--!
package C3A0005_0 is
package C3A0005_0 is
   Default_Call   : Boolean := False;
   Default_Call   : Boolean := False;
   type Button;
   type Button;
   -- Type accesses to procedures Push and Default_Response
   -- Type accesses to procedures Push and Default_Response
   type Button_Response_Ptr is access procedure
   type Button_Response_Ptr is access procedure
      (B : access Button);
      (B : access Button);
   procedure Push (B : access Button);
   procedure Push (B : access Button);
   procedure Set_Response (B : access Button;
   procedure Set_Response (B : access Button;
                           R : in Button_Response_Ptr);
                           R : in Button_Response_Ptr);
   procedure Default_Response  (B : access Button);
   procedure Default_Response  (B : access Button);
   Emergency_Call : Boolean := False;
   Emergency_Call : Boolean := False;
   procedure Emergency (B : access C3A0005_0.Button);
   procedure Emergency (B : access C3A0005_0.Button);
   type Button is
   type Button is
      record
      record
         Response :  Button_Response_Ptr
         Response :  Button_Response_Ptr
                  := Default_Response'Access;
                  := Default_Response'Access;
      end record;
      end record;
end C3A0005_0;
end C3A0005_0;
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
with TCTouch;
with TCTouch;
package body C3A0005_0 is
package body C3A0005_0 is
   procedure Push (B : access Button) is
   procedure Push (B : access Button) is
   begin
   begin
      TCTouch.Touch( 'P' ); --------------------------------------------- P
      TCTouch.Touch( 'P' ); --------------------------------------------- P
      -- Invoking subprogram designated by access value
      -- Invoking subprogram designated by access value
      B.Response (B);
      B.Response (B);
   end Push;
   end Push;
   procedure Set_Response (B : access Button;
   procedure Set_Response (B : access Button;
                           R : in     Button_Response_Ptr) is
                           R : in     Button_Response_Ptr) is
   begin
   begin
      TCTouch.Touch( 'S' ); --------------------------------------------- S
      TCTouch.Touch( 'S' ); --------------------------------------------- S
      -- Set procedure value in record
      -- Set procedure value in record
      B.Response := R;
      B.Response := R;
   end Set_Response;
   end Set_Response;
   procedure Default_Response (B : access Button) is
   procedure Default_Response (B : access Button) is
   begin
   begin
      TCTouch.Touch( 'D' ); --------------------------------------------- D
      TCTouch.Touch( 'D' ); --------------------------------------------- D
      Default_Call := True;
      Default_Call := True;
   end Default_Response;
   end Default_Response;
   procedure Emergency (B : access C3A0005_0.Button) is
   procedure Emergency (B : access C3A0005_0.Button) is
   begin
   begin
      TCTouch.Touch( 'E' ); --------------------------------------------- E
      TCTouch.Touch( 'E' ); --------------------------------------------- E
      Emergency_Call := True;
      Emergency_Call := True;
   end Emergency;
   end Emergency;
end C3A0005_0;
end C3A0005_0;
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
with TCTouch;
with TCTouch;
with Report;
with Report;
with C3A0005_0;
with C3A0005_0;
procedure C3A0005 is
procedure C3A0005 is
   Big_Red_Button : aliased C3A0005_0.Button;
   Big_Red_Button : aliased C3A0005_0.Button;
begin
begin
   Report.Test ("C3A0005", "Check that access to subprogram may be "
   Report.Test ("C3A0005", "Check that access to subprogram may be "
                         & "stored within data structures, and that the "
                         & "stored within data structures, and that the "
                         & "access to subprogram can subsequently be called");
                         & "access to subprogram can subsequently be called");
   C3A0005_0.Push (Big_Red_Button'Access);
   C3A0005_0.Push (Big_Red_Button'Access);
   TCTouch.Validate("PD", "Using default value");
   TCTouch.Validate("PD", "Using default value");
   TCTouch.Assert( C3A0005_0.Default_Call, "Default Call" );
   TCTouch.Assert( C3A0005_0.Default_Call, "Default Call" );
   -- set Emergency value in Button.Response
   -- set Emergency value in Button.Response
   C3A0005_0.Set_Response(Big_Red_Button'Access, C3A0005_0.Emergency'Access);
   C3A0005_0.Set_Response(Big_Red_Button'Access, C3A0005_0.Emergency'Access);
   C3A0005_0.Push (Big_Red_Button'Access);
   C3A0005_0.Push (Big_Red_Button'Access);
   TCTouch.Validate("SPE", "After set to Emergency value");
   TCTouch.Validate("SPE", "After set to Emergency value");
   TCTouch.Assert( C3A0005_0.Emergency_Call, "Emergency Call");
   TCTouch.Assert( C3A0005_0.Emergency_Call, "Emergency Call");
   Report.Result;
   Report.Result;
end C3A0005;
end C3A0005;
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.