A.3.3 The Package Characters.Latin_1
The package Characters.Latin_1 declares constants
for characters in ISO 8859-1.
Reason: The constants for the ISO 646
characters could have been declared as renamings of objects declared
in package ASCII, as opposed to explicit constants. The main reason for
explicit constants was for consistency of style with the upper-half constants,
and to avoid emphasizing the package ASCII.
Static Semantics
The library package
Characters.Latin_1 has the following declaration:
{
AI12-0414-1}
package Ada.Characters.Latin_1
with Pure
is
NUL :
constant Character := Character'Val(0);
SOH :
constant Character := Character'Val(1);
STX :
constant Character := Character'Val(2);
ETX :
constant Character := Character'Val(3);
EOT :
constant Character := Character'Val(4);
ENQ :
constant Character := Character'Val(5);
ACK :
constant Character := Character'Val(6);
BEL :
constant Character := Character'Val(7);
BS :
constant Character := Character'Val(8);
HT :
constant Character := Character'Val(9);
LF :
constant Character := Character'Val(10);
VT :
constant Character := Character'Val(11);
FF :
constant Character := Character'Val(12);
CR :
constant Character := Character'Val(13);
SO :
constant Character := Character'Val(14);
SI :
constant Character := Character'Val(15);
DLE :
constant Character := Character'Val(16);
DC1 :
constant Character := Character'Val(17);
DC2 :
constant Character := Character'Val(18);
DC3 :
constant Character := Character'Val(19);
DC4 :
constant Character := Character'Val(20);
NAK :
constant Character := Character'Val(21);
SYN :
constant Character := Character'Val(22);
ETB :
constant Character := Character'Val(23);
CAN :
constant Character := Character'Val(24);
EM :
constant Character := Character'Val(25);
SUB :
constant Character := Character'Val(26);
ESC :
constant Character := Character'Val(27);
FS :
constant Character := Character'Val(28);
GS :
constant Character := Character'Val(29);
RS :
constant Character := Character'Val(30);
US :
constant Character := Character'Val(31);
-- ISO 646 graphic characters:
Space :
constant Character := ' '; --
Character'Val(32)
Exclamation :
constant Character := '!'; --
Character'Val(33)
Quotation :
constant Character := '"'; --
Character'Val(34)
Number_Sign :
constant Character := '#'; --
Character'Val(35)
Dollar_Sign :
constant Character := '$'; --
Character'Val(36)
Percent_Sign :
constant Character := '%'; --
Character'Val(37)
Ampersand :
constant Character := '&'; --
Character'Val(38)
Apostrophe :
constant Character := '''; --
Character'Val(39)
Left_Parenthesis :
constant Character := '('; --
Character'Val(40)
Right_Parenthesis :
constant Character := ')'; --
Character'Val(41)
Asterisk :
constant Character := '*'; --
Character'Val(42)
Plus_Sign :
constant Character := '+'; --
Character'Val(43)
Comma :
constant Character := ','; --
Character'Val(44)
Hyphen :
constant Character := '-'; --
Character'Val(45)
Minus_Sign : Character
renames Hyphen;
Full_Stop :
constant Character := '.'; --
Character'Val(46)
Solidus :
constant Character := '/'; --
Character'Val(47)
-- Decimal digits '0' though '9' are at positions 48 through 57
Colon :
constant Character := ':'; --
Character'Val(58)
Semicolon :
constant Character := ';'; --
Character'Val(59)
Less_Than_Sign :
constant Character := '<'; --
Character'Val(60)
Equals_Sign :
constant Character := '='; --
Character'Val(61)
Greater_Than_Sign :
constant Character := '>'; --
Character'Val(62)
Question :
constant Character := '?'; --
Character'Val(63)
Commercial_At :
constant Character := '@'; --
Character'Val(64)
-- Letters 'A' through 'Z' are at positions 65 through 90
Left_Square_Bracket :
constant Character := '['; --
Character'Val(91)
Reverse_Solidus :
constant Character := '\'; --
Character'Val(92)
Right_Square_Bracket :
constant Character := ']'; --
Character'Val(93)
Circumflex :
constant Character := '^'; --
Character'Val(94)
Low_Line :
constant Character := '_'; --
Character'Val(95)
Grave :
constant Character := '`'; --
Character'Val(96)
LC_A :
constant Character := 'a'; --
Character'Val(97)
LC_B :
constant Character := 'b'; --
Character'Val(98)
LC_C :
constant Character := 'c'; --
Character'Val(99)
LC_D :
constant Character := 'd'; --
Character'Val(100)
LC_E :
constant Character := 'e'; --
Character'Val(101)
LC_F :
constant Character := 'f'; --
Character'Val(102)
LC_G :
constant Character := 'g'; --
Character'Val(103)
LC_H :
constant Character := 'h'; --
Character'Val(104)
LC_I :
constant Character := 'i'; --
Character'Val(105)
LC_J :
constant Character := 'j'; --
Character'Val(106)
LC_K :
constant Character := 'k'; --
Character'Val(107)
LC_L :
constant Character := 'l'; --
Character'Val(108)
LC_M :
constant Character := 'm'; --
Character'Val(109)
LC_N :
constant Character := 'n'; --
Character'Val(110)
LC_O :
constant Character := 'o'; --
Character'Val(111)
LC_P :
constant Character := 'p'; --
Character'Val(112)
LC_Q :
constant Character := 'q'; --
Character'Val(113)
LC_R :
constant Character := 'r'; --
Character'Val(114)
LC_S :
constant Character := 's'; --
Character'Val(115)
LC_T :
constant Character := 't'; --
Character'Val(116)
LC_U :
constant Character := 'u'; --
Character'Val(117)
LC_V :
constant Character := 'v'; --
Character'Val(118)
LC_W :
constant Character := 'w'; --
Character'Val(119)
LC_X :
constant Character := 'x'; --
Character'Val(120)
LC_Y :
constant Character := 'y'; --
Character'Val(121)
LC_Z :
constant Character := 'z'; --
Character'Val(122)
Left_Curly_Bracket :
constant Character := '{'; --
Character'Val(123)
Vertical_Line :
constant Character := '|'; --
Character'Val(124)
Right_Curly_Bracket :
constant Character := '}'; --
Character'Val(125)
Tilde :
constant Character := '~'; --
Character'Val(126)
DEL :
constant Character := Character'Val(127);
--
ISO 6429 control characters:
IS4 : Character
renames FS;
IS3 : Character
renames GS;
IS2 : Character
renames RS;
IS1 : Character
renames US;
Reserved_128 :
constant Character := Character'Val(128);
Reserved_129 :
constant Character := Character'Val(129);
BPH :
constant Character := Character'Val(130);
NBH :
constant Character := Character'Val(131);
Reserved_132 :
constant Character := Character'Val(132);
NEL :
constant Character := Character'Val(133);
SSA :
constant Character := Character'Val(134);
ESA :
constant Character := Character'Val(135);
HTS :
constant Character := Character'Val(136);
HTJ :
constant Character := Character'Val(137);
VTS :
constant Character := Character'Val(138);
PLD :
constant Character := Character'Val(139);
PLU :
constant Character := Character'Val(140);
RI :
constant Character := Character'Val(141);
SS2 :
constant Character := Character'Val(142);
SS3 :
constant Character := Character'Val(143);
DCS :
constant Character := Character'Val(144);
PU1 :
constant Character := Character'Val(145);
PU2 :
constant Character := Character'Val(146);
STS :
constant Character := Character'Val(147);
CCH :
constant Character := Character'Val(148);
MW :
constant Character := Character'Val(149);
SPA :
constant Character := Character'Val(150);
EPA :
constant Character := Character'Val(151);
SOS :
constant Character := Character'Val(152);
Reserved_153 :
constant Character := Character'Val(153);
SCI :
constant Character := Character'Val(154);
CSI :
constant Character := Character'Val(155);
ST :
constant Character := Character'Val(156);
OSC :
constant Character := Character'Val(157);
PM :
constant Character := Character'Val(158);
APC :
constant Character := Character'Val(159);
-- Other graphic characters:
{
AI05-0181-1}
--
Character positions 160 (16#A0#) .. 175 (16#AF#):
No_Break_Space :
constant Character := ' '; --
Character'Val(160)
NBSP : Character
renames No_Break_Space;
Inverted_Exclamation :
constant Character := '¡'; --
Character'Val(161)
Cent_Sign :
constant Character := '¢'; --
Character'Val(162)
Pound_Sign :
constant Character := '£'; --
Character'Val(163)
Currency_Sign :
constant Character := '¤'; --
Character'Val(164)
Yen_Sign :
constant Character := '¥'; --
Character'Val(165)
Broken_Bar :
constant Character := '¦'; --
Character'Val(166)
Section_Sign :
constant Character := '§'; --
Character'Val(167)
Diaeresis :
constant Character := '¨'; --
Character'Val(168)
Copyright_Sign :
constant Character := '©'; --
Character'Val(169)
Feminine_Ordinal_Indicator :
constant Character := 'ª'; --
Character'Val(170)
Left_Angle_Quotation :
constant Character := '«'; --
Character'Val(171)
Not_Sign :
constant Character := '¬'; --
Character'Val(172)
Soft_Hyphen :
constant Character := Character'Val(173);
Registered_Trade_Mark_Sign :
constant Character := '®'; --
Character'Val(174)
Macron :
constant Character := '¯'; --
Character'Val(175)
--
Character positions 176 (16#B0#) .. 191 (16#BF#):
Degree_Sign :
constant Character := '°'; --
Character'Val(176)
Ring_Above : Character
renames Degree_Sign;
Plus_Minus_Sign :
constant Character := '±'; --
Character'Val(177)
Superscript_Two :
constant Character := '²'; --
Character'Val(178)
Superscript_Three :
constant Character := '³'; --
Character'Val(179)
Acute :
constant Character := '´'; --
Character'Val(180)
Micro_Sign :
constant Character := 'µ'; --
Character'Val(181)
Pilcrow_Sign :
constant Character := '¶'; --
Character'Val(182)
Paragraph_Sign : Character
renames Pilcrow_Sign;
Middle_Dot :
constant Character := '·'; --
Character'Val(183)
Cedilla :
constant Character := '¸'; --
Character'Val(184)
Superscript_One :
constant Character := '¹'; --
Character'Val(185)
Masculine_Ordinal_Indicator:
constant Character := 'º'; --
Character'Val(186)
Right_Angle_Quotation :
constant Character := '»'; --
Character'Val(187)
Fraction_One_Quarter :
constant Character := '¼'; --
Character'Val(188)
Fraction_One_Half :
constant Character := '½'; --
Character'Val(189)
Fraction_Three_Quarters :
constant Character := '¾'; --
Character'Val(190)
Inverted_Question :
constant Character := '¿'; --
Character'Val(191)
--
Character positions 192 (16#C0#) .. 207 (16#CF#):
UC_A_Grave :
constant Character := 'À'; --
Character'Val(192)
UC_A_Acute :
constant Character := 'Á'; --
Character'Val(193)
UC_A_Circumflex :
constant Character := 'Â'; --
Character'Val(194)
UC_A_Tilde :
constant Character := 'Ã'; --
Character'Val(195)
UC_A_Diaeresis :
constant Character := 'Ä'; --
Character'Val(196)
UC_A_Ring :
constant Character := 'Å'; --
Character'Val(197)
UC_AE_Diphthong :
constant Character := 'Æ'; --
Character'Val(198)
UC_C_Cedilla :
constant Character := 'Ç'; --
Character'Val(199)
UC_E_Grave :
constant Character := 'È'; --
Character'Val(200)
UC_E_Acute :
constant Character := 'É'; --
Character'Val(201)
UC_E_Circumflex :
constant Character := 'Ê'; --
Character'Val(202)
UC_E_Diaeresis :
constant Character := 'Ë'; --
Character'Val(203)
UC_I_Grave :
constant Character := 'Ì'; --
Character'Val(204)
UC_I_Acute :
constant Character := 'Í'; --
Character'Val(205)
UC_I_Circumflex :
constant Character := 'Î'; --
Character'Val(206)
UC_I_Diaeresis :
constant Character := 'Ï'; --
Character'Val(207)
--
Character positions 208 (16#D0#) .. 223 (16#DF#):
UC_Icelandic_Eth :
constant Character := 'Ð'; --
Character'Val(208)
UC_N_Tilde :
constant Character := 'Ñ'; --
Character'Val(209)
UC_O_Grave :
constant Character := 'Ò'; --
Character'Val(210)
UC_O_Acute :
constant Character := 'Ó'; --
Character'Val(211)
UC_O_Circumflex :
constant Character := 'Ô'; --
Character'Val(212)
UC_O_Tilde :
constant Character := 'Õ'; --
Character'Val(213)
UC_O_Diaeresis :
constant Character := 'Ö'; --
Character'Val(214)
Multiplication_Sign :
constant Character := '×'; --
Character'Val(215)
UC_O_Oblique_Stroke :
constant Character := 'Ø'; --
Character'Val(216)
UC_U_Grave :
constant Character := 'Ù'; --
Character'Val(217)
UC_U_Acute :
constant Character := 'Ú'; --
Character'Val(218)
UC_U_Circumflex :
constant Character := 'Û'; --
Character'Val(219)
UC_U_Diaeresis :
constant Character := 'Ü'; --
Character'Val(220)
UC_Y_Acute :
constant Character := 'Ý'; --
Character'Val(221)
UC_Icelandic_Thorn :
constant Character := 'Þ'; --
Character'Val(222)
LC_German_Sharp_S :
constant Character := 'ß'; --
Character'Val(223)
--
Character positions 224 (16#E0#) .. 239 (16#EF#):
LC_A_Grave :
constant Character := 'à'; --
Character'Val(224)
LC_A_Acute :
constant Character := 'á'; --
Character'Val(225)
LC_A_Circumflex :
constant Character := 'â'; --
Character'Val(226)
LC_A_Tilde :
constant Character := 'ã'; --
Character'Val(227)
LC_A_Diaeresis :
constant Character := 'ä'; --
Character'Val(228)
LC_A_Ring :
constant Character := 'å'; --
Character'Val(229)
LC_AE_Diphthong :
constant Character := 'æ'; --
Character'Val(230)
LC_C_Cedilla :
constant Character := 'ç'; --
Character'Val(231)
LC_E_Grave :
constant Character := 'è'; --
Character'Val(232)
LC_E_Acute :
constant Character := 'é'; --
Character'Val(233)
LC_E_Circumflex :
constant Character := 'ê'; --
Character'Val(234)
LC_E_Diaeresis :
constant Character := 'ë'; --
Character'Val(235)
LC_I_Grave :
constant Character := 'ì'; --
Character'Val(236)
LC_I_Acute :
constant Character := 'í'; --
Character'Val(237)
LC_I_Circumflex :
constant Character := 'î'; --
Character'Val(238)
LC_I_Diaeresis :
constant Character := 'ï'; --
Character'Val(239)
--
Character positions 240 (16#F0#) .. 255 (16#FF#):
LC_Icelandic_Eth :
constant Character := 'ð'; --
Character'Val(240)
LC_N_Tilde :
constant Character := 'ñ'; --
Character'Val(241)
LC_O_Grave :
constant Character := 'ò'; --
Character'Val(242)
LC_O_Acute :
constant Character := 'ó'; --
Character'Val(243)
LC_O_Circumflex :
constant Character := 'ô'; --
Character'Val(244)
LC_O_Tilde :
constant Character := 'õ'; --
Character'Val(245)
LC_O_Diaeresis :
constant Character := 'ö'; --
Character'Val(246)
Division_Sign :
constant Character := '÷'; --
Character'Val(247)
LC_O_Oblique_Stroke :
constant Character := 'ø'; --
Character'Val(248)
LC_U_Grave :
constant Character := 'ù'; --
Character'Val(249)
LC_U_Acute :
constant Character := 'ú'; --
Character'Val(250)
LC_U_Circumflex :
constant Character := 'û'; --
Character'Val(251)
LC_U_Diaeresis :
constant Character := 'ü'; --
Character'Val(252)
LC_Y_Acute :
constant Character := 'ý'; --
Character'Val(253)
LC_Icelandic_Thorn :
constant Character := 'þ'; --
Character'Val(254)
LC_Y_Diaeresis :
constant Character := 'ÿ'; --
Character'Val(255)
end Ada.Characters.Latin_1;
Implementation Permissions
An implementation may provide additional packages
as children of Ada.Characters, to declare names for the symbols of the
local character set or other character sets.
Wording Changes from Ada 2005
{
AI05-0181-1}
Correction: Soft_Hyphen is not a graphic character, and thus a
character literal for it is illegal. So we have to use the position value.
This makes no semantic change to users of the constant.
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe