1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>AARM95 - Wide_String Handling</TITLE>
<META NAME="Author" CONTENT="JTC1/SC22/WG9/ARG, by Randall Brukardt, ARG Editor">
<META NAME="GENERATOR" CONTENT="Arm_Form.Exe, Ada Reference Manual generator">
<STYLE type="text/css">
DIV.paranum {position: absolute; font-family: Arial, Helvetica, sans-serif; left: 0.5 em; top: auto}
TT {font-family: "Courier New", monospace}
DT {display: compact}
DIV.Normal {font-family: "Times New Roman", Times, serif; margin-bottom: 0.6em}
DIV.Wide {font-family: "Times New Roman", Times, serif; margin-top: 0.6em; margin-bottom: 0.6em}
DIV.Annotations {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-bottom: 0.6em}
DIV.WideAnnotations {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-top: 0.6em; margin-bottom: 0.6em}
DIV.Index {font-family: "Times New Roman", Times, serif}
DIV.SyntaxSummary {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-bottom: 0.4em}
DIV.Notes {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-bottom: 0.6em}
DIV.NotesHeader {font-family: "Times New Roman", Times, serif; margin-left: 2.0em}
DIV.SyntaxIndented {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-bottom: 0.4em}
DIV.Indented {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-bottom: 0.6em}
DIV.CodeIndented {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-bottom: 0.6em}
DIV.SmallIndented {font-family: "Times New Roman", Times, serif; margin-left: 10.0em; margin-bottom: 0.6em}
DIV.SmallCodeIndented {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-bottom: 0.6em}
DIV.Examples {font-family: "Courier New", monospace; margin-left: 2.0em; margin-bottom: 0.6em}
DIV.SmallExamples {font-family: "Courier New", monospace; font-size: 80%; margin-left: 7.5em; margin-bottom: 0.6em}
DIV.IndentedExamples {font-family: "Courier New", monospace; margin-left: 8.0em; margin-bottom: 0.6em}
DIV.SmallIndentedExamples {font-family: "Courier New", monospace; font-size: 80%; margin-left: 15.0em; margin-bottom: 0.6em}
UL.Bulleted {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-right: 2.0em; margin-top: 0em; margin-bottom: 0.5em}
UL.SmallBulleted {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
UL.NestedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; margin-top: 0em; margin-bottom: 0.5em}
UL.SmallNestedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-right: 8.0em; margin-top: 0em; margin-bottom: 0.5em}
UL.IndentedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-right: 8.0em; margin-top: 0em; margin-bottom: 0.5em}
UL.CodeIndentedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
UL.CodeIndentedNestedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-right: 8.0em; margin-top: 0em; margin-bottom: 0.5em}
UL.SyntaxIndentedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; margin-top: 0em; margin-bottom: 0.5em}
UL.NotesBulleted {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; margin-top: 0em; margin-bottom: 0.5em}
UL.NotesNestedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
DL.Hanging {font-family: "Times New Roman", Times, serif; margin-top: 0em; margin-bottom: 0.6em}
DD.Hanging {margin-left: 6.0em}
DL.IndentedHanging {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-top: 0em; margin-bottom: 0.6em}
DD.IndentedHanging {margin-left: 2.0em}
DL.HangingInBulleted {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-right: 2.0em; margin-top: 0em; margin-bottom: 0.5em}
DD.HangingInBulleted {margin-left: 4.0em}
DL.SmallHanging {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-top: 0em; margin-bottom: 0.6em}
DD.SmallHanging {margin-left: 7.5em}
DL.SmallIndentedHanging {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-top: 0em; margin-bottom: 0.6em}
DD.SmallIndentedHanging {margin-left: 2.0em}
DL.SmallHangingInBulleted {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
DD.SmallHangingInBulleted {margin-left: 5.0em}
DL.Enumerated {font-family: "Times New Roman", Times, serif; margin-right: 0.0em; margin-top: 0em; margin-bottom: 0.5em}
DD.Enumerated {margin-left: 2.0em}
DL.SmallEnumerated {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; margin-top: 0em; margin-bottom: 0.5em}
DD.SmallEnumerated {margin-left: 2.5em}
DL.NestedEnumerated {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-right: 2.0em; margin-top: 0em; margin-bottom: 0.5em}
DL.SmallNestedEnumerated {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
</STYLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFF0" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<P><A HREF="AA-TOC.html">Contents</A> <A HREF="AA-0-29.html">Index</A> <A HREF="AA-A-4-6.html">Previous</A> <A HREF="AA-A-5.html">Next</A></P>
<HR>
<H1> A.4.7 Wide_String Handling</H1>
<DIV Class="Paranum"><FONT SIZE=-2>1</FONT></DIV>
<DIV Class="Normal"> Facilities for handling strings of Wide_Character
elements are found in the packages Strings.Wide_Maps, Strings.Wide_Fixed,
Strings.Wide_Bounded, Strings.Wide_Unbounded, and Strings.Wide_Maps.Wide_Constants.
They provide the same string-handling operations as the corresponding
packages for strings of Character elements. <A NAME="I5446"></A><A NAME="I5447"></A><A NAME="I5448"></A><A NAME="I5449"></A><A NAME="I5450"></A><A NAME="I5451"></A><A NAME="I5452"></A><A NAME="I5453"></A><A NAME="I5454"></A></DIV>
<H4 ALIGN=CENTER>Static Semantics</H4>
<DIV Class="Paranum"><FONT SIZE=-2>2</FONT></DIV>
<DIV Class="Normal"> The package Strings.Wide_Maps has the following
declaration. </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>3</FONT></DIV>
<DIV Class="Examples"><TT><A NAME="I5455"></A><A NAME="I5456"></A><A NAME="I5457"></A><B>package</B> Ada.Strings.Wide_Maps <B>is</B><BR>
<B>pragma</B> Preelaborate(Wide_Maps);</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>4</FONT></DIV>
<DIV Class="Examples"><TT> --<I> Representation for a set of Wide_Character values:</I><BR>
<B>type</B> <A NAME="I5458"></A><A NAME="I5459"></A>Wide_Character_Set <B>is</B> <B>private</B>;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>5</FONT></DIV>
<DIV Class="Examples"><TT> <A NAME="I5460"></A>Null_Set : <B>constant</B> Wide_Character_Set;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>6</FONT></DIV>
<DIV Class="Examples"><TT> <B>type</B> <A NAME="I5461"></A><A NAME="I5462"></A>Wide_Character_Range <B>is</B><BR>
<B>record</B><BR>
Low : Wide_Character;<BR>
High : Wide_Character;<BR>
<B>end</B> <B>record</B>;<BR>
-- <I>Represents Wide_Character range Low..High</I></TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>7</FONT></DIV>
<DIV Class="Examples"><TT> <B>type</B> <A NAME="I5463"></A><A NAME="I5464"></A>Wide_Character_Ranges <B>is</B> <B>array</B> (Positive <B>range</B> <>)<BR>
<B>of</B> Wide_Character_Range;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>8</FONT></DIV>
<DIV Class="Examples"><TT> <B>function</B> <A NAME="I5465"></A><A NAME="I5466"></A>To_Set (Ranges : <B>in</B> Wide_Character_Ranges)<BR>
<B>return</B> Wide_Character_Set;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>9</FONT></DIV>
<DIV Class="Examples"><TT> <B>function</B> <A NAME="I5467"></A><A NAME="I5468"></A>To_Set (Span : <B>in</B> Wide_Character_Range)<BR>
<B>return</B> Wide_Character_Set;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>10</FONT></DIV>
<DIV Class="Examples"><TT> <B>function</B> <A NAME="I5469"></A><A NAME="I5470"></A>To_Ranges (Set : <B>in</B> Wide_Character_Set)<BR>
<B>return</B> Wide_Character_Ranges;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>11</FONT></DIV>
<DIV Class="Examples"><TT> <B>function</B> "=" (Left, Right : <B>in</B> Wide_Character_Set) <B>return</B> Boolean;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>12</FONT></DIV>
<DIV Class="Examples"><TT> <B>function</B> "<B>not</B>" (Right : <B>in</B> Wide_Character_Set)<BR>
<B>return</B> Wide_Character_Set;<BR>
<B>function</B> "<B>and</B>" (Left, Right : <B>in</B> Wide_Character_Set)<BR>
<B>return</B> Wide_Character_Set;<BR>
<B>function</B> "<B>or</B>" (Left, Right : <B>in</B> Wide_Character_Set)<BR>
<B>return</B> Wide_Character_Set;<BR>
<B>function</B> "<B>xor</B>" (Left, Right : <B>in</B> Wide_Character_Set)<BR>
<B>return</B> Wide_Character_Set;<BR>
<B>function</B> "<B>-</B>" (Left, Right : <B>in</B> Wide_Character_Set)<BR>
<B>return</B> Wide_Character_Set;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>13</FONT></DIV>
<DIV Class="Examples"><TT> <B>function</B> <A NAME="I5471"></A><A NAME="I5472"></A>Is_In (Element : <B>in</B> Wide_Character;<BR>
Set : <B>in</B> Wide_Character_Set)<BR>
<B>return</B> Boolean;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>14</FONT></DIV>
<DIV Class="Examples"><TT> <B>function</B> <A NAME="I5473"></A><A NAME="I5474"></A>Is_Subset (Elements : <B>in</B> Wide_Character_Set;<BR>
Set : <B>in</B> Wide_Character_Set)<BR>
<B>return</B> Boolean;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>15</FONT></DIV>
<DIV Class="Examples"><TT> <B>function</B> "<=" (Left : <B>in</B> Wide_Character_Set;<BR>
Right : <B>in</B> Wide_Character_Set)<BR>
<B>return</B> Boolean <B>renames</B> Is_Subset;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16</FONT></DIV>
<DIV Class="Examples"><TT> --<I> Alternative representation for a set of Wide_Character values:</I><BR>
<B>subtype</B> <A NAME="I5475"></A>Wide_Character_Sequence <B>is</B> Wide_String;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>17</FONT></DIV>
<DIV Class="Examples"><TT> <B>function</B> <A NAME="I5476"></A><A NAME="I5477"></A>To_Set (Sequence : <B>in</B> Wide_Character_Sequence)<BR>
<B>return</B> Wide_Character_Set;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>18</FONT></DIV>
<DIV Class="Examples"><TT> <B>function</B> <A NAME="I5478"></A><A NAME="I5479"></A>To_Set (Singleton : <B>in</B> Wide_Character)<BR>
<B>return</B> Wide_Character_Set;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>19</FONT></DIV>
<DIV Class="Examples"><TT> <B>function</B> <A NAME="I5480"></A><A NAME="I5481"></A>To_Sequence (Set : <B>in</B> Wide_Character_Set)<BR>
<B>return</B> Wide_Character_Sequence;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>20</FONT></DIV>
<DIV Class="Examples"><TT> --<I> Representation for a Wide_Character to Wide_Character mapping:</I><BR>
<B>type</B> <A NAME="I5482"></A><A NAME="I5483"></A>Wide_Character_Mapping <B>is</B> <B>private</B>;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>21</FONT></DIV>
<DIV Class="Examples"><TT> <B>function</B> <A NAME="I5484"></A><A NAME="I5485"></A>Value (Map : <B>in</B> Wide_Character_Mapping;<BR>
Element : <B>in</B> Wide_Character)<BR>
<B>return</B> Wide_Character;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>22</FONT></DIV>
<DIV Class="Examples"><TT> <A NAME="I5486"></A>Identity : <B>constant</B> Wide_Character_Mapping;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>23</FONT></DIV>
<DIV Class="Examples"><TT> <B>function</B> <A NAME="I5487"></A><A NAME="I5488"></A>To_Mapping (From, To : <B>in</B> Wide_Character_Sequence)<BR>
<B>return</B> Wide_Character_Mapping;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>24</FONT></DIV>
<DIV Class="Examples"><TT> <B>function</B> <A NAME="I5489"></A><A NAME="I5490"></A>To_Domain (Map : <B>in</B> Wide_Character_Mapping)<BR>
<B>return</B> Wide_Character_Sequence;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>25</FONT></DIV>
<DIV Class="Examples"><TT> <B>function</B> <A NAME="I5491"></A><A NAME="I5492"></A>To_Range (Map : <B>in</B> Wide_Character_Mapping)<BR>
<B>return</B> Wide_Character_Sequence;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>26</FONT></DIV>
<DIV Class="Examples"><TT> <B>type</B> <A NAME="I5493"></A><A NAME="I5494"></A>Wide_Character_Mapping_Function <B>is</B><BR>
<B>access</B> <B>function</B> (From : <B>in</B> Wide_Character) <B>return</B> Wide_Character;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>27</FONT></DIV>
<DIV Class="Examples"><TT><B>private</B><BR>
... -- <I>not specified by the language</I><BR>
<B>end</B> Ada.Strings.Wide_Maps;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>28</FONT></DIV>
<DIV Class="Normal"> <A NAME="I5495"></A><A NAME="I5496"></A><A NAME="I5497"></A>The
context clause for each of the packages Strings.Wide_Fixed, Strings.Wide_Bounded,
and Strings.Wide_Unbounded identifies Strings.Wide_Maps instead of Strings.Maps.</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>29</FONT></DIV>
<DIV Class="Normal" Style="margin-bottom: 0.4em"> For each of the
packages Strings.Fixed, Strings.Bounded, Strings.Unbounded, and Strings.Maps.Constants
the corresponding wide string package has the same contents except that
</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>30</FONT></DIV>
<UL Class="Bulleted"><LI TYPE=DISC>Wide_Space replaces Space</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>31</FONT></DIV>
<UL Class="Bulleted"><LI TYPE=DISC>Wide_Character replaces Character</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>32</FONT></DIV>
<UL Class="Bulleted"><LI TYPE=DISC>Wide_String replaces String</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>33</FONT></DIV>
<UL Class="Bulleted"><LI TYPE=DISC>Wide_Character_Set replaces Character_Set</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>34</FONT></DIV>
<UL Class="Bulleted"><LI TYPE=DISC>Wide_Character_Mapping replaces Character_Mapping</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>35</FONT></DIV>
<UL Class="Bulleted"><LI TYPE=DISC>Wide_Character_Mapping_Function replaces Character_Mapping_Function</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>36</FONT></DIV>
<UL Class="Bulleted"><LI TYPE=DISC>Wide_Maps replaces Maps</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>37</FONT></DIV>
<UL Class="Bulleted"><LI TYPE=DISC>Bounded_Wide_String replaces Bounded_String</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>38</FONT></DIV>
<UL Class="Bulleted"><LI TYPE=DISC>Null_Bounded_Wide_String replaces Null_Bounded_String</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>39</FONT></DIV>
<UL Class="Bulleted"><LI TYPE=DISC>To_Bounded_Wide_String replaces To_Bounded_String</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>40</FONT></DIV>
<UL Class="Bulleted"><LI TYPE=DISC>To_Wide_String replaces To_String</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>41</FONT></DIV>
<UL Class="Bulleted"><LI TYPE=DISC>Unbounded_Wide_String replaces Unbounded_String</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>42</FONT></DIV>
<UL Class="Bulleted"><LI TYPE=DISC>Null_Unbounded_Wide_String replaces Null_Unbounded_String</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>43</FONT></DIV>
<UL Class="Bulleted"><LI TYPE=DISC>Wide_String_Access replaces String_Access</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>44</FONT></DIV>
<UL Class="Bulleted"><LI TYPE=DISC>To_Unbounded_Wide_String replaces To_Unbounded_String </LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>45</FONT></DIV>
<DIV Class="Normal" Style="margin-bottom: 0.4em"> The following additional
declaration is present in Strings.Wide_Maps.Wide_Constants: </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>46</FONT></DIV>
<DIV Class="Examples"><TT><A NAME="I5498"></A>Character_Set : <B>constant</B> Wide_Maps.Wide_Character_Set;<BR>
--<I>Contains each Wide_Character value WC such that Characters.Is_Character(WC) is True</I></TT></DIV>
<DIV Class="NotesHeader"><FONT SIZE=-1>NOTES</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>47</FONT></DIV>
<DIV Class="Notes"><FONT SIZE=-1>12 <A NAME="I5499"></A>If
a null Wide_Character_Mapping_Function is passed to any of the Wide_String
handling subprograms, Constraint_Error is propagated.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>48</FONT></DIV>
<DIV Class="Notes"><FONT SIZE=-1>13 Each Wide_Character_Set
constant in the package Strings.Wide_Maps.Wide_Constants contains no
values outside the Character portion of Wide_Character. Similarly, each
Wide_Character_Mapping constant in this package is the identity mapping
when applied to any element outside the Character portion of Wide_Character.
</FONT></DIV>
<HR>
<P><A HREF="AA-TOC.html">Contents</A> <A HREF="AA-0-29.html">Index</A> <A HREF="AA-A-4-6.html">Previous</A> <A HREF="AA-A-5.html">Next</A> <A HREF="AA-TTL.html">Legal</A></P>
</BODY>
</HTML>
|