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 <boost/spirit/home/qi/numeric/uint.hpp></span> 49<span class="preprocessor">#include</span> <span class="special"><</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">></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"><</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">></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"><</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">>()</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"><</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">>()(</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"><></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"><</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">>()</span> 557<span class="identifier">uint_parser</span><span class="special"><</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">>()(</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"><</span><span class="identifier">T</span><span class="special">>::</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"><</span><span class="identifier">T</span><span class="special">>::</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"><</span><span class="identifier">T</span><span class="special">>::</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"><</span><span class="identifier">T</span><span class="special">>::</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"><</span><span class="identifier">T</span><span class="special">>::</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"><</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">></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"><</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">></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">>></span> <span class="special">*(</span><span class="char">','</span> <span class="special">>></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