Home | History | Annotate | Line # | Download | only in variant
      1 --  Copyright 2020-2024 Free Software Foundation, Inc.
      2 --
      3 --  This program is free software; you can redistribute it and/or modify
      4 --  it under the terms of the GNU General Public License as published by
      5 --  the Free Software Foundation; either version 3 of the License, or
      6 --  (at your option) any later version.
      7 --
      8 --  This program is distributed in the hope that it will be useful,
      9 --  but WITHOUT ANY WARRANTY; without even the implied warranty of
     10 --  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     11 --  GNU General Public License for more details.
     12 --
     13 --  You should have received a copy of the GNU General Public License
     14 --  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     15 
     16 package Pck is
     17 
     18    type Rec_Type (C : Character := 'd') is record
     19       case C is
     20          when Character'First     => X_First : Integer;
     21          when Character'Val (127) => X_127   : Integer;
     22          when Character'Val (128) => X_128   : Integer;
     23          when Character'Last      => X_Last  : Integer;
     24          when others              => null;
     25       end case;
     26    end record;
     27 
     28    type Second_Type (I : Integer) is record
     29       One: Integer;
     30       case I is
     31          when -5 .. 5 =>
     32 	   X : Integer;
     33          when others =>
     34 	   Y : Integer;
     35       end case;
     36    end record;
     37 
     38    type Nested_And_Variable (One, Two: Integer) is record
     39        Str : String (1 .. One);
     40        case One is
     41           when 0 =>
     42 	     null;
     43           when others =>
     44 	     OneValue : Integer;
     45              Str2 : String (1 .. Two);
     46              case Two is
     47 	        when 0 =>
     48 		   null;
     49 		when others =>
     50 		   TwoValue : Integer;
     51              end case;
     52        end case;
     53    end record;
     54 end Pck;
     55