summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gnat.dg/specs/discr_private.ads
blob: 0ddfbd137ff775d666142a88d387b4575b88506d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
-- { dg-do compile }
-- { dg-options "-gnatws" }

package Discr_Private is

   package Dec is
      type T_DECIMAL (Prec : Integer := 1) is private;
   private
      type T_DECIMAL (Prec : Integer := 1) is record
         case Prec is
            when  1 .. 2 => Value : Integer;
            when others => null;
         end case;
      end record;
   end;

   type Value_T is record
      Bits  : Dec.T_DECIMAL(1);
   end record;
   for Value_T'size use 88;

   type Value_Entry_T is record
      Index : Integer;
      Value : Value_T;
   end record;

   type Value_Mode is (QI, HI, SI, DI, XI);
   for Value_Mode'size use 8;

   type Valid_Modes_T is array (Value_Mode) of Boolean;

   type Register_T is record
      Ventry : Value_Entry_T;
      Vmodes : Valid_Modes_T;
   end record;

   type Regid_T is (Latch, Acc);
   for Regid_T use (Latch => 0, Acc => 2);
   for Regid_T'Size use 8;

   type Regarray_T is array (Regid_T) of Register_T;

   type Machine_T (Up : Boolean := True) is record
      case Up is
         when True  => Regs : Regarray_T;
         when False => null;
       end case;
   end record;

end Discr_Private;