Package Name: ada.strings.wide_maps.wide_constants

Return to: Package List


------------------------------------------------------------------------------
--                                                                          --
--                         GNAT RUNTIME COMPONENTS                          --
--                                                                          --
-- A D A . S T R I N G S . W I D E _ M A P S . W I D E _ C O N S T A N T S  --
--                                                                          --
--                                 S p e c                                  --
--                                                                          --
--                            $Revision: 1.14 $                             --
--                                                                          --
-- This specification is adapted from the Ada Reference Manual for use with --
-- GNAT.  In accordance with the copyright of that document, you can freely --
-- copy and modify this specification,  provided that if you redistribute a --
-- modified version,  any changes that you have made are clearly indicated. --
--                                                                          --


------------------------------------------------------------------------------

with Ada.Characters.Wide_Latin_1;
package Ada.Strings.Wide_Maps.Wide_Constants is

pragma Preelaborate (Wide_Constants);

   package W renames Ada.Characters.Wide_Latin_1;
   Control_Set           : constant Wide_Maps.Wide_Character_Set;
   Graphic_Set           : constant Wide_Maps.Wide_Character_Set;
   Letter_Set            : constant Wide_Maps.Wide_Character_Set;
   Lower_Set             : constant Wide_Maps.Wide_Character_Set;
   Upper_Set             : constant Wide_Maps.Wide_Character_Set;
   Basic_Set             : constant Wide_Maps.Wide_Character_Set;
   Decimal_Digit_Set     : constant Wide_Maps.Wide_Character_Set;
   Hexadecimal_Digit_Set : constant Wide_Maps.Wide_Character_Set;
   Alphanumeric_Set      : constant Wide_Maps.Wide_Character_Set;
   Special_Graphic_Set   : constant Wide_Maps.Wide_Character_Set;
   ISO_646_Set           : constant Wide_Maps.Wide_Character_Set;

   Character_Set         : constant Wide_Maps.Wide_Character_Set;
   Lower_Case_Map        : constant Wide_Maps.Wide_Character_Mapping;

   --  Maps to lower case for letters, else identity
   Upper_Case_Map        : constant Wide_Maps.Wide_Character_Mapping;

   --  Maps to upper case for letters, else identity
   Basic_Map             : constant Wide_Maps.Wide_Character_Mapping;

   --  Maps to basic letter for letters, else identity
private

   subtype WC is Wide_Character;
   Control_Ranges           : aliased constant Wide_Character_Ranges :=
     ((W.NUL, W.US),

      (W.DEL, W.APC));
   Control_Set              : constant Wide_Character_Set :=
                                (AF.Controlled with

                                 Control_Ranges'Unrestricted_Access);
   Graphic_Ranges           : aliased constant Wide_Character_Ranges :=
     ((W.' ',          W.Tilde),

      (WC'Val (256), WC'Last));
   Graphic_Set              : constant Wide_Character_Set :=
                                (AF.Controlled with

                                 Graphic_Ranges'Unrestricted_Access);
   Letter_Ranges            : aliased constant Wide_Character_Ranges :=
     ((W.'A',                 W.'Z'),
      (W.'a',                 W.'z'),
      (W.UC_A_Grave,          W.UC_O_Diaeresis),
      (W.UC_O_Oblique_Stroke, W.LC_O_Diaeresis),

      (W.LC_O_Oblique_Stroke, W.LC_Y_Diaeresis));
   Letter_Set               : constant Wide_Character_Set :=
                                (AF.Controlled with

                                 Letter_Ranges'Unrestricted_Access);
   Lower_Ranges             : aliased constant Wide_Character_Ranges :=
     (1 => (W.'a',                 W.'z'),
      2 => (W.LC_German_Sharp_S,   W.LC_O_Diaeresis),

      3 => (W.LC_O_Oblique_Stroke, W.LC_Y_Diaeresis));
   Lower_Set                : constant Wide_Character_Set :=
                                (AF.Controlled with

                                 Lower_Ranges'Unrestricted_Access);
   Upper_Ranges             : aliased constant Wide_Character_Ranges :=
     (1 => (W.'A',                 W.'Z'),
      2 => (W.UC_A_Grave,          W.UC_O_Diaeresis),

      3 => (W.UC_O_Oblique_Stroke, W.UC_Icelandic_Thorn));
   Upper_Set                : constant Wide_Character_Set :=
                                (AF.Controlled with

                                 Upper_Ranges'Unrestricted_Access);
   Basic_Ranges             : aliased constant Wide_Character_Ranges :=
     (1 => (W.'A',                 W.'Z'),
      2 => (W.'a',                 W.'z'),
      3 => (W.UC_AE_Diphthong,     W.UC_AE_Diphthong),
      4 => (W.LC_AE_Diphthong,     W.LC_AE_Diphthong),
      5 => (W.LC_German_Sharp_S,   W.LC_German_Sharp_S),
      6 => (W.UC_Icelandic_Thorn,  W.UC_Icelandic_Thorn),
      7 => (W.LC_Icelandic_Thorn,  W.LC_Icelandic_Thorn),
      8 => (W.UC_Icelandic_Eth,    W.UC_Icelandic_Eth),

      9 => (W.LC_Icelandic_Eth,    W.LC_Icelandic_Eth));
   Basic_Set                : constant Wide_Character_Set :=
                                (AF.Controlled with

                                 Basic_Ranges'Unrestricted_Access);
   Decimal_Digit_Ranges     : aliased constant Wide_Character_Ranges :=

     (1 => (W.'0', W.'9'));
   Decimal_Digit_Set        : constant Wide_Character_Set :=
                                (AF.Controlled with

                                 Decimal_Digit_Ranges'Unrestricted_Access);
   Hexadecimal_Digit_Ranges : aliased constant Wide_Character_Ranges :=
     (1 => (W.'0', W.'9'),
      2 => (W.'A', W.'F'),

      3 => (W.'a', W.'f'));
   Hexadecimal_Digit_Set    : constant Wide_Character_Set :=
                                (AF.Controlled with

                                 Hexadecimal_Digit_Ranges'Unrestricted_Access);
   Alphanumeric_Ranges      : aliased constant Wide_Character_Ranges :=
     (1 => (W.'0',                 W.'9'),
      2 => (W.'A',                 W.'Z'),
      3 => (W.'a',                 W.'z'),
      4 => (W.UC_A_Grave,          W.UC_O_Diaeresis),
      5 => (W.UC_O_Oblique_Stroke, W.LC_O_Diaeresis),

      6 => (W.LC_O_Oblique_Stroke, W.LC_Y_Diaeresis));
   Alphanumeric_Set         : constant Wide_Character_Set :=
                                (AF.Controlled with

                                 Alphanumeric_Ranges'Unrestricted_Access);
   Special_Graphic_Ranges   : aliased constant Wide_Character_Ranges :=
     (1 => (Wide_Space,            W.Solidus),
      2 => (W.Colon,               W.Commercial_At),
      3 => (W.Left_Square_Bracket, W.Grave),
      4 => (W.Left_Curly_Bracket,  W.Tilde),
      5 => (W.No_Break_Space,      W.Inverted_Question),
      6 => (W.Multiplication_Sign, W.Multiplication_Sign),

      7 => (W.Division_Sign,       W.Division_Sign));
   Special_Graphic_Set      : constant Wide_Character_Set :=
                                (AF.Controlled with

                                 Special_Graphic_Ranges'Unrestricted_Access);
   ISO_646_Ranges           : aliased constant Wide_Character_Ranges :=

     (1 => (W.NUL, W.DEL));
   ISO_646_Set              : constant Wide_Character_Set :=
                                (AF.Controlled with

                                 ISO_646_Ranges'Unrestricted_Access);
   Character_Ranges         : aliased constant Wide_Character_Ranges :=

     (1 => (W.NUL, WC'Val (255)));
   Character_Set            : constant Wide_Character_Set :=
                                (AF.Controlled with


                                 Character_Ranges'Unrestricted_Access);
   Lower_Case_Mapping : aliased constant Wide_Character_Mapping_Values :=

                          (Length => 56,
                           Domain =>
                             "ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
                              W.UC_A_Grave                &
                              W.UC_A_Acute                &
                              W.UC_A_Circumflex           &
                              W.UC_A_Tilde                &
                              W.UC_A_Diaeresis            &
                              W.UC_A_Ring                 &
                              W.UC_AE_Diphthong           &
                              W.UC_C_Cedilla              &
                              W.UC_E_Grave                &
                              W.UC_E_Acute                &
                              W.UC_E_Circumflex           &
                              W.UC_E_Diaeresis            &
                              W.UC_I_Grave                &
                              W.UC_I_Acute                &
                              W.UC_I_Circumflex           &
                              W.UC_I_Diaeresis            &
                              W.UC_Icelandic_Eth          &
                              W.UC_N_Tilde                &
                              W.UC_O_Grave                &
                              W.UC_O_Acute                &
                              W.UC_O_Circumflex           &
                              W.UC_O_Tilde                &
                              W.UC_O_Diaeresis            &
                              W.UC_O_Oblique_Stroke       &
                              W.UC_U_Grave                &
                              W.UC_U_Acute                &
                              W.UC_U_Circumflex           &
                              W.UC_U_Diaeresis            &
                              W.UC_Y_Acute                &

                              W.UC_Icelandic_Thorn,
                           Rangev =>
                             "abcdefghijklmnopqrstuvwxyz" &
                              W.LC_A_Grave                &
                              W.LC_A_Acute                &
                              W.LC_A_Circumflex           &
                              W.LC_A_Tilde                &
                              W.LC_A_Diaeresis            &
                              W.LC_A_Ring                 &
                              W.LC_AE_Diphthong           &
                              W.LC_C_Cedilla              &
                              W.LC_E_Grave                &
                              W.LC_E_Acute                &
                              W.LC_E_Circumflex           &
                              W.LC_E_Diaeresis            &
                              W.LC_I_Grave                &
                              W.LC_I_Acute                &
                              W.LC_I_Circumflex           &
                              W.LC_I_Diaeresis            &
                              W.LC_Icelandic_Eth          &
                              W.LC_N_Tilde                &
                              W.LC_O_Grave                &
                              W.LC_O_Acute                &
                              W.LC_O_Circumflex           &
                              W.LC_O_Tilde                &
                              W.LC_O_Diaeresis            &
                              W.LC_O_Oblique_Stroke       &
                              W.LC_U_Grave                &
                              W.LC_U_Acute                &
                              W.LC_U_Circumflex           &
                              W.LC_U_Diaeresis            &
                              W.LC_Y_Acute                &

                              W.LC_Icelandic_Thorn);
   Lower_Case_Map : constant Wide_Character_Mapping :=
                      (AF.Controlled with

                       Map => Lower_Case_Mapping'Unrestricted_Access);
   Upper_Case_Mapping : aliased constant Wide_Character_Mapping_Values :=

                          (Length => 56,
                           Domain =>
                             "abcdefghijklmnopqrstuvwxyz" &
                              W.LC_A_Grave                &
                              W.LC_A_Acute                &
                              W.LC_A_Circumflex           &
                              W.LC_A_Tilde                &
                              W.LC_A_Diaeresis            &
                              W.LC_A_Ring                 &
                              W.LC_AE_Diphthong           &
                              W.LC_C_Cedilla              &
                              W.LC_E_Grave                &
                              W.LC_E_Acute                &
                              W.LC_E_Circumflex           &
                              W.LC_E_Diaeresis            &
                              W.LC_I_Grave                &
                              W.LC_I_Acute                &
                              W.LC_I_Circumflex           &
                              W.LC_I_Diaeresis            &
                              W.LC_Icelandic_Eth          &
                              W.LC_N_Tilde                &
                              W.LC_O_Grave                &
                              W.LC_O_Acute                &
                              W.LC_O_Circumflex           &
                              W.LC_O_Tilde                &
                              W.LC_O_Diaeresis            &
                              W.LC_O_Oblique_Stroke       &
                              W.LC_U_Grave                &
                              W.LC_U_Acute                &
                              W.LC_U_Circumflex           &
                              W.LC_U_Diaeresis            &
                              W.LC_Y_Acute                &

                              W.LC_Icelandic_Thorn,
                           Rangev =>
                             "ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
                              W.UC_A_Grave                &
                              W.UC_A_Acute                &
                              W.UC_A_Circumflex           &
                              W.UC_A_Tilde                &
                              W.UC_A_Diaeresis            &
                              W.UC_A_Ring                 &
                              W.UC_AE_Diphthong           &
                              W.UC_C_Cedilla              &
                              W.UC_E_Grave                &
                              W.UC_E_Acute                &
                              W.UC_E_Circumflex           &
                              W.UC_E_Diaeresis            &
                              W.UC_I_Grave                &
                              W.UC_I_Acute                &
                              W.UC_I_Circumflex           &
                              W.UC_I_Diaeresis            &
                              W.UC_Icelandic_Eth          &
                              W.UC_N_Tilde                &
                              W.UC_O_Grave                &
                              W.UC_O_Acute                &
                              W.UC_O_Circumflex           &
                              W.UC_O_Tilde                &
                              W.UC_O_Diaeresis            &
                              W.UC_O_Oblique_Stroke       &
                              W.UC_U_Grave                &
                              W.UC_U_Acute                &
                              W.UC_U_Circumflex           &
                              W.UC_U_Diaeresis            &
                              W.UC_Y_Acute                &

                              W.UC_Icelandic_Thorn);
   Upper_Case_Map : constant Wide_Character_Mapping :=
                      (AF.Controlled with

                       Upper_Case_Mapping'Unrestricted_Access);
   Basic_Mapping : aliased constant Wide_Character_Mapping_Values :=

                     (Length => 55,
                      Domain =>
                        W.UC_A_Grave          &
                        W.UC_A_Acute          &
                        W.UC_A_Circumflex     &
                        W.UC_A_Tilde          &
                        W.UC_A_Diaeresis      &
                        W.UC_A_Ring           &
                        W.UC_C_Cedilla        &
                        W.UC_E_Grave          &
                        W.UC_E_Acute          &
                        W.UC_E_Circumflex     &
                        W.UC_E_Diaeresis      &
                        W.UC_I_Grave          &
                        W.UC_I_Acute          &
                        W.UC_I_Circumflex     &
                        W.UC_I_Diaeresis      &
                        W.UC_N_Tilde          &
                        W.UC_O_Grave          &
                        W.UC_O_Acute          &
                        W.UC_O_Circumflex     &
                        W.UC_O_Tilde          &
                        W.UC_O_Diaeresis      &
                        W.UC_O_Oblique_Stroke &
                        W.UC_U_Grave          &
                        W.UC_U_Acute          &
                        W.UC_U_Circumflex     &
                        W.UC_U_Diaeresis      &
                        W.UC_Y_Acute          &
                        W.LC_A_Grave          &
                        W.LC_A_Acute          &
                        W.LC_A_Circumflex     &
                        W.LC_A_Tilde          &
                        W.LC_A_Diaeresis      &
                        W.LC_A_Ring           &
                        W.LC_C_Cedilla        &
                        W.LC_E_Grave          &
                        W.LC_E_Acute          &
                        W.LC_E_Circumflex     &
                        W.LC_E_Diaeresis      &
                        W.LC_I_Grave          &
                        W.LC_I_Acute          &
                        W.LC_I_Circumflex     &
                        W.LC_I_Diaeresis      &
                        W.LC_N_Tilde          &
                        W.LC_O_Grave          &
                        W.LC_O_Acute          &
                        W.LC_O_Circumflex     &
                        W.LC_O_Tilde          &
                        W.LC_O_Diaeresis      &
                        W.LC_O_Oblique_Stroke &
                        W.LC_U_Grave          &
                        W.LC_U_Acute          &
                        W.LC_U_Circumflex     &
                        W.LC_U_Diaeresis      &
                        W.LC_Y_Acute          &

                        W.LC_Y_Diaeresis,
                      Rangev =>
                        'A'        &  -- UC_A_Grave
                        'A'        &  -- UC_A_Acute
                        'A'        &  -- UC_A_Circumflex
                        'A'        &  -- UC_A_Tilde
                        'A'        &  -- UC_A_Diaeresis
                        'A'        &  -- UC_A_Ring
                        'C'        &  -- UC_C_Cedilla
                        'E'        &  -- UC_E_Grave
                        'E'        &  -- UC_E_Acute
                        'E'        &  -- UC_E_Circumflex
                        'E'        &  -- UC_E_Diaeresis
                        'I'        &  -- UC_I_Grave
                        'I'        &  -- UC_I_Acute
                        'I'        &  -- UC_I_Circumflex
                        'I'        &  -- UC_I_Diaeresis
                        'N'        &  -- UC_N_Tilde
                        'O'        &  -- UC_O_Grave
                        'O'        &  -- UC_O_Acute
                        'O'        &  -- UC_O_Circumflex
                        'O'        &  -- UC_O_Tilde
                        'O'        &  -- UC_O_Diaeresis
                        'O'        &  -- UC_O_Oblique_Stroke
                        'U'        &  -- UC_U_Grave
                        'U'        &  -- UC_U_Acute
                        'U'        &  -- UC_U_Circumflex
                        'U'        &  -- UC_U_Diaeresis
                        'Y'        &  -- UC_Y_Acute
                        'a'        &  -- LC_A_Grave
                        'a'        &  -- LC_A_Acute
                        'a'        &  -- LC_A_Circumflex
                        'a'        &  -- LC_A_Tilde
                        'a'        &  -- LC_A_Diaeresis
                        'a'        &  -- LC_A_Ring
                        'c'        &  -- LC_C_Cedilla
                        'e'        &  -- LC_E_Grave
                        'e'        &  -- LC_E_Acute
                        'e'        &  -- LC_E_Circumflex
                        'e'        &  -- LC_E_Diaeresis
                        'i'        &  -- LC_I_Grave
                        'i'        &  -- LC_I_Acute
                        'i'        &  -- LC_I_Circumflex
                        'i'        &  -- LC_I_Diaeresis
                        'n'        &  -- LC_N_Tilde
                        'o'        &  -- LC_O_Grave
                        'o'        &  -- LC_O_Acute
                        'o'        &  -- LC_O_Circumflex
                        'o'        &  -- LC_O_Tilde
                        'o'        &  -- LC_O_Diaeresis
                        'o'        &  -- LC_O_Oblique_Stroke
                        'u'        &  -- LC_U_Grave
                        'u'        &  -- LC_U_Acute
                        'u'        &  -- LC_U_Circumflex
                        'u'        &  -- LC_U_Diaeresis
                        'y'        &  -- LC_Y_Acute

                        'y');         -- LC_Y_Diaeresis
   Basic_Map : constant Wide_Character_Mapping :=
                 (AF.Controlled with

                  Basic_Mapping'Unrestricted_Access);
end Ada.Strings.Wide_Maps.Wide_Constants;