1package Discr20 is
2
3  Size : Integer;
4
5  type Name is new String (1..Size);
6
7  type Rec is record
8     It : Name;
9  end record;
10
11  type Danger is (This, That);
12  type def (X : Danger := This) is record
13    case X is
14       when This => It : Rec;
15       when That => null;
16       end case;
17   end record;
18
19   type Switch is (On, Off);
20   type Wrapper (Disc : Switch := On) is private;
21   function Get (X : Wrapper) return Def;
22
23private
24   type Wrapper (Disc : Switch := On) is record
25      Case Disc is
26         when On  => It : Def;
27         when Off => null;
28      end case;
29   end record;
30
31end Discr20;
32