• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
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.79.1">
7<link rel="home" href="../../../../index.html" title="Spirit 2.5.8">
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 class="phrase"><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 class="phrase"><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 class="phrase"><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 class="phrase"><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 class="phrase"><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 class="phrase"><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 class="variablelist">
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 class="phrase"><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 class="phrase"><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 class="phrase"><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 class="phrase"><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 class="phrase"><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 © 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>
795