4b5018b57997e91d7648a5c94d950aeb88eefff2
[platform/upstream/boost.git] / libs / spirit / doc / html / spirit / qi / reference / numeric / uint.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>Unsigned Integer Parsers (uint_, etc.)</title>
5 <link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
7 <link rel="home" href="../../../../index.html" title="Spirit 2.5.2">
8 <link rel="up" href="../numeric.html" title="Numeric Parsers">
9 <link rel="prev" href="../numeric.html" title="Numeric Parsers">
10 <link rel="next" href="int.html" title="Signed Integer Parsers (int_, etc.)">
11 </head>
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table cellpadding="2" width="100%"><tr>
14 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
15 <td align="center"><a href="../../../../../../../../index.html">Home</a></td>
16 <td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
17 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19 <td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
20 </tr></table>
21 <hr>
22 <div class="spirit-nav">
23 <a accesskey="p" href="../numeric.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="int.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
24 </div>
25 <div class="section">
26 <div class="titlepage"><div><div><h5 class="title">
27 <a name="spirit.qi.reference.numeric.uint"></a><a class="link" href="uint.html" title="Unsigned Integer Parsers (uint_, etc.)">Unsigned Integer
28           Parsers (<code class="computeroutput"><span class="identifier">uint_</span></code>, etc.)</a>
29 </h5></div></div></div>
30 <h6>
31 <a name="spirit.qi.reference.numeric.uint.h0"></a>
32             <span><a name="spirit.qi.reference.numeric.uint.description"></a></span><a class="link" href="uint.html#spirit.qi.reference.numeric.uint.description">Description</a>
33           </h6>
34 <p>
35             The <code class="computeroutput"><span class="identifier">uint_parser</span></code> class
36             is the simplest among the members of the numerics package. The <code class="computeroutput"><span class="identifier">uint_parser</span></code> can parse unsigned integers
37             of arbitrary length and size. The <code class="computeroutput"><span class="identifier">uint_parser</span></code>
38             parser can be used to parse ordinary primitive C/C++ integers or even
39             user defined scalars such as bigints (unlimited precision integers) as
40             long as the type follows certain expression requirements (documented
41             below). The <code class="computeroutput"><span class="identifier">uint_parser</span></code>
42             is a template class. Template parameters fine tune its behavior.
43           </p>
44 <h6>
45 <a name="spirit.qi.reference.numeric.uint.h1"></a>
46             <span><a name="spirit.qi.reference.numeric.uint.header"></a></span><a class="link" href="uint.html#spirit.qi.reference.numeric.uint.header">Header</a>
47           </h6>
48 <pre class="programlisting"><span class="comment">// forwards to &lt;boost/spirit/home/qi/numeric/uint.hpp&gt;</span>
49 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_uint</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
50 </pre>
51 <p>
52             Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
53           </p>
54 <h6>
55 <a name="spirit.qi.reference.numeric.uint.h2"></a>
56             <span><a name="spirit.qi.reference.numeric.uint.namespace"></a></span><a class="link" href="uint.html#spirit.qi.reference.numeric.uint.namespace">Namespace</a>
57           </h6>
58 <div class="informaltable"><table class="table">
59 <colgroup><col></colgroup>
60 <thead><tr><th>
61                     <p>
62                       Name
63                     </p>
64                   </th></tr></thead>
65 <tbody>
66 <tr><td>
67                     <p>
68                       <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lit</span> <span class="comment">// alias:
69                       boost::spirit::qi::lit</span></code>
70                     </p>
71                   </td></tr>
72 <tr><td>
73                     <p>
74                       <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">bin</span> <span class="comment">// alias:
75                       boost::spirit::qi::bin</span></code>
76                     </p>
77                   </td></tr>
78 <tr><td>
79                     <p>
80                       <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">oct</span> <span class="comment">// alias:
81                       boost::spirit::qi::oct</span></code>
82                     </p>
83                   </td></tr>
84 <tr><td>
85                     <p>
86                       <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">hex</span> <span class="comment">// alias:
87                       boost::spirit::qi::hex</span></code>
88                     </p>
89                   </td></tr>
90 <tr><td>
91                     <p>
92                       <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ushort_</span> <span class="comment">//
93                       alias: boost::spirit::qi::ushort_</span></code>
94                     </p>
95                   </td></tr>
96 <tr><td>
97                     <p>
98                       <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ulong_</span> <span class="comment">//
99                       alias: boost::spirit::qi::ulong_</span></code>
100                     </p>
101                   </td></tr>
102 <tr><td>
103                     <p>
104                       <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">uint_</span> <span class="comment">//
105                       alias: boost::spirit::qi::uint_</span></code>
106                     </p>
107                   </td></tr>
108 <tr><td>
109                     <p>
110                       <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ulong_long</span> <span class="comment">//
111                       alias: boost::spirit::qi::ulong_long</span></code>
112                     </p>
113                   </td></tr>
114 </tbody>
115 </table></div>
116 <div class="note"><table border="0" summary="Note">
117 <tr>
118 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
119 <th align="left">Note</th>
120 </tr>
121 <tr><td align="left" valign="top"><p>
122               <code class="computeroutput"><span class="identifier">ulong_long</span></code> is only
123               available on platforms where the preprocessor constant <code class="computeroutput"><span class="identifier">BOOST_HAS_LONG_LONG</span></code> is defined (i.e.
124               on platforms having native support for <code class="computeroutput"><span class="keyword">unsigned</span>
125               <span class="keyword">long</span> <span class="keyword">long</span></code>
126               (64 bit) unsigned integer types).
127             </p></td></tr>
128 </table></div>
129 <div class="note"><table border="0" summary="Note">
130 <tr>
131 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
132 <th align="left">Note</th>
133 </tr>
134 <tr><td align="left" valign="top"><p>
135               <code class="computeroutput"><span class="identifier">lit</span></code> is reused by the
136               <a class="link" href="../char/char.html" title="Character Parser (char_, lit)">Character Parsers</a>,
137               and the Numeric Parsers. In general, a char parser is created when
138               you pass in a character, and a numeric parser is created when you use
139               a numeric literal.
140             </p></td></tr>
141 </table></div>
142 <h6>
143 <a name="spirit.qi.reference.numeric.uint.h3"></a>
144             <span><a name="spirit.qi.reference.numeric.uint.synopsis"></a></span><a class="link" href="uint.html#spirit.qi.reference.numeric.uint.synopsis">Synopsis</a>
145           </h6>
146 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span>
147     <span class="keyword">typename</span> <span class="identifier">T</span>
148   <span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">Radix</span>
149   <span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">MinDigits</span>
150   <span class="special">,</span> <span class="keyword">int</span> <span class="identifier">MaxDigits</span><span class="special">&gt;</span>
151 <span class="keyword">struct</span> <span class="identifier">uint_parser</span><span class="special">;</span>
152 </pre>
153 <h6>
154 <a name="spirit.qi.reference.numeric.uint.h4"></a>
155             <span><a name="spirit.qi.reference.numeric.uint.template_parameters"></a></span><a class="link" href="uint.html#spirit.qi.reference.numeric.uint.template_parameters">Template
156             parameters</a>
157           </h6>
158 <div class="informaltable"><table class="table">
159 <colgroup>
160 <col>
161 <col>
162 <col>
163 </colgroup>
164 <thead><tr>
165 <th>
166                     <p>
167                       Parameter
168                     </p>
169                   </th>
170 <th>
171                     <p>
172                       Description
173                     </p>
174                   </th>
175 <th>
176                     <p>
177                       Default
178                     </p>
179                   </th>
180 </tr></thead>
181 <tbody>
182 <tr>
183 <td>
184                     <p>
185                       <code class="computeroutput"><span class="identifier">T</span></code>
186                     </p>
187                   </td>
188 <td>
189                     <p>
190                       The numeric base type of the numeric parser.
191                     </p>
192                   </td>
193 <td>
194                     <p>
195                       none
196                     </p>
197                   </td>
198 </tr>
199 <tr>
200 <td>
201                     <p>
202                       <code class="computeroutput"><span class="identifier">Radix</span></code>
203                     </p>
204                   </td>
205 <td>
206                     <p>
207                       The radix base. This can be any base from 2..10 and 16
208                     </p>
209                   </td>
210 <td>
211                     <p>
212                       10
213                     </p>
214                   </td>
215 </tr>
216 <tr>
217 <td>
218                     <p>
219                       <code class="computeroutput"><span class="identifier">MinDigits</span></code>
220                     </p>
221                   </td>
222 <td>
223                     <p>
224                       The minimum number of digits allowable.
225                     </p>
226                   </td>
227 <td>
228                     <p>
229                       1
230                     </p>
231                   </td>
232 </tr>
233 <tr>
234 <td>
235                     <p>
236                       <code class="computeroutput"><span class="identifier">MaxDigits</span></code>
237                     </p>
238                   </td>
239 <td>
240                     <p>
241                       The maximum number of digits allowable. If this is -1, then
242                       the maximum limit becomes unbounded.
243                     </p>
244                   </td>
245 <td>
246                     <p>
247                       -1
248                     </p>
249                   </td>
250 </tr>
251 </tbody>
252 </table></div>
253 <h6>
254 <a name="spirit.qi.reference.numeric.uint.h5"></a>
255             <span><a name="spirit.qi.reference.numeric.uint.model_of"></a></span><a class="link" href="uint.html#spirit.qi.reference.numeric.uint.model_of">Model
256             of</a>
257           </h6>
258 <div class="blockquote"><blockquote class="blockquote"><p>
259               <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>
260             </p></blockquote></div>
261 <div class="variablelist">
262 <p class="title"><b>Notation</b></p>
263 <dl>
264 <dt><span class="term"><code class="computeroutput"><span class="identifier">n</span></code></span></dt>
265 <dd><p>
266                   An object of <code class="computeroutput"><span class="identifier">T</span></code>,
267                   the numeric base type.
268                 </p></dd>
269 <dt><span class="term"><code class="computeroutput"><span class="identifier">num</span></code></span></dt>
270 <dd><p>
271                   Numeric literal, any unsigned integer value, or a <a class="link" href="../basics.html#spirit.qi.reference.basics.lazy_argument">Lazy
272                   Argument</a> that evaluates to a unsigned integer value.
273                 </p></dd>
274 </dl>
275 </div>
276 <h6>
277 <a name="spirit.qi.reference.numeric.uint.h6"></a>
278             <span><a name="spirit.qi.reference.numeric.uint.expression_semantics"></a></span><a class="link" href="uint.html#spirit.qi.reference.numeric.uint.expression_semantics">Expression
279             Semantics</a>
280           </h6>
281 <p>
282             Semantics of an expression is defined only where it differs from, or
283             is not defined in <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>.
284           </p>
285 <div class="informaltable"><table class="table">
286 <colgroup>
287 <col>
288 <col>
289 </colgroup>
290 <thead><tr>
291 <th>
292                     <p>
293                       Expression
294                     </p>
295                   </th>
296 <th>
297                     <p>
298                       Semantics
299                     </p>
300                   </th>
301 </tr></thead>
302 <tbody>
303 <tr>
304 <td>
305                     <p>
306 </p>
307 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">ushort_</span>
308 <span class="identifier">uint_</span>
309 <span class="identifier">ulong_</span>
310 <span class="identifier">ulong_long</span>
311 </pre>
312 <p>
313                     </p>
314                   </td>
315 <td>
316                     <p>
317                       Parse an unsigned integer using the default radix (10).
318                     </p>
319                   </td>
320 </tr>
321 <tr>
322 <td>
323                     <p>
324 </p>
325 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
326 <span class="identifier">ushort_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
327 <span class="identifier">uint_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
328 <span class="identifier">ulong_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
329 <span class="identifier">ulong_long</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
330 </pre>
331 <p>
332                     </p>
333                   </td>
334 <td>
335                     <p>
336                       Match the literal <code class="computeroutput"><span class="identifier">num</span></code>
337                       using the default radix (10). The parser will fail if the parsed
338                       value is not equal to the specified value.
339                     </p>
340                   </td>
341 </tr>
342 <tr>
343 <td>
344                     <p>
345 </p>
346 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">bin</span>
347 <span class="identifier">oct</span>
348 <span class="identifier">hex</span>
349 </pre>
350 <p>
351                     </p>
352                   </td>
353 <td>
354                     <p>
355                       Parse an unsigned integer using radix 2 for <code class="computeroutput"><span class="identifier">bin</span></code>,
356                       radix 8 for <code class="computeroutput"><span class="identifier">oct</span></code>,
357                       and radix 16 for <code class="computeroutput"><span class="identifier">hex</span></code>.
358                     </p>
359                   </td>
360 </tr>
361 <tr>
362 <td>
363                     <p>
364 </p>
365 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">bin</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
366 <span class="identifier">oct</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
367 <span class="identifier">hex</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
368 </pre>
369 <p>
370                     </p>
371                   </td>
372 <td>
373                     <p>
374                       Match the literal <code class="computeroutput"><span class="identifier">num</span></code>
375                       using radix 2 for <code class="computeroutput"><span class="identifier">bin</span></code>,
376                       radix 8 for <code class="computeroutput"><span class="identifier">oct</span></code>,
377                       and radix 16 for <code class="computeroutput"><span class="identifier">hex</span></code>.
378                       The parser will fail if the parsed value is not equal to the
379                       specified value.
380                     </p>
381                   </td>
382 </tr>
383 <tr>
384 <td>
385                     <p>
386 </p>
387 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">uint_parser</span><span class="special">&lt;</span>
388     <span class="identifier">T</span><span class="special">,</span> <span class="identifier">Radix</span><span class="special">,</span> <span class="identifier">MinDigits</span><span class="special">,</span> <span class="identifier">MaxDigits</span>
389 <span class="special">&gt;()</span>
390 </pre>
391 <p>
392                     </p>
393                   </td>
394 <td>
395                     <p>
396                       Parse an unsigned integer of type <code class="computeroutput"><span class="identifier">T</span></code>
397                       using radix <code class="computeroutput"><span class="identifier">Radix</span></code>,
398                       with a minimum of <code class="computeroutput"><span class="identifier">MinDigits</span></code>
399                       and a maximum of <code class="computeroutput"><span class="identifier">MaxDigits</span></code>.
400                     </p>
401                   </td>
402 </tr>
403 <tr>
404 <td>
405                     <p>
406 </p>
407 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">uint_parser</span><span class="special">&lt;</span>
408     <span class="identifier">T</span><span class="special">,</span> <span class="identifier">Radix</span><span class="special">,</span> <span class="identifier">MinDigits</span><span class="special">,</span> <span class="identifier">MaxDigits</span>
409 <span class="special">&gt;()(</span><span class="identifier">num</span><span class="special">)</span>
410 </pre>
411 <p>
412                     </p>
413                   </td>
414 <td>
415                     <p>
416                       Match the literal <code class="computeroutput"><span class="identifier">num</span></code>
417                       of type <code class="computeroutput"><span class="identifier">T</span></code> using
418                       radix <code class="computeroutput"><span class="identifier">Radix</span></code>,
419                       with a minimum of <code class="computeroutput"><span class="identifier">MinDigits</span></code>
420                       and a maximum of <code class="computeroutput"><span class="identifier">MaxDigits</span></code>.
421                       The parser will fail if the parsed value is not equal to the
422                       specified value.
423                     </p>
424                   </td>
425 </tr>
426 </tbody>
427 </table></div>
428 <div class="important"><table border="0" summary="Important">
429 <tr>
430 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../images/important.png"></td>
431 <th align="left">Important</th>
432 </tr>
433 <tr><td align="left" valign="top"><p>
434               All numeric parsers check for overflow conditions based on the type
435               <code class="computeroutput"><span class="identifier">T</span></code> the corresponding
436               <code class="computeroutput"><span class="identifier">uint_parser</span><span class="special">&lt;&gt;</span></code>
437               has been instantiated with. If the parsed number overflows this type
438               the parsing fails. Please be aware that the overflow check is not based
439               on the type of the supplied attribute but solely depends on the template
440               parameter <code class="computeroutput"><span class="identifier">T</span></code>.
441             </p></td></tr>
442 </table></div>
443 <h6>
444 <a name="spirit.qi.reference.numeric.uint.h7"></a>
445             <span><a name="spirit.qi.reference.numeric.uint.attributes"></a></span><a class="link" href="uint.html#spirit.qi.reference.numeric.uint.attributes">Attributes</a>
446           </h6>
447 <div class="informaltable"><table class="table">
448 <colgroup>
449 <col>
450 <col>
451 </colgroup>
452 <thead><tr>
453 <th>
454                     <p>
455                       Expression
456                     </p>
457                   </th>
458 <th>
459                     <p>
460                       Attribute
461                     </p>
462                   </th>
463 </tr></thead>
464 <tbody>
465 <tr>
466 <td>
467                     <p>
468 </p>
469 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
470 </pre>
471 <p>
472                     </p>
473                   </td>
474 <td>
475                     <p>
476                       <code class="computeroutput"><span class="identifier">unused</span></code>
477                     </p>
478                   </td>
479 </tr>
480 <tr>
481 <td>
482                     <p>
483 </p>
484 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">ushort_</span>
485 <span class="identifier">ushort_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
486 </pre>
487 <p>
488                     </p>
489                   </td>
490 <td>
491                     <p>
492                       <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">short</span></code>
493                     </p>
494                   </td>
495 </tr>
496 <tr>
497 <td>
498                     <p>
499 </p>
500 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">uint_</span>
501 <span class="identifier">uint_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
502 <span class="identifier">bin</span>
503 <span class="identifier">bin</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
504 <span class="identifier">oct</span>
505 <span class="identifier">oct</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
506 <span class="identifier">hex</span>
507 <span class="identifier">hex</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
508 </pre>
509 <p>
510                     </p>
511                   </td>
512 <td>
513                     <p>
514                       <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">int</span></code>
515                     </p>
516                   </td>
517 </tr>
518 <tr>
519 <td>
520                     <p>
521 </p>
522 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">ulong_</span>
523 <span class="identifier">ulong_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
524 </pre>
525 <p>
526                     </p>
527                   </td>
528 <td>
529                     <p>
530                       <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">long</span></code>
531                     </p>
532                   </td>
533 </tr>
534 <tr>
535 <td>
536                     <p>
537 </p>
538 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">ulong_long</span>
539 <span class="identifier">ulong_long</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
540 </pre>
541 <p>
542                     </p>
543                   </td>
544 <td>
545                     <p>
546                       <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ulong_long_type</span></code>
547                     </p>
548                   </td>
549 </tr>
550 <tr>
551 <td>
552                     <p>
553 </p>
554 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">uint_parser</span><span class="special">&lt;</span>
555     <span class="identifier">T</span><span class="special">,</span> <span class="identifier">Radix</span><span class="special">,</span> <span class="identifier">MinDigits</span><span class="special">,</span> <span class="identifier">MaxDigits</span>
556 <span class="special">&gt;()</span>
557 <span class="identifier">uint_parser</span><span class="special">&lt;</span>
558     <span class="identifier">T</span><span class="special">,</span> <span class="identifier">Radix</span><span class="special">,</span> <span class="identifier">MinDigits</span><span class="special">,</span> <span class="identifier">MaxDigits</span>
559 <span class="special">&gt;()(</span><span class="identifier">num</span><span class="special">)</span>
560 </pre>
561 <p>
562                     </p>
563                   </td>
564 <td>
565                     <p>
566                       <code class="computeroutput"><span class="identifier">T</span></code>
567                     </p>
568                   </td>
569 </tr>
570 </tbody>
571 </table></div>
572 <h6>
573 <a name="spirit.qi.reference.numeric.uint.h8"></a>
574             <span><a name="spirit.qi.reference.numeric.uint.complexity"></a></span><a class="link" href="uint.html#spirit.qi.reference.numeric.uint.complexity">Complexity</a>
575           </h6>
576 <div class="blockquote"><blockquote class="blockquote"><p>
577               O(N), where N is the number of digits being parsed.
578             </p></blockquote></div>
579 <h6>
580 <a name="spirit.qi.reference.numeric.uint.h9"></a>
581             <span><a name="spirit.qi.reference.numeric.uint.minimum_expression_requirements_for__code__phrase_role__identifier__t__phrase___code_"></a></span><a class="link" href="uint.html#spirit.qi.reference.numeric.uint.minimum_expression_requirements_for__code__phrase_role__identifier__t__phrase___code_">Minimum
582             Expression Requirements for <code class="computeroutput"><span class="identifier">T</span></code></a>
583           </h6>
584 <p>
585             For the numeric base type, <code class="computeroutput"><span class="identifier">T</span></code>,
586             the expression requirements below must be valid:
587           </p>
588 <div class="informaltable"><table class="table">
589 <colgroup>
590 <col>
591 <col>
592 </colgroup>
593 <thead><tr>
594 <th>
595                     <p>
596                       Expression
597                     </p>
598                   </th>
599 <th>
600                     <p>
601                       Semantics
602                     </p>
603                   </th>
604 </tr></thead>
605 <tbody>
606 <tr>
607 <td>
608                     <p>
609                       <code class="computeroutput"><span class="identifier">T</span><span class="special">()</span></code>
610                     </p>
611                   </td>
612 <td>
613                     <p>
614                       Default construct.
615                     </p>
616                   </td>
617 </tr>
618 <tr>
619 <td>
620                     <p>
621                       <code class="computeroutput"><span class="identifier">T</span><span class="special">(</span><span class="number">0</span><span class="special">)</span></code>
622                     </p>
623                   </td>
624 <td>
625                     <p>
626                       Construct from an <code class="computeroutput"><span class="keyword">int</span></code>.
627                     </p>
628                   </td>
629 </tr>
630 <tr>
631 <td>
632                     <p>
633                       <code class="computeroutput"><span class="identifier">n</span> <span class="special">+</span>
634                       <span class="identifier">n</span></code>
635                     </p>
636                   </td>
637 <td>
638                     <p>
639                       Addition.
640                     </p>
641                   </td>
642 </tr>
643 <tr>
644 <td>
645                     <p>
646                       <code class="computeroutput"><span class="identifier">n</span> <span class="special">*</span>
647                       <span class="identifier">n</span></code>
648                     </p>
649                   </td>
650 <td>
651                     <p>
652                       Multiplication.
653                     </p>
654                   </td>
655 </tr>
656 <tr>
657 <td>
658                     <p>
659                       <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_bounded</span></code>
660                     </p>
661                   </td>
662 <td>
663                     <p>
664                       <code class="computeroutput"><span class="keyword">true</span></code> or <code class="computeroutput"><span class="keyword">false</span></code> if <code class="computeroutput"><span class="identifier">T</span></code>
665                       bounded.
666                     </p>
667                   </td>
668 </tr>
669 <tr>
670 <td>
671                     <p>
672                       <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">digits</span></code>
673                     </p>
674                   </td>
675 <td>
676                     <p>
677                       Maximum Digits for <code class="computeroutput"><span class="identifier">T</span></code>,
678                       radix digits. Required only if <code class="computeroutput"><span class="identifier">T</span></code>
679                       is bounded.
680                     </p>
681                   </td>
682 </tr>
683 <tr>
684 <td>
685                     <p>
686                       <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">digits10</span></code>
687                     </p>
688                   </td>
689 <td>
690                     <p>
691                       Maximum Digits for <code class="computeroutput"><span class="identifier">T</span></code>,
692                       base 10. Required only if <code class="computeroutput"><span class="identifier">T</span></code>
693                       is bounded.
694                     </p>
695                   </td>
696 </tr>
697 <tr>
698 <td>
699                     <p>
700                       <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">max</span><span class="special">()</span></code>
701                     </p>
702                   </td>
703 <td>
704                     <p>
705                       Maximum value for <code class="computeroutput"><span class="identifier">T</span></code>.
706                       Required only if <code class="computeroutput"><span class="identifier">T</span></code>
707                       is bounded.
708                     </p>
709                   </td>
710 </tr>
711 <tr>
712 <td>
713                     <p>
714                       <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">min</span><span class="special">()</span></code>
715                     </p>
716                   </td>
717 <td>
718                     <p>
719                       Minimum value for <code class="computeroutput"><span class="identifier">T</span></code>.
720                       Required only if <code class="computeroutput"><span class="identifier">T</span></code>
721                       is bounded.
722                     </p>
723                   </td>
724 </tr>
725 </tbody>
726 </table></div>
727 <h6>
728 <a name="spirit.qi.reference.numeric.uint.h10"></a>
729             <span><a name="spirit.qi.reference.numeric.uint.example"></a></span><a class="link" href="uint.html#spirit.qi.reference.numeric.uint.example">Example</a>
730           </h6>
731 <div class="note"><table border="0" summary="Note">
732 <tr>
733 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
734 <th align="left">Note</th>
735 </tr>
736 <tr><td align="left" valign="top"><p>
737               The test harness for the example(s) below is presented in the <a class="link" href="../basics.html#spirit.qi.reference.basics.examples">Basics Examples</a>
738               section.
739             </p></td></tr>
740 </table></div>
741 <p>
742             Some using declarations:
743           </p>
744 <p>
745 </p>
746 <pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">val</span><span class="special">;</span>
747 <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">lit</span><span class="special">;</span>
748 <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">uint_</span><span class="special">;</span>
749 <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">uint_parser</span><span class="special">;</span>
750 </pre>
751 <p>
752           </p>
753 <p>
754             Basic unsigned integers:
755           </p>
756 <p>
757 </p>
758 <pre class="programlisting"><span class="comment">// unsigned int</span>
759 <span class="identifier">test_parser</span><span class="special">(</span><span class="string">"12345"</span><span class="special">,</span> <span class="identifier">uint_</span><span class="special">);</span>
760 <span class="identifier">test_parser</span><span class="special">(</span><span class="string">"12345"</span><span class="special">,</span> <span class="identifier">uint_</span><span class="special">(</span><span class="number">12345</span><span class="special">));</span>
761 <span class="identifier">test_parser</span><span class="special">(</span><span class="string">"12345"</span><span class="special">,</span> <span class="identifier">uint_</span><span class="special">(</span><span class="identifier">val</span><span class="special">(</span><span class="number">12345</span><span class="special">)));</span>
762
763 <span class="comment">// literals</span>
764 <span class="identifier">test_parser</span><span class="special">(</span><span class="string">"12345"</span><span class="special">,</span> <span class="identifier">lit</span><span class="special">(</span><span class="number">12345</span><span class="special">));</span>
765 <span class="identifier">test_parser</span><span class="special">(</span><span class="string">"12345"</span><span class="special">,</span> <span class="identifier">lit</span><span class="special">(</span><span class="identifier">val</span><span class="special">(</span><span class="number">12345</span><span class="special">)));</span>
766 </pre>
767 <p>
768           </p>
769 <p>
770             Thousand separated number parser:
771           </p>
772 <p>
773 </p>
774 <pre class="programlisting"><span class="identifier">uint_parser</span><span class="special">&lt;</span><span class="keyword">unsigned</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="number">3</span><span class="special">&gt;</span> <span class="identifier">uint3_p</span><span class="special">;</span>        <span class="comment">//  1..3 digits</span>
775 <span class="identifier">uint_parser</span><span class="special">&lt;</span><span class="keyword">unsigned</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="number">3</span><span class="special">,</span> <span class="number">3</span><span class="special">&gt;</span> <span class="identifier">uint3_3_p</span><span class="special">;</span>      <span class="comment">//  exactly 3 digits</span>
776 <span class="identifier">test_parser</span><span class="special">(</span><span class="string">"12,345,678"</span><span class="special">,</span> <span class="identifier">uint3_p</span> <span class="special">&gt;&gt;</span> <span class="special">*(</span><span class="char">','</span> <span class="special">&gt;&gt;</span> <span class="identifier">uint3_3_p</span><span class="special">));</span>
777 </pre>
778 <p>
779           </p>
780 </div>
781 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
782 <td align="left"></td>
783 <td align="right"><div class="copyright-footer">Copyright &#169; 2001-2011 Joel de Guzman, Hartmut Kaiser<p>
784         Distributed under the Boost Software License, Version 1.0. (See accompanying
785         file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
786       </p>
787 </div></td>
788 </tr></table>
789 <hr>
790 <div class="spirit-nav">
791 <a accesskey="p" href="../numeric.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="int.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
792 </div>
793 </body>
794 </html>