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-- As a special exception under Section 7 of GPL version 3, you are granted -- 23-- additional permissions described in the GCC Runtime Library Exception, -- 24-- version 3.1, as published by the Free Software Foundation. -- 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 36with Ada.Characters.Wide_Latin_1; 37 38package 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 63private 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 450end Ada.Strings.Wide_Maps.Wide_Constants; 451