aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/ada/acats/tests/cd/cd10002.a
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/ada/acats/tests/cd/cd10002.a')
-rw-r--r--gcc/testsuite/ada/acats/tests/cd/cd10002.a1198
1 files changed, 0 insertions, 1198 deletions
diff --git a/gcc/testsuite/ada/acats/tests/cd/cd10002.a b/gcc/testsuite/ada/acats/tests/cd/cd10002.a
deleted file mode 100644
index fc56d4299df..00000000000
--- a/gcc/testsuite/ada/acats/tests/cd/cd10002.a
+++ /dev/null
@@ -1,1198 +0,0 @@
--- CD10002.A
---
--- Grant of Unlimited Rights
---
--- The Ada Conformity Assessment Authority (ACAA) holds unlimited
--- rights in the software and documentation contained herein. Unlimited
--- rights are the same as those granted by the U.S. Government for older
--- parts of the Ada Conformity Assessment Test Suite, and are defined
--- in DFAR 252.227-7013(a)(19). By making this public release, the ACAA
--- intends to confer upon all recipients unlimited rights equal to those
--- held by the ACAA. 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 operational items are allowed in some contexts where
--- representation items are not:
---
--- 1 - Check that the name of an incompletely defined type can be used
--- when specifying an operational item. (RM95/TC1 7.3(5)).
---
--- 2 - Check that operational items can be specified for a descendant of
--- a generic formal untagged type. (RM95/TC1 13.1(10)).
---
--- 3 - Check that operational items can be specified for a derived
--- untagged type even if the parent type is a by-reference type or
--- has user-defined primitive subprograms. (RM95/TC1 13.1(11/1)).
---
--- (Defect Report 8652/0009, as reflected in Technical Corrigendum 1).
---
--- CHANGE HISTORY:
--- 19 JAN 2001 PHL Initial version.
--- 3 DEC 2001 RLB Reformatted for ACATS.
--- 3 OCT 2002 RLB Corrected incorrect type derivations.
---
---!
-with Ada.Streams;
-use Ada.Streams;
-package CD10002_0 is
-
- type Kinds is (Read, Write, Input, Output);
- type Counts is array (Kinds) of Natural;
-
- generic
- type T is private;
- package Nonlimited_Stream_Ops is
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : T);
- function Input (Stream : access Root_Stream_Type'Class) return T;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out T);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : T);
-
- function Get_Counts return Counts;
-
- end Nonlimited_Stream_Ops;
-
- generic
- type T (<>) is limited private; -- Should be self-initializing.
- C : in out T;
- package Limited_Stream_Ops is
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : T);
- function Input (Stream : access Root_Stream_Type'Class) return T;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out T);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : T);
-
- function Get_Counts return Counts;
-
- end Limited_Stream_Ops;
-
-end CD10002_0;
-
-
-package body CD10002_0 is
-
- package body Nonlimited_Stream_Ops is
- Cnts : Counts := (others => 0);
- X : T; -- Initialized by Write/Output.
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : T) is
- begin
- X := Item;
- Cnts (Write) := Cnts (Write) + 1;
- end Write;
-
- function Input (Stream : access Root_Stream_Type'Class) return T is
- begin
- Cnts (Input) := Cnts (Input) + 1;
- return X;
- end Input;
-
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out T) is
- begin
- Cnts (Read) := Cnts (Read) + 1;
- Item := X;
- end Read;
-
- procedure Output (Stream : access Root_Stream_Type'Class; Item : T) is
- begin
- X := Item;
- Cnts (Output) := Cnts (Output) + 1;
- end Output;
-
- function Get_Counts return Counts is
- begin
- return Cnts;
- end Get_Counts;
-
- end Nonlimited_Stream_Ops;
-
- package body Limited_Stream_Ops is
- Cnts : Counts := (others => 0);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : T) is
- begin
- Cnts (Write) := Cnts (Write) + 1;
- end Write;
-
- function Input (Stream : access Root_Stream_Type'Class) return T is
- begin
- Cnts (Input) := Cnts (Input) + 1;
- return C;
- end Input;
-
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out T) is
- begin
- Cnts (Read) := Cnts (Read) + 1;
- end Read;
-
- procedure Output (Stream : access Root_Stream_Type'Class; Item : T) is
- begin
- Cnts (Output) := Cnts (Output) + 1;
- end Output;
-
- function Get_Counts return Counts is
- begin
- return Cnts;
- end Get_Counts;
-
- end Limited_Stream_Ops;
-
-end CD10002_0;
-
-
-with Ada.Streams;
-use Ada.Streams;
-package CD10002_1 is
-
- type Dummy_Stream is new Root_Stream_Type with null record;
- procedure Read (Stream : in out Dummy_Stream;
- Item : out Stream_Element_Array;
- Last : out Stream_Element_Offset);
- procedure Write (Stream : in out Dummy_Stream;
- Item : Stream_Element_Array);
-
-end CD10002_1;
-
-
-with Report;
-use Report;
-package body CD10002_1 is
-
- procedure Read (Stream : in out Dummy_Stream;
- Item : out Stream_Element_Array;
- Last : out Stream_Element_Offset) is
- begin
- Failed ("Unexpected call to the Read operation of Dummy_Stream");
- end Read;
-
- procedure Write (Stream : in out Dummy_Stream;
- Item : Stream_Element_Array) is
- begin
- Failed ("Unexpected call to the Write operation of Dummy_Stream");
- end Write;
-
-end CD10002_1;
-
-
-with Ada.Streams;
-use Ada.Streams;
-with CD10002_0;
-package CD10002_Deriv is
-
- -- Parent has user-defined subprograms.
-
- type T1 is new Boolean;
- function Is_Odd (X : Integer) return T1;
-
- type T2 is
- record
- F : Float;
- end record;
- procedure Print (X : T2);
-
- type T3 is array (Boolean) of Duration;
- function "+" (L, R : T3) return T3;
-
- -- Parent is by-reference. No need to check the case where the parent
- -- is tagged, because the defect report only deals with untagged types.
-
- task type T4 is
- end T4;
-
- protected type T5 is
- end T5;
-
- type T6 (D : access Integer := new Integer'(2)) is limited null record;
-
- type T7 is array (Character) of T6;
-
- package P is
- type T8 is limited private;
- private
- type T8 is new T5;
- end P;
-
- type Nt1 is new T1;
- type Nt2 is new T2;
- type Nt3 is new T3;
- type Nt4 is new T4;
- type Nt5 is new T5;
- type Nt6 is new T6;
- type Nt7 is new T7;
- type Nt8 is new P.T8;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt1'Base);
- function Input (Stream : access Root_Stream_Type'Class) return Nt1'Base;
- procedure Read (Stream : access Root_Stream_Type'Class;
- Item : out Nt1'Base);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt1'Base);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt2);
- function Input (Stream : access Root_Stream_Type'Class) return Nt2;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt2);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt2);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt3);
- function Input (Stream : access Root_Stream_Type'Class) return Nt3;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt3);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt3);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt4);
- function Input (Stream : access Root_Stream_Type'Class) return Nt4;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt4);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt4);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt5);
- function Input (Stream : access Root_Stream_Type'Class) return Nt5;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt5);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt5);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt6);
- function Input (Stream : access Root_Stream_Type'Class) return Nt6;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt6);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt6);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt7);
- function Input (Stream : access Root_Stream_Type'Class) return Nt7;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt7);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt7);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt8);
- function Input (Stream : access Root_Stream_Type'Class) return Nt8;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt8);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt8);
-
- for Nt1'Write use Write;
- for Nt1'Read use Read;
- for Nt1'Output use Output;
- for Nt1'Input use Input;
-
- for Nt2'Write use Write;
- for Nt2'Read use Read;
- for Nt2'Output use Output;
- for Nt2'Input use Input;
-
- for Nt3'Write use Write;
- for Nt3'Read use Read;
- for Nt3'Output use Output;
- for Nt3'Input use Input;
-
- for Nt4'Write use Write;
- for Nt4'Read use Read;
- for Nt4'Output use Output;
- for Nt4'Input use Input;
-
- for Nt5'Write use Write;
- for Nt5'Read use Read;
- for Nt5'Output use Output;
- for Nt5'Input use Input;
-
- for Nt6'Write use Write;
- for Nt6'Read use Read;
- for Nt6'Output use Output;
- for Nt6'Input use Input;
-
- for Nt7'Write use Write;
- for Nt7'Read use Read;
- for Nt7'Output use Output;
- for Nt7'Input use Input;
-
- for Nt8'Write use Write;
- for Nt8'Read use Read;
- for Nt8'Output use Output;
- for Nt8'Input use Input;
-
- -- All these variables are self-initializing.
- C4 : Nt4;
- C5 : Nt5;
- C6 : Nt6;
- C7 : Nt7;
- C8 : Nt8;
-
- package Nt1_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt1'Base);
- package Nt2_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt2);
- package Nt3_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt3);
- package Nt4_Ops is new CD10002_0.Limited_Stream_Ops (Nt4, C4);
- package Nt5_Ops is new CD10002_0.Limited_Stream_Ops (Nt5, C5);
- package Nt6_Ops is new CD10002_0.Limited_Stream_Ops (Nt6, C6);
- package Nt7_Ops is new CD10002_0.Limited_Stream_Ops (Nt7, C7);
- package Nt8_Ops is new CD10002_0.Limited_Stream_Ops (Nt8, C8);
-
-end CD10002_Deriv;
-
-
-package body CD10002_Deriv is
-
- function Is_Odd (X : Integer) return T1 is
- begin
- return True;
- end Is_Odd;
- procedure Print (X : T2) is
- begin
- null;
- end Print;
- function "+" (L, R : T3) return T3 is
- begin
- return (False => L (False) + R (True), True => L (True) + R (False));
- end "+";
- task body T4 is
- begin
- null;
- end T4;
- protected body T5 is
- end T5;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt1'Base)
- renames Nt1_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return Nt1'Base
- renames Nt1_Ops.Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt1'Base)
- renames Nt1_Ops.Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt1'Base)
- renames Nt1_Ops.Output;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt2)
- renames Nt2_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return Nt2
- renames Nt2_Ops.Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt2)
- renames Nt2_Ops.Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt2)
- renames Nt2_Ops.Output;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt3)
- renames Nt3_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return Nt3
- renames Nt3_Ops.Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt3)
- renames Nt3_Ops.Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt3)
- renames Nt3_Ops.Output;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt4)
- renames Nt4_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return Nt4
- renames Nt4_Ops.Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt4)
- renames Nt4_Ops.Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt4)
- renames Nt4_Ops.Output;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt5)
- renames Nt5_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return Nt5
- renames Nt5_Ops.Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt5)
- renames Nt5_Ops.Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt5)
- renames Nt5_Ops.Output;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt6)
- renames Nt6_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return Nt6
- renames Nt6_Ops.Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt6)
- renames Nt6_Ops.Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt6)
- renames Nt6_Ops.Output;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt7)
- renames Nt7_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return Nt7
- renames Nt7_Ops.Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt7)
- renames Nt7_Ops.Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt7)
- renames Nt7_Ops.Output;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt8)
- renames Nt8_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return Nt8
- renames Nt8_Ops.Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt8)
- renames Nt8_Ops.Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt8)
- renames Nt8_Ops.Output;
-
-end CD10002_Deriv;
-
-
-with Ada.Streams;
-use Ada.Streams;
-with CD10002_0;
-generic
- type T1 is (<>);
- type T2 is range <>;
- type T3 is mod <>;
- type T4 is digits <>;
- type T5 is delta <>;
- type T6 is delta <> digits <>;
- type T7 is access T3;
- type T8 is new Boolean;
- type T9 is private;
- type T10 (<>) is limited private; -- Should be self-initializing.
- C10 : in out T10;
- type T11 is array (T1) of T2;
-package CD10002_Gen is
-
- -- Direct descendants.
- type Nt1 is new T1;
- type Nt2 is new T2;
- type Nt3 is new T3;
- type Nt4 is new T4;
- type Nt5 is new T5;
- type Nt6 is new T6;
- type Nt7 is new T7;
- type Nt8 is new T8;
- type Nt9 is new T9;
- type Nt10 is new T10;
- type Nt11 is new T11;
-
- -- Indirect descendants (only pick two, a limited one and a non-limited
- -- one).
- type Nt12 is new Nt10;
- type Nt13 is new Nt11;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt1'Base);
- function Input (Stream : access Root_Stream_Type'Class) return Nt1'Base;
- procedure Read (Stream : access Root_Stream_Type'Class;
- Item : out Nt1'Base);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt1'Base);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt2'Base);
- function Input (Stream : access Root_Stream_Type'Class) return Nt2'Base;
- procedure Read (Stream : access Root_Stream_Type'Class;
- Item : out Nt2'Base);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt2'Base);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt3'Base);
- function Input (Stream : access Root_Stream_Type'Class) return Nt3'Base;
- procedure Read (Stream : access Root_Stream_Type'Class;
- Item : out Nt3'Base);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt3'Base);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt4'Base);
- function Input (Stream : access Root_Stream_Type'Class) return Nt4'Base;
- procedure Read (Stream : access Root_Stream_Type'Class;
- Item : out Nt4'Base);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt4'Base);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt5'Base);
- function Input (Stream : access Root_Stream_Type'Class) return Nt5'Base;
- procedure Read (Stream : access Root_Stream_Type'Class;
- Item : out Nt5'Base);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt5'Base);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt6'Base);
- function Input (Stream : access Root_Stream_Type'Class) return Nt6'Base;
- procedure Read (Stream : access Root_Stream_Type'Class;
- Item : out Nt6'Base);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt6'Base);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt7);
- function Input (Stream : access Root_Stream_Type'Class) return Nt7;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt7);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt7);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt8'Base);
- function Input (Stream : access Root_Stream_Type'Class) return Nt8'Base;
- procedure Read (Stream : access Root_Stream_Type'Class;
- Item : out Nt8'Base);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt8'Base);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt9);
- function Input (Stream : access Root_Stream_Type'Class) return Nt9;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt9);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt9);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt10);
- function Input (Stream : access Root_Stream_Type'Class) return Nt10;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt10);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt10);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt11);
- function Input (Stream : access Root_Stream_Type'Class) return Nt11;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt11);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt11);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt12);
- function Input (Stream : access Root_Stream_Type'Class) return Nt12;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt12);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt12);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt13);
- function Input (Stream : access Root_Stream_Type'Class) return Nt13;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt13);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt13);
-
- for Nt1'Write use Write;
- for Nt1'Read use Read;
- for Nt1'Output use Output;
- for Nt1'Input use Input;
-
- for Nt2'Write use Write;
- for Nt2'Read use Read;
- for Nt2'Output use Output;
- for Nt2'Input use Input;
-
- for Nt3'Write use Write;
- for Nt3'Read use Read;
- for Nt3'Output use Output;
- for Nt3'Input use Input;
-
- for Nt4'Write use Write;
- for Nt4'Read use Read;
- for Nt4'Output use Output;
- for Nt4'Input use Input;
-
- for Nt5'Write use Write;
- for Nt5'Read use Read;
- for Nt5'Output use Output;
- for Nt5'Input use Input;
-
- for Nt6'Write use Write;
- for Nt6'Read use Read;
- for Nt6'Output use Output;
- for Nt6'Input use Input;
-
- for Nt7'Write use Write;
- for Nt7'Read use Read;
- for Nt7'Output use Output;
- for Nt7'Input use Input;
-
- for Nt8'Write use Write;
- for Nt8'Read use Read;
- for Nt8'Output use Output;
- for Nt8'Input use Input;
-
- for Nt9'Write use Write;
- for Nt9'Read use Read;
- for Nt9'Output use Output;
- for Nt9'Input use Input;
-
- for Nt10'Write use Write;
- for Nt10'Read use Read;
- for Nt10'Output use Output;
- for Nt10'Input use Input;
-
- for Nt11'Write use Write;
- for Nt11'Read use Read;
- for Nt11'Output use Output;
- for Nt11'Input use Input;
-
- for Nt12'Write use Write;
- for Nt12'Read use Read;
- for Nt12'Output use Output;
- for Nt12'Input use Input;
-
- for Nt13'Write use Write;
- for Nt13'Read use Read;
- for Nt13'Output use Output;
- for Nt13'Input use Input;
-
- type Null_Record is null record;
-
- package Nt1_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt1'Base);
- package Nt2_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt2'Base);
- package Nt3_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt3'Base);
- package Nt4_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt4'Base);
- package Nt5_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt5'Base);
- package Nt6_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt6'Base);
- package Nt7_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt7);
- package Nt8_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt8'Base);
- package Nt9_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt9);
- package Nt11_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt11);
- package Nt13_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt13);
-
- function Get_Nt10_Counts return CD10002_0.Counts;
- function Get_Nt12_Counts return CD10002_0.Counts;
-
-end CD10002_Gen;
-
-
-package body CD10002_Gen is
-
- use CD10002_0;
-
- Nt10_Cnts : Counts := (others => 0);
- Nt12_Cnts : Counts := (others => 0);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt1'Base)
- renames Nt1_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return Nt1'Base
- renames Nt1_Ops.Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt1'Base)
- renames Nt1_Ops.Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt1'Base)
- renames Nt1_Ops.Output;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt2'Base)
- renames Nt2_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return Nt2'Base
- renames Nt2_Ops.Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt2'Base)
- renames Nt2_Ops.Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt2'Base)
- renames Nt2_Ops.Output;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt3'Base)
- renames Nt3_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return Nt3'Base
- renames Nt3_Ops.Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt3'Base)
- renames Nt3_Ops.Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt3'Base)
- renames Nt3_Ops.Output;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt4'Base)
- renames Nt4_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return Nt4'Base
- renames Nt4_Ops.Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt4'Base)
- renames Nt4_Ops.Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt4'Base)
- renames Nt4_Ops.Output;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt5'Base)
- renames Nt5_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return Nt5'Base
- renames Nt5_Ops.Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt5'Base)
- renames Nt5_Ops.Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt5'Base)
- renames Nt5_Ops.Output;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt6'Base)
- renames Nt6_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return Nt6'Base
- renames Nt6_Ops.Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt6'Base)
- renames Nt6_Ops.Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt6'Base)
- renames Nt6_Ops.Output;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt7)
- renames Nt7_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return Nt7
- renames Nt7_Ops.Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt7)
- renames Nt7_Ops.Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt7)
- renames Nt7_Ops.Output;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt8'Base)
- renames Nt8_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return Nt8'Base
- renames Nt8_Ops.Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt8'Base)
- renames Nt8_Ops.Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt8'Base)
- renames Nt8_Ops.Output;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt9)
- renames Nt9_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return Nt9
- renames Nt9_Ops.Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt9)
- renames Nt9_Ops.Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt9)
- renames Nt9_Ops.Output;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt10) is
- begin
- Nt10_Cnts (Write) := Nt10_Cnts (Write) + 1;
- end Write;
- function Input (Stream : access Root_Stream_Type'Class) return Nt10 is
- begin
- Nt10_Cnts (Input) := Nt10_Cnts (Input) + 1;
- return Nt10 (C10);
- end Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt10) is
- begin
- Nt10_Cnts (Read) := Nt10_Cnts (Read) + 1;
- end Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt10) is
- begin
- Nt10_Cnts (Output) := Nt10_Cnts (Output) + 1;
- end Output;
- function Get_Nt10_Counts return CD10002_0.Counts is
- begin
- return Nt10_Cnts;
- end Get_Nt10_Counts;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt11)
- renames Nt11_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return Nt11
- renames Nt11_Ops.Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt11)
- renames Nt11_Ops.Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt11)
- renames Nt11_Ops.Output;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt12) is
- begin
- Nt12_Cnts (Write) := Nt12_Cnts (Write) + 1;
- end Write;
- function Input (Stream : access Root_Stream_Type'Class) return Nt12 is
- begin
- Nt12_Cnts (Input) := Nt12_Cnts (Input) + 1;
- return Nt12 (C10);
- end Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt12) is
- begin
- Nt12_Cnts (Read) := Nt12_Cnts (Read) + 1;
- end Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt12) is
- begin
- Nt12_Cnts (Output) := Nt12_Cnts (Output) + 1;
- end Output;
- function Get_Nt12_Counts return CD10002_0.Counts is
- begin
- return Nt12_Cnts;
- end Get_Nt12_Counts;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt13)
- renames Nt13_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return Nt13
- renames Nt13_Ops.Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt13)
- renames Nt13_Ops.Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt13)
- renames Nt13_Ops.Output;
-
-end CD10002_Gen;
-
-
-with Ada.Streams;
-use Ada.Streams;
-with CD10002_0;
-package CD10002_Priv is
-
- External_Tag_1 : constant String := "Isaac Newton";
- External_Tag_2 : constant String := "Albert Einstein";
-
- type T1 is tagged private;
- type T2 is tagged
- record
- C : T1;
- end record;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : T1);
- function Input (Stream : access Root_Stream_Type'Class) return T1;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out T1);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : T1);
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : T2);
- function Input (Stream : access Root_Stream_Type'Class) return T2;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out T2);
- procedure Output (Stream : access Root_Stream_Type'Class; Item : T2);
-
- for T1'Write use Write;
- for T1'Input use Input;
-
- for T2'Read use Read;
- for T2'Output use Output;
- for T2'External_Tag use External_Tag_2;
-
- function Get_T1_Counts return CD10002_0.Counts;
- function Get_T2_Counts return CD10002_0.Counts;
-
-private
-
- for T1'Read use Read;
- for T1'Output use Output;
- for T1'External_Tag use External_Tag_1;
-
- for T2'Write use Write;
- for T2'Input use Input;
-
- type T1 is tagged null record;
-
- package T1_Ops is new CD10002_0.Nonlimited_Stream_Ops (T1);
- package T2_Ops is new CD10002_0.Nonlimited_Stream_Ops (T2);
-
-end CD10002_Priv;
-
-
-package body CD10002_Priv is
- procedure Write (Stream : access Root_Stream_Type'Class; Item : T1)
- renames T1_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return T1
- renames T1_Ops.Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out T1)
- renames T1_Ops.Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : T1)
- renames T1_Ops.Output;
-
- procedure Write (Stream : access Root_Stream_Type'Class; Item : T2)
- renames T2_Ops.Write;
- function Input (Stream : access Root_Stream_Type'Class) return T2
- renames T2_Ops.Input;
- procedure Read (Stream : access Root_Stream_Type'Class; Item : out T2)
- renames T2_Ops.Read;
- procedure Output (Stream : access Root_Stream_Type'Class; Item : T2)
- renames T2_Ops.Output;
-
- function Get_T1_Counts return CD10002_0.Counts renames T1_Ops.Get_Counts;
- function Get_T2_Counts return CD10002_0.Counts renames T2_Ops.Get_Counts;
-end CD10002_Priv;
-
-
-with Ada.Streams;
-use Ada.Streams;
-with Report;
-use Report;
-with System;
-with CD10002_0;
-with CD10002_1;
-with CD10002_Deriv;
-with CD10002_Gen;
-with CD10002_Priv;
-procedure CD10002 is
-
- package Deriv renames CD10002_Deriv;
- generic package Gen renames CD10002_Gen;
- package Priv renames CD10002_Priv;
-
- type Stream_Ops is (Read, Write, Input, Output);
- type Counts is array (Stream_Ops) of Natural;
-
- S : aliased CD10002_1.Dummy_Stream;
-
-begin
- Test ("CD10002",
- "Check that operational items are allowed in some contexts " &
- "where representation items are not");
-
- Test_Priv:
- declare
- X1 : Priv.T1;
- X2 : Priv.T2;
- use CD10002_0;
- begin
- Comment
- ("Check that the name of an incompletely defined type can be " &
- "used when specifying an operational item");
-
- -- Partial view of a private type.
- Priv.T1'Write (S'Access, X1);
- Priv.T1'Read (S'Access, X1);
- Priv.T1'Output (S'Access, X1);
- X1 := Priv.T1'Input (S'Access);
-
- if Priv.Get_T1_Counts /= (1, 1, 1, 1) then
- Failed ("Incorrect calls to the stream attributes for Priv.T1");
- elsif Priv.T1'External_Tag /= Priv.External_Tag_1 then
- Failed ("Incorrect external tag for Priv.T1");
- end if;
-
- -- Incompletely defined but not private.
- Priv.T2'Write (S'Access, X2);
- Priv.T2'Read (S'Access, X2);
- Priv.T2'Output (S'Access, X2);
- X2 := Priv.T2'Input (S'Access);
-
- if Priv.Get_T2_Counts /= (1, 1, 1, 1) then
- Failed ("Incorrect calls to the stream attributes for Priv.T2");
- elsif Priv.T2'External_Tag /= Priv.External_Tag_2 then
- Failed ("Incorrect external tag for Priv.T2");
- end if;
-
- end Test_Priv;
-
- Test_Gen:
- declare
-
- type Modular is mod System.Max_Binary_Modulus;
- type Decimal is delta 1.0 digits 1;
- type Access_Modular is access Modular;
- type R9 is null record;
- type R10 (D : access Integer) is limited null record;
- type Arr is array (Character) of Integer;
-
- C10 : R10 (new Integer'(19));
-
- package Inst is new Gen (T1 => Character,
- T2 => Integer,
- T3 => Modular,
- T4 => Float,
- T5 => Duration,
- T6 => Decimal,
- T7 => Access_Modular,
- T8 => Boolean,
- T9 => R9,
- T10 => R10,
- C10 => C10,
- T11 => Arr);
-
- X1 : Inst.Nt1 := 'a';
- X2 : Inst.Nt2 := 0;
- X3 : Inst.Nt3 := 0;
- X4 : Inst.Nt4 := 0.0;
- X5 : Inst.Nt5 := 0.0;
- X6 : Inst.Nt6 := 0.0;
- X7 : Inst.Nt7 := null;
- X8 : Inst.Nt8 := Inst.False;
- X9 : Inst.Nt9 := (null record);
- X10 : Inst.Nt10 (D => new Integer'(5));
- Y10 : Integer;
- X11 : Inst.Nt11 := (others => 0);
- X12 : Inst.Nt12 (D => new Integer'(7));
- Y12 : Integer;
- X13 : Inst.Nt13 := (others => 0);
- use CD10002_0;
- begin
- Comment ("Check that operational items can be specified for a " &
- "descendant of a generic formal untagged type");
-
- Inst.Nt1'Write (S'Access, X1);
- Inst.Nt1'Read (S'Access, X1);
- Inst.Nt1'Output (S'Access, X1);
- X1 := Inst.Nt1'Input (S'Access);
-
- if Inst.Nt1_Ops.Get_Counts /= (1, 1, 1, 1) then
- Failed
- ("Incorrect calls to the stream attributes for Inst.Nt1");
- end if;
-
- Inst.Nt2'Write (S'Access, X2);
- Inst.Nt2'Read (S'Access, X2);
- Inst.Nt2'Output (S'Access, X2);
- X2 := Inst.Nt2'Input (S'Access);
-
- if Inst.Nt2_Ops.Get_Counts /= (1, 1, 1, 1) then
- Failed
- ("Incorrect calls to the stream attributes for Inst.Nt2");
- end if;
-
- Inst.Nt3'Write (S'Access, X3);
- Inst.Nt3'Read (S'Access, X3);
- Inst.Nt3'Output (S'Access, X3);
- X3 := Inst.Nt3'Input (S'Access);
-
- if Inst.Nt3_Ops.Get_Counts /= (1, 1, 1, 1) then
- Failed
- ("Incorrect calls to the stream attributes for Inst.Nt3");
- end if;
-
- Inst.Nt4'Write (S'Access, X4);
- Inst.Nt4'Read (S'Access, X4);
- Inst.Nt4'Output (S'Access, X4);
- X4 := Inst.Nt4'Input (S'Access);
-
- if Inst.Nt4_Ops.Get_Counts /= (1, 1, 1, 1) then
- Failed
- ("Incorrect calls to the stream attributes for Inst.Nt4");
- end if;
-
- Inst.Nt5'Write (S'Access, X5);
- Inst.Nt5'Read (S'Access, X5);
- Inst.Nt5'Output (S'Access, X5);
- X5 := Inst.Nt5'Input (S'Access);
-
- if Inst.Nt5_Ops.Get_Counts /= (1, 1, 1, 1) then
- Failed
- ("Incorrect calls to the stream attributes for Inst.Nt5");
- end if;
-
- Inst.Nt6'Write (S'Access, X6);
- Inst.Nt6'Read (S'Access, X6);
- Inst.Nt6'Output (S'Access, X6);
- X6 := Inst.Nt6'Input (S'Access);
-
- if Inst.Nt6_Ops.Get_Counts /= (1, 1, 1, 1) then
- Failed
- ("Incorrect calls to the stream attributes for Inst.Nt6");
- end if;
-
- Inst.Nt7'Write (S'Access, X7);
- Inst.Nt7'Read (S'Access, X7);
- Inst.Nt7'Output (S'Access, X7);
- X7 := Inst.Nt7'Input (S'Access);
-
- if Inst.Nt7_Ops.Get_Counts /= (1, 1, 1, 1) then
- Failed
- ("Incorrect calls to the stream attributes for Inst.Nt7");
- end if;
-
- Inst.Nt8'Write (S'Access, X8);
- Inst.Nt8'Read (S'Access, X8);
- Inst.Nt8'Output (S'Access, X8);
- X8 := Inst.Nt8'Input (S'Access);
-
- if Inst.Nt8_Ops.Get_Counts /= (1, 1, 1, 1) then
- Failed
- ("Incorrect calls to the stream attributes for Inst.Nt8");
- end if;
-
- Inst.Nt9'Write (S'Access, X9);
- Inst.Nt9'Read (S'Access, X9);
- Inst.Nt9'Output (S'Access, X9);
- X9 := Inst.Nt9'Input (S'Access);
-
- if Inst.Nt9_Ops.Get_Counts /= (1, 1, 1, 1) then
- Failed
- ("Incorrect calls to the stream attributes for Inst.Nt9");
- end if;
-
- Inst.Nt10'Write (S'Access, X10);
- Inst.Nt10'Read (S'Access, X10);
- Inst.Nt10'Output (S'Access, X10);
- Y10 := Inst.Nt10'Input (S'Access).D.all;
-
- if Inst.Get_Nt10_Counts /= (1, 1, 1, 1) then
- Failed
- ("Incorrect calls to the stream attributes for Inst.Nt10");
- end if;
-
- Inst.Nt11'Write (S'Access, X11);
- Inst.Nt11'Read (S'Access, X11);
- Inst.Nt11'Output (S'Access, X11);
- X11 := Inst.Nt11'Input (S'Access);
-
- if Inst.Nt11_Ops.Get_Counts /= (1, 1, 1, 1) then
- Failed
- ("Incorrect calls to the stream attributes for Inst.Nt11");
- end if;
-
- Inst.Nt12'Write (S'Access, X12);
- Inst.Nt12'Read (S'Access, X12);
- Inst.Nt12'Output (S'Access, X12);
- Y12 := Inst.Nt12'Input (S'Access).D.all;
-
- if Inst.Get_Nt12_Counts /= (1, 1, 1, 1) then
- Failed
- ("Incorrect calls to the stream attributes for Inst.Nt12");
- end if;
-
- Inst.Nt13'Write (S'Access, X13);
- Inst.Nt13'Read (S'Access, X13);
- Inst.Nt13'Output (S'Access, X13);
- X13 := Inst.Nt13'Input (S'Access);
-
- if Inst.Nt13_Ops.Get_Counts /= (1, 1, 1, 1) then
- Failed
- ("Incorrect calls to the stream attributes for Inst.Nt13");
- end if;
- end Test_Gen;
-
- Test_Deriv:
- declare
- X1 : Deriv.Nt1 := Deriv.False;
- X2 : Deriv.Nt2 := (others => 0.0);
- X3 : Deriv.Nt3 := (others => 0.0);
- X4 : Deriv.Nt4;
- Y4 : Boolean;
- X5 : Deriv.Nt5;
- Y5 : System.Address;
- X6 : Deriv.Nt6;
- Y6 : Integer;
- X7 : Deriv.Nt7;
- Y7 : Integer;
- X8 : Deriv.Nt8;
- Y8 : Integer;
- use CD10002_0;
- begin
- Comment ("Check that operational items can be specified for a " &
- "derived untagged type even if the parent type is a " &
- "by-reference type, or has user-defined primitive " &
- "subprograms");
-
- Deriv.Nt1'Write (S'Access, X1);
- Deriv.Nt1'Read (S'Access, X1);
- Deriv.Nt1'Output (S'Access, X1);
- X1 := Deriv.Nt1'Input (S'Access);
-
- if Deriv.Nt1_Ops.Get_Counts /= (1, 1, 1, 1) then
- Failed
- ("Incorrect calls to the stream attributes for Deriv.Nt1");
- end if;
-
- Deriv.Nt2'Write (S'Access, X2);
- Deriv.Nt2'Read (S'Access, X2);
- Deriv.Nt2'Output (S'Access, X2);
- X2 := Deriv.Nt2'Input (S'Access);
-
- if Deriv.Nt2_Ops.Get_Counts /= (1, 1, 1, 1) then
- Failed
- ("Incorrect calls to the stream attributes for Deriv.Nt2");
- end if;
-
- Deriv.Nt3'Write (S'Access, X3);
- Deriv.Nt3'Read (S'Access, X3);
- Deriv.Nt3'Output (S'Access, X3);
- X3 := Deriv.Nt3'Input (S'Access);
-
- if Deriv.Nt3_Ops.Get_Counts /= (1, 1, 1, 1) then
- Failed
- ("Incorrect calls to the stream attributes for Deriv.Nt3");
- end if;
-
- Deriv.Nt4'Write (S'Access, X4);
- Deriv.Nt4'Read (S'Access, X4);
- Deriv.Nt4'Output (S'Access, X4);
- Y4 := Deriv.Nt4'Input (S'Access)'Terminated;
-
- if Deriv.Nt4_Ops.Get_Counts /= (1, 1, 1, 1) then
- Failed
- ("Incorrect calls to the stream attributes for Deriv.Nt4");
- end if;
-
- Deriv.Nt5'Write (S'Access, X5);
- Deriv.Nt5'Read (S'Access, X5);
- Deriv.Nt5'Output (S'Access, X5);
- Y5 := Deriv.Nt5'Input (S'Access)'Address;
-
- if Deriv.Nt5_Ops.Get_Counts /= (1, 1, 1, 1) then
- Failed
- ("Incorrect calls to the stream attributes for Deriv.Nt5");
- end if;
-
- Deriv.Nt6'Write (S'Access, X6);
- Deriv.Nt6'Read (S'Access, X6);
- Deriv.Nt6'Output (S'Access, X6);
- Y6 := Deriv.Nt6'Input (S'Access).D.all;
-
- if Deriv.Nt6_Ops.Get_Counts /= (1, 1, 1, 1) then
- Failed
- ("Incorrect calls to the stream attributes for Deriv.Nt6");
- end if;
-
- Deriv.Nt7'Write (S'Access, X7);
- Deriv.Nt7'Read (S'Access, X7);
- Deriv.Nt7'Output (S'Access, X7);
- Y7 := Deriv.Nt7'Input (S'Access) ('a').D.all;
-
- if Deriv.Nt7_Ops.Get_Counts /= (1, 1, 1, 1) then
- Failed
- ("Incorrect calls to the stream attributes for Deriv.Nt7");
- end if;
-
- Deriv.Nt8'Write (S'Access, X8);
- Deriv.Nt8'Read (S'Access, X8);
- Deriv.Nt8'Output (S'Access, X8);
- Y8 := Deriv.Nt8'Input (S'Access)'Size;
-
- if Deriv.Nt8_Ops.Get_Counts /= (1, 1, 1, 1) then
- Failed
- ("Incorrect calls to the stream attributes for Deriv.Nt8");
- end if;
- end Test_Deriv;
-
- Result;
-end CD10002;
-
-