File : a-swmwco.ads


   1 ------------------------------------------------------------------------------
   2 --                                                                          --
   3 --                         GNAT RUN-TIME COMPONENTS                         --
   4 --                                                                          --
   5 -- 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  --
   6 --                                                                          --
   7 --                                 S p e c                                  --
   8 --                                                                          --
   9 --          Copyright (C) 1992-2009, Free Software Foundation, Inc.         --
  10 --                                                                          --
  11 -- This specification is derived from the Ada Reference Manual for use with --
  12 -- GNAT. The copyright notice above, and the license provisions that follow --
  13 -- apply solely to the  contents of the part following the private keyword. --
  14 --                                                                          --
  15 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  16 -- terms of the  GNU General Public License as published  by the Free Soft- --
  17 -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  18 -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  19 -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
  20 -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
  21 --                                                                          --
  22 --                                                                          --
  23 --                                                                          --
  24 --                                                                          --
  25 --                                                                          --
  26 -- You should have received a copy of the GNU General Public License and    --
  27 -- a copy of the GCC Runtime Library Exception along with this program;     --
  28 -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
  29 -- <http://www.gnu.org/licenses/>.                                          --
  30 --                                                                          --
  31 -- GNAT was originally developed  by the GNAT team at  New York University. --
  32 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  33 --                                                                          --
  34 ------------------------------------------------------------------------------
  35 
  36 with Ada.Characters.Wide_Latin_1;
  37 
  38 package Ada.Strings.Wide_Maps.Wide_Constants is
  39    pragma Preelaborate;
  40 
  41    Control_Set           : constant Wide_Maps.Wide_Character_Set;
  42    Graphic_Set           : constant Wide_Maps.Wide_Character_Set;
  43    Letter_Set            : constant Wide_Maps.Wide_Character_Set;
  44    Lower_Set             : constant Wide_Maps.Wide_Character_Set;
  45    Upper_Set             : constant Wide_Maps.Wide_Character_Set;
  46    Basic_Set             : constant Wide_Maps.Wide_Character_Set;
  47    Decimal_Digit_Set     : constant Wide_Maps.Wide_Character_Set;
  48    Hexadecimal_Digit_Set : constant Wide_Maps.Wide_Character_Set;
  49    Alphanumeric_Set      : constant Wide_Maps.Wide_Character_Set;
  50    Special_Graphic_Set   : constant Wide_Maps.Wide_Character_Set;
  51    ISO_646_Set           : constant Wide_Maps.Wide_Character_Set;
  52    Character_Set         : constant Wide_Maps.Wide_Character_Set;
  53 
  54    Lower_Case_Map        : constant Wide_Maps.Wide_Character_Mapping;
  55    --  Maps to lower case for letters, else identity
  56 
  57    Upper_Case_Map        : constant Wide_Maps.Wide_Character_Mapping;
  58    --  Maps to upper case for letters, else identity
  59 
  60    Basic_Map             : constant Wide_Maps.Wide_Character_Mapping;
  61    --  Maps to basic letter for letters, else identity
  62 
  63 private
  64    package W renames Ada.Characters.Wide_Latin_1;
  65 
  66    subtype WC is Wide_Character;
  67 
  68    Control_Ranges           : aliased constant Wide_Character_Ranges :=
  69      ((W.NUL, W.US),
  70       (W.DEL, W.APC));
  71 
  72    Control_Set              : constant Wide_Character_Set :=
  73      (AF.Controlled with
  74       Control_Ranges'Unrestricted_Access);
  75 
  76    Graphic_Ranges           : aliased constant Wide_Character_Ranges :=
  77      ((W.Space,       W.Tilde),
  78       (WC'Val (256), WC'Last));
  79 
  80    Graphic_Set              : constant Wide_Character_Set :=
  81      (AF.Controlled with
  82       Graphic_Ranges'Unrestricted_Access);
  83 
  84    Letter_Ranges            : aliased constant Wide_Character_Ranges :=
  85      (('A',                   'Z'),
  86       (W.LC_A,                W.LC_Z),
  87       (W.UC_A_Grave,          W.UC_O_Diaeresis),
  88       (W.UC_O_Oblique_Stroke, W.LC_O_Diaeresis),
  89       (W.LC_O_Oblique_Stroke, W.LC_Y_Diaeresis));
  90 
  91    Letter_Set               : constant Wide_Character_Set :=
  92      (AF.Controlled with
  93       Letter_Ranges'Unrestricted_Access);
  94 
  95    Lower_Ranges             : aliased constant Wide_Character_Ranges :=
  96      (1 => (W.LC_A,                 W.LC_Z),
  97       2 => (W.LC_German_Sharp_S,   W.LC_O_Diaeresis),
  98       3 => (W.LC_O_Oblique_Stroke, W.LC_Y_Diaeresis));
  99 
 100    Lower_Set                : constant Wide_Character_Set :=
 101      (AF.Controlled with
 102       Lower_Ranges'Unrestricted_Access);
 103 
 104    Upper_Ranges             : aliased constant Wide_Character_Ranges :=
 105      (1 => ('A',                   'Z'),
 106       2 => (W.UC_A_Grave,          W.UC_O_Diaeresis),
 107       3 => (W.UC_O_Oblique_Stroke, W.UC_Icelandic_Thorn));
 108 
 109    Upper_Set                : constant Wide_Character_Set :=
 110      (AF.Controlled with
 111       Upper_Ranges'Unrestricted_Access);
 112 
 113    Basic_Ranges             : aliased constant Wide_Character_Ranges :=
 114      (1 => ('A',                   'Z'),
 115       2 => (W.LC_A,                W.LC_Z),
 116       3 => (W.UC_AE_Diphthong,     W.UC_AE_Diphthong),
 117       4 => (W.LC_AE_Diphthong,     W.LC_AE_Diphthong),
 118       5 => (W.LC_German_Sharp_S,   W.LC_German_Sharp_S),
 119       6 => (W.UC_Icelandic_Thorn,  W.UC_Icelandic_Thorn),
 120       7 => (W.LC_Icelandic_Thorn,  W.LC_Icelandic_Thorn),
 121       8 => (W.UC_Icelandic_Eth,    W.UC_Icelandic_Eth),
 122       9 => (W.LC_Icelandic_Eth,    W.LC_Icelandic_Eth));
 123 
 124    Basic_Set                : constant Wide_Character_Set :=
 125      (AF.Controlled with
 126       Basic_Ranges'Unrestricted_Access);
 127 
 128    Decimal_Digit_Ranges     : aliased constant Wide_Character_Ranges :=
 129      (1 => ('0', '9'));
 130 
 131    Decimal_Digit_Set        : constant Wide_Character_Set :=
 132      (AF.Controlled with
 133       Decimal_Digit_Ranges'Unrestricted_Access);
 134 
 135    Hexadecimal_Digit_Ranges : aliased constant Wide_Character_Ranges :=
 136      (1 => ('0', '9'),
 137       2 => ('A', 'F'),
 138       3 => (W.LC_A, W.LC_F));
 139 
 140    Hexadecimal_Digit_Set    : constant Wide_Character_Set :=
 141      (AF.Controlled with
 142       Hexadecimal_Digit_Ranges'Unrestricted_Access);
 143 
 144    Alphanumeric_Ranges      : aliased constant Wide_Character_Ranges :=
 145      (1 => ('0',                   '9'),
 146       2 => ('A',                   'Z'),
 147       3 => (W.LC_A,                W.LC_Z),
 148       4 => (W.UC_A_Grave,          W.UC_O_Diaeresis),
 149       5 => (W.UC_O_Oblique_Stroke, W.LC_O_Diaeresis),
 150       6 => (W.LC_O_Oblique_Stroke, W.LC_Y_Diaeresis));
 151 
 152    Alphanumeric_Set         : constant Wide_Character_Set :=
 153      (AF.Controlled with
 154       Alphanumeric_Ranges'Unrestricted_Access);
 155 
 156    Special_Graphic_Ranges   : aliased constant Wide_Character_Ranges :=
 157      (1 => (Wide_Space,            W.Solidus),
 158       2 => (W.Colon,               W.Commercial_At),
 159       3 => (W.Left_Square_Bracket, W.Grave),
 160       4 => (W.Left_Curly_Bracket,  W.Tilde),
 161       5 => (W.No_Break_Space,      W.Inverted_Question),
 162       6 => (W.Multiplication_Sign, W.Multiplication_Sign),
 163       7 => (W.Division_Sign,       W.Division_Sign));
 164 
 165    Special_Graphic_Set      : constant Wide_Character_Set :=
 166      (AF.Controlled with
 167       Special_Graphic_Ranges'Unrestricted_Access);
 168 
 169    ISO_646_Ranges           : aliased constant Wide_Character_Ranges :=
 170      (1 => (W.NUL, W.DEL));
 171 
 172    ISO_646_Set              : constant Wide_Character_Set :=
 173      (AF.Controlled with
 174       ISO_646_Ranges'Unrestricted_Access);
 175 
 176    Character_Ranges         : aliased constant Wide_Character_Ranges :=
 177      (1 => (W.NUL, WC'Val (255)));
 178 
 179    Character_Set            : constant Wide_Character_Set :=
 180      (AF.Controlled with
 181       Character_Ranges'Unrestricted_Access);
 182 
 183    Lower_Case_Mapping : aliased constant Wide_Character_Mapping_Values :=
 184      (Length => 56,
 185 
 186       Domain =>
 187         "ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
 188          W.UC_A_Grave                &
 189          W.UC_A_Acute                &
 190          W.UC_A_Circumflex           &
 191          W.UC_A_Tilde                &
 192          W.UC_A_Diaeresis            &
 193          W.UC_A_Ring                 &
 194          W.UC_AE_Diphthong           &
 195          W.UC_C_Cedilla              &
 196          W.UC_E_Grave                &
 197          W.UC_E_Acute                &
 198          W.UC_E_Circumflex           &
 199          W.UC_E_Diaeresis            &
 200          W.UC_I_Grave                &
 201          W.UC_I_Acute                &
 202          W.UC_I_Circumflex           &
 203          W.UC_I_Diaeresis            &
 204          W.UC_Icelandic_Eth          &
 205          W.UC_N_Tilde                &
 206          W.UC_O_Grave                &
 207          W.UC_O_Acute                &
 208          W.UC_O_Circumflex           &
 209          W.UC_O_Tilde                &
 210          W.UC_O_Diaeresis            &
 211          W.UC_O_Oblique_Stroke       &
 212          W.UC_U_Grave                &
 213          W.UC_U_Acute                &
 214          W.UC_U_Circumflex           &
 215          W.UC_U_Diaeresis            &
 216          W.UC_Y_Acute                &
 217          W.UC_Icelandic_Thorn,
 218 
 219       Rangev =>
 220         "abcdefghijklmnopqrstuvwxyz" &
 221          W.LC_A_Grave                &
 222          W.LC_A_Acute                &
 223          W.LC_A_Circumflex           &
 224          W.LC_A_Tilde                &
 225          W.LC_A_Diaeresis            &
 226          W.LC_A_Ring                 &
 227          W.LC_AE_Diphthong           &
 228          W.LC_C_Cedilla              &
 229          W.LC_E_Grave                &
 230          W.LC_E_Acute                &
 231          W.LC_E_Circumflex           &
 232          W.LC_E_Diaeresis            &
 233          W.LC_I_Grave                &
 234          W.LC_I_Acute                &
 235          W.LC_I_Circumflex           &
 236          W.LC_I_Diaeresis            &
 237          W.LC_Icelandic_Eth          &
 238          W.LC_N_Tilde                &
 239          W.LC_O_Grave                &
 240          W.LC_O_Acute                &
 241          W.LC_O_Circumflex           &
 242          W.LC_O_Tilde                &
 243          W.LC_O_Diaeresis            &
 244          W.LC_O_Oblique_Stroke       &
 245          W.LC_U_Grave                &
 246          W.LC_U_Acute                &
 247          W.LC_U_Circumflex           &
 248          W.LC_U_Diaeresis            &
 249          W.LC_Y_Acute                &
 250          W.LC_Icelandic_Thorn);
 251 
 252    Lower_Case_Map : constant Wide_Character_Mapping :=
 253      (AF.Controlled with
 254       Map => Lower_Case_Mapping'Unrestricted_Access);
 255 
 256    Upper_Case_Mapping : aliased constant Wide_Character_Mapping_Values :=
 257      (Length => 56,
 258 
 259       Domain =>
 260         "abcdefghijklmnopqrstuvwxyz" &
 261          W.LC_A_Grave                &
 262          W.LC_A_Acute                &
 263          W.LC_A_Circumflex           &
 264          W.LC_A_Tilde                &
 265          W.LC_A_Diaeresis            &
 266          W.LC_A_Ring                 &
 267          W.LC_AE_Diphthong           &
 268          W.LC_C_Cedilla              &
 269          W.LC_E_Grave                &
 270          W.LC_E_Acute                &
 271          W.LC_E_Circumflex           &
 272          W.LC_E_Diaeresis            &
 273          W.LC_I_Grave                &
 274          W.LC_I_Acute                &
 275          W.LC_I_Circumflex           &
 276          W.LC_I_Diaeresis            &
 277          W.LC_Icelandic_Eth          &
 278          W.LC_N_Tilde                &
 279          W.LC_O_Grave                &
 280          W.LC_O_Acute                &
 281          W.LC_O_Circumflex           &
 282          W.LC_O_Tilde                &
 283          W.LC_O_Diaeresis            &
 284          W.LC_O_Oblique_Stroke       &
 285          W.LC_U_Grave                &
 286          W.LC_U_Acute                &
 287          W.LC_U_Circumflex           &
 288          W.LC_U_Diaeresis            &
 289          W.LC_Y_Acute                &
 290          W.LC_Icelandic_Thorn,
 291 
 292       Rangev =>
 293         "ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
 294          W.UC_A_Grave                &
 295          W.UC_A_Acute                &
 296          W.UC_A_Circumflex           &
 297          W.UC_A_Tilde                &
 298          W.UC_A_Diaeresis            &
 299          W.UC_A_Ring                 &
 300          W.UC_AE_Diphthong           &
 301          W.UC_C_Cedilla              &
 302          W.UC_E_Grave                &
 303          W.UC_E_Acute                &
 304          W.UC_E_Circumflex           &
 305          W.UC_E_Diaeresis            &
 306          W.UC_I_Grave                &
 307          W.UC_I_Acute                &
 308          W.UC_I_Circumflex           &
 309          W.UC_I_Diaeresis            &
 310          W.UC_Icelandic_Eth          &
 311          W.UC_N_Tilde                &
 312          W.UC_O_Grave                &
 313          W.UC_O_Acute                &
 314          W.UC_O_Circumflex           &
 315          W.UC_O_Tilde                &
 316          W.UC_O_Diaeresis            &
 317          W.UC_O_Oblique_Stroke       &
 318          W.UC_U_Grave                &
 319          W.UC_U_Acute                &
 320          W.UC_U_Circumflex           &
 321          W.UC_U_Diaeresis            &
 322          W.UC_Y_Acute                &
 323          W.UC_Icelandic_Thorn);
 324 
 325    Upper_Case_Map : constant Wide_Character_Mapping :=
 326      (AF.Controlled with
 327       Upper_Case_Mapping'Unrestricted_Access);
 328 
 329    Basic_Mapping : aliased constant Wide_Character_Mapping_Values :=
 330      (Length => 55,
 331 
 332       Domain =>
 333         W.UC_A_Grave          &
 334         W.UC_A_Acute          &
 335         W.UC_A_Circumflex     &
 336         W.UC_A_Tilde          &
 337         W.UC_A_Diaeresis      &
 338         W.UC_A_Ring           &
 339         W.UC_C_Cedilla        &
 340         W.UC_E_Grave          &
 341         W.UC_E_Acute          &
 342         W.UC_E_Circumflex     &
 343         W.UC_E_Diaeresis      &
 344         W.UC_I_Grave          &
 345         W.UC_I_Acute          &
 346         W.UC_I_Circumflex     &
 347         W.UC_I_Diaeresis      &
 348         W.UC_N_Tilde          &
 349         W.UC_O_Grave          &
 350         W.UC_O_Acute          &
 351         W.UC_O_Circumflex     &
 352         W.UC_O_Tilde          &
 353         W.UC_O_Diaeresis      &
 354         W.UC_O_Oblique_Stroke &
 355         W.UC_U_Grave          &
 356         W.UC_U_Acute          &
 357         W.UC_U_Circumflex     &
 358         W.UC_U_Diaeresis      &
 359         W.UC_Y_Acute          &
 360         W.LC_A_Grave          &
 361         W.LC_A_Acute          &
 362         W.LC_A_Circumflex     &
 363         W.LC_A_Tilde          &
 364         W.LC_A_Diaeresis      &
 365         W.LC_A_Ring           &
 366         W.LC_C_Cedilla        &
 367         W.LC_E_Grave          &
 368         W.LC_E_Acute          &
 369         W.LC_E_Circumflex     &
 370         W.LC_E_Diaeresis      &
 371         W.LC_I_Grave          &
 372         W.LC_I_Acute          &
 373         W.LC_I_Circumflex     &
 374         W.LC_I_Diaeresis      &
 375         W.LC_N_Tilde          &
 376         W.LC_O_Grave          &
 377         W.LC_O_Acute          &
 378         W.LC_O_Circumflex     &
 379         W.LC_O_Tilde          &
 380         W.LC_O_Diaeresis      &
 381         W.LC_O_Oblique_Stroke &
 382         W.LC_U_Grave          &
 383         W.LC_U_Acute          &
 384         W.LC_U_Circumflex     &
 385         W.LC_U_Diaeresis      &
 386         W.LC_Y_Acute          &
 387         W.LC_Y_Diaeresis,
 388 
 389       Rangev =>
 390         'A'        &  -- UC_A_Grave
 391         'A'        &  -- UC_A_Acute
 392         'A'        &  -- UC_A_Circumflex
 393         'A'        &  -- UC_A_Tilde
 394         'A'        &  -- UC_A_Diaeresis
 395         'A'        &  -- UC_A_Ring
 396         'C'        &  -- UC_C_Cedilla
 397         'E'        &  -- UC_E_Grave
 398         'E'        &  -- UC_E_Acute
 399         'E'        &  -- UC_E_Circumflex
 400         'E'        &  -- UC_E_Diaeresis
 401         'I'        &  -- UC_I_Grave
 402         'I'        &  -- UC_I_Acute
 403         'I'        &  -- UC_I_Circumflex
 404         'I'        &  -- UC_I_Diaeresis
 405         'N'        &  -- UC_N_Tilde
 406         'O'        &  -- UC_O_Grave
 407         'O'        &  -- UC_O_Acute
 408         'O'        &  -- UC_O_Circumflex
 409         'O'        &  -- UC_O_Tilde
 410         'O'        &  -- UC_O_Diaeresis
 411         'O'        &  -- UC_O_Oblique_Stroke
 412         'U'        &  -- UC_U_Grave
 413         'U'        &  -- UC_U_Acute
 414         'U'        &  -- UC_U_Circumflex
 415         'U'        &  -- UC_U_Diaeresis
 416         'Y'        &  -- UC_Y_Acute
 417         'a'        &  -- LC_A_Grave
 418         'a'        &  -- LC_A_Acute
 419         'a'        &  -- LC_A_Circumflex
 420         'a'        &  -- LC_A_Tilde
 421         'a'        &  -- LC_A_Diaeresis
 422         'a'        &  -- LC_A_Ring
 423         'c'        &  -- LC_C_Cedilla
 424         'e'        &  -- LC_E_Grave
 425         'e'        &  -- LC_E_Acute
 426         'e'        &  -- LC_E_Circumflex
 427         'e'        &  -- LC_E_Diaeresis
 428         'i'        &  -- LC_I_Grave
 429         'i'        &  -- LC_I_Acute
 430         'i'        &  -- LC_I_Circumflex
 431         'i'        &  -- LC_I_Diaeresis
 432         'n'        &  -- LC_N_Tilde
 433         'o'        &  -- LC_O_Grave
 434         'o'        &  -- LC_O_Acute
 435         'o'        &  -- LC_O_Circumflex
 436         'o'        &  -- LC_O_Tilde
 437         'o'        &  -- LC_O_Diaeresis
 438         'o'        &  -- LC_O_Oblique_Stroke
 439         'u'        &  -- LC_U_Grave
 440         'u'        &  -- LC_U_Acute
 441         'u'        &  -- LC_U_Circumflex
 442         'u'        &  -- LC_U_Diaeresis
 443         'y'        &  -- LC_Y_Acute
 444         'y');         -- LC_Y_Diaeresis
 445 
 446    Basic_Map : constant Wide_Character_Mapping :=
 447      (AF.Controlled with
 448       Basic_Mapping'Unrestricted_Access);
 449 
 450 end Ada.Strings.Wide_Maps.Wide_Constants;