• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>Binary Native Endianness Parsers</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="../binary.html" title="Binary Parsers">
9<link rel="prev" href="../binary.html" title="Binary Parsers">
10<link rel="next" href="binary_little.html" title="Binary Little Endianness Parser">
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="../binary.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../binary.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="binary_little.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.binary.binary_native"></a><a class="link" href="binary_native.html" title="Binary Native Endianness Parsers">Binary
28          Native Endianness Parsers</a>
29</h5></div></div></div>
30<h6>
31<a name="spirit.qi.reference.binary.binary_native.h0"></a>
32            <span class="phrase"><a name="spirit.qi.reference.binary.binary_native.description"></a></span><a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.description">Description</a>
33          </h6>
34<p>
35            Binary native endian parsers are designed to parse binary byte streams
36            that are laid out in the native <a href="http://en.wikipedia.org/wiki/Endianness" target="_top">endianness</a>
37            of the target architecture.
38          </p>
39<h6>
40<a name="spirit.qi.reference.binary.binary_native.h1"></a>
41            <span class="phrase"><a name="spirit.qi.reference.binary.binary_native.header"></a></span><a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.header">Header</a>
42          </h6>
43<pre class="programlisting"><span class="comment">// forwards to &lt;boost/spirit/home/qi/binary.hpp&gt;</span>
44<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_binary</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
45</pre>
46<p>
47            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
48          </p>
49<h6>
50<a name="spirit.qi.reference.binary.binary_native.h2"></a>
51            <span class="phrase"><a name="spirit.qi.reference.binary.binary_native.namespace"></a></span><a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.namespace">Namespace</a>
52          </h6>
53<div class="informaltable"><table class="table">
54<colgroup><col></colgroup>
55<thead><tr><th>
56                    <p>
57                      Name
58                    </p>
59                  </th></tr></thead>
60<tbody>
61<tr><td>
62                    <p>
63                      <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">byte_</span> <span class="comment">//
64                      alias: boost::spirit::qi::byte_</span></code>
65                    </p>
66                  </td></tr>
67<tr><td>
68                    <p>
69                      <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">word</span> <span class="comment">// alias:
70                      boost::spirit::qi::word</span></code>
71                    </p>
72                  </td></tr>
73<tr><td>
74                    <p>
75                      <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">dword</span> <span class="comment">//
76                      alias: boost::spirit::qi::dword</span></code>
77                    </p>
78                  </td></tr>
79<tr><td>
80                    <p>
81                      <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qword</span> <span class="comment">//
82                      alias: boost::spirit::qi::qword</span></code>
83                    </p>
84                  </td></tr>
85<tr><td>
86                    <p>
87                      <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_float</span> <span class="comment">//
88                      alias: boost::spirit::qi::bin_float</span></code>
89                    </p>
90                  </td></tr>
91<tr><td>
92                    <p>
93                      <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_double</span> <span class="comment">//
94                      alias: boost::spirit::qi::bin_double</span></code>
95                    </p>
96                  </td></tr>
97</tbody>
98</table></div>
99<div class="note"><table border="0" summary="Note">
100<tr>
101<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
102<th align="left">Note</th>
103</tr>
104<tr><td align="left" valign="top"><p>
105              <code class="computeroutput"><span class="identifier">qword</span></code> is only available
106              on platforms where the preprocessor constant <code class="computeroutput"><span class="identifier">BOOST_HAS_LONG_LONG</span></code>
107              is defined (i.e. on platforms having native support for <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">long</span>
108              <span class="keyword">long</span></code> (64 bit) integer types).
109            </p></td></tr>
110</table></div>
111<h6>
112<a name="spirit.qi.reference.binary.binary_native.h3"></a>
113            <span class="phrase"><a name="spirit.qi.reference.binary.binary_native.model_of"></a></span><a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.model_of">Model of</a>
114          </h6>
115<div class="blockquote"><blockquote class="blockquote"><p>
116              <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>
117            </p></blockquote></div>
118<div class="variablelist">
119<p class="title"><b>Notation</b></p>
120<dl class="variablelist">
121<dt><span class="term"><code class="computeroutput"><span class="identifier">b</span></code></span></dt>
122<dd><p>
123                  A single byte (8 bit binary value) or a <a class="link" href="../basics.html#spirit.qi.reference.basics.lazy_argument">Lazy
124                  Argument</a> that evaluates to a single byte. This value is
125                  always in native endian.
126                </p></dd>
127<dt><span class="term"><code class="computeroutput"><span class="identifier">w</span></code></span></dt>
128<dd><p>
129                  A 16 bit binary value or a <a class="link" href="../basics.html#spirit.qi.reference.basics.lazy_argument">Lazy
130                  Argument</a> that evaluates to a 16 bit binary value. This value
131                  is always in native endian.
132                </p></dd>
133<dt><span class="term"><code class="computeroutput"><span class="identifier">dw</span></code></span></dt>
134<dd><p>
135                  A 32 bit binary value or a <a class="link" href="../basics.html#spirit.qi.reference.basics.lazy_argument">Lazy
136                  Argument</a> that evaluates to a 32 bit binary value. This value
137                  is always in native endian.
138                </p></dd>
139<dt><span class="term"><code class="computeroutput"><span class="identifier">qw</span></code></span></dt>
140<dd><p>
141                  A 64 bit binary value or a <a class="link" href="../basics.html#spirit.qi.reference.basics.lazy_argument">Lazy
142                  Argument</a> that evaluates to a 64 bit binary value. This value
143                  is always in native endian.
144                </p></dd>
145<dt><span class="term"><code class="computeroutput"><span class="identifier">f</span></code></span></dt>
146<dd><p>
147                  A float binary value or a <a class="link" href="../basics.html#spirit.qi.reference.basics.lazy_argument">Lazy
148                  Argument</a> that evaluates to a float binary value. This value
149                  is always in native endian.
150                </p></dd>
151<dt><span class="term"><code class="computeroutput"><span class="identifier">d</span></code></span></dt>
152<dd><p>
153                  A double binary value or a <a class="link" href="../basics.html#spirit.qi.reference.basics.lazy_argument">Lazy
154                  Argument</a> that evaluates to a double binary value. This value
155                  is always in native endian.
156                </p></dd>
157</dl>
158</div>
159<h6>
160<a name="spirit.qi.reference.binary.binary_native.h4"></a>
161            <span class="phrase"><a name="spirit.qi.reference.binary.binary_native.expression_semantics"></a></span><a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.expression_semantics">Expression
162            Semantics</a>
163          </h6>
164<p>
165            Semantics of an expression is defined only where it differs from, or
166            is not defined in <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>.
167          </p>
168<div class="informaltable"><table class="table">
169<colgroup>
170<col>
171<col>
172</colgroup>
173<thead><tr>
174<th>
175                    <p>
176                      Expression
177                    </p>
178                  </th>
179<th>
180                    <p>
181                      Description
182                    </p>
183                  </th>
184</tr></thead>
185<tbody>
186<tr>
187<td>
188                    <p>
189                      <code class="computeroutput"><span class="identifier">byte_</span></code>
190                    </p>
191                  </td>
192<td>
193                    <p>
194                      Matches any 8 bit native endian binary.
195                    </p>
196                  </td>
197</tr>
198<tr>
199<td>
200                    <p>
201                      <code class="computeroutput"><span class="identifier">word</span></code>
202                    </p>
203                  </td>
204<td>
205                    <p>
206                      Matches any 16 bit native endian binary.
207                    </p>
208                  </td>
209</tr>
210<tr>
211<td>
212                    <p>
213                      <code class="computeroutput"><span class="identifier">dword</span></code>
214                    </p>
215                  </td>
216<td>
217                    <p>
218                      Matches any 32 bit native endian binary.
219                    </p>
220                  </td>
221</tr>
222<tr>
223<td>
224                    <p>
225                      <code class="computeroutput"><span class="identifier">qword</span></code>
226                    </p>
227                  </td>
228<td>
229                    <p>
230                      Matches any 64 bit native endian binary.
231                    </p>
232                  </td>
233</tr>
234<tr>
235<td>
236                    <p>
237                      <code class="computeroutput"><span class="identifier">bin_float</span></code>
238                    </p>
239                  </td>
240<td>
241                    <p>
242                      Matches any float native endian binary.
243                    </p>
244                  </td>
245</tr>
246<tr>
247<td>
248                    <p>
249                      <code class="computeroutput"><span class="identifier">bin_double</span></code>
250                    </p>
251                  </td>
252<td>
253                    <p>
254                      Matches any double native endian binary.
255                    </p>
256                  </td>
257</tr>
258<tr>
259<td>
260                    <p>
261                      <code class="computeroutput"><span class="identifier">byte_</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>
262                    </p>
263                  </td>
264<td>
265                    <p>
266                      Matches an exact 8 bit native endian binary.
267                    </p>
268                  </td>
269</tr>
270<tr>
271<td>
272                    <p>
273                      <code class="computeroutput"><span class="identifier">word</span><span class="special">(</span><span class="identifier">w</span><span class="special">)</span></code>
274                    </p>
275                  </td>
276<td>
277                    <p>
278                      Matches an exact 16 bit native endian binary.
279                    </p>
280                  </td>
281</tr>
282<tr>
283<td>
284                    <p>
285                      <code class="computeroutput"><span class="identifier">dword</span><span class="special">(</span><span class="identifier">dw</span><span class="special">)</span></code>
286                    </p>
287                  </td>
288<td>
289                    <p>
290                      Matches an exact 32 bit native endian binary.
291                    </p>
292                  </td>
293</tr>
294<tr>
295<td>
296                    <p>
297                      <code class="computeroutput"><span class="identifier">qword</span><span class="special">(</span><span class="identifier">qw</span><span class="special">)</span></code>
298                    </p>
299                  </td>
300<td>
301                    <p>
302                      Matches an exact 64 bit native endian binary.
303                    </p>
304                  </td>
305</tr>
306<tr>
307<td>
308                    <p>
309                      <code class="computeroutput"><span class="identifier">bin_float</span><span class="special">(</span><span class="identifier">f</span><span class="special">)</span></code>
310                    </p>
311                  </td>
312<td>
313                    <p>
314                      Matches an exact float native endian binary.
315                    </p>
316                  </td>
317</tr>
318<tr>
319<td>
320                    <p>
321                      <code class="computeroutput"><span class="identifier">bin_double</span><span class="special">(</span><span class="identifier">d</span><span class="special">)</span></code>
322                    </p>
323                  </td>
324<td>
325                    <p>
326                      Matches an exact double native endian binary.
327                    </p>
328                  </td>
329</tr>
330</tbody>
331</table></div>
332<h6>
333<a name="spirit.qi.reference.binary.binary_native.h5"></a>
334            <span class="phrase"><a name="spirit.qi.reference.binary.binary_native.attributes"></a></span><a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.attributes">Attributes</a>
335          </h6>
336<div class="informaltable"><table class="table">
337<colgroup>
338<col>
339<col>
340</colgroup>
341<thead><tr>
342<th>
343                    <p>
344                      Expression
345                    </p>
346                  </th>
347<th>
348                    <p>
349                      Attribute
350                    </p>
351                  </th>
352</tr></thead>
353<tbody>
354<tr>
355<td>
356                    <p>
357                      <code class="computeroutput"><span class="identifier">byte_</span></code>
358                    </p>
359                  </td>
360<td>
361                    <p>
362                      <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least8_t</span></code>
363                    </p>
364                  </td>
365</tr>
366<tr>
367<td>
368                    <p>
369                      <code class="computeroutput"><span class="identifier">word</span></code>
370                    </p>
371                  </td>
372<td>
373                    <p>
374                      <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least16_t</span></code>
375                    </p>
376                  </td>
377</tr>
378<tr>
379<td>
380                    <p>
381                      <code class="computeroutput"><span class="identifier">dword</span></code>
382                    </p>
383                  </td>
384<td>
385                    <p>
386                      <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least32_t</span></code>
387                    </p>
388                  </td>
389</tr>
390<tr>
391<td>
392                    <p>
393                      <code class="computeroutput"><span class="identifier">qword</span></code>
394                    </p>
395                  </td>
396<td>
397                    <p>
398                      <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least64_t</span></code>
399                    </p>
400                  </td>
401</tr>
402<tr>
403<td>
404                    <p>
405                      <code class="computeroutput"><span class="identifier">bin_float</span></code>
406                    </p>
407                  </td>
408<td>
409                    <p>
410                      <code class="computeroutput"><span class="keyword">float</span></code>
411                    </p>
412                  </td>
413</tr>
414<tr>
415<td>
416                    <p>
417                      <code class="computeroutput"><span class="identifier">bin_double</span></code>
418                    </p>
419                  </td>
420<td>
421                    <p>
422                      <code class="computeroutput"><span class="keyword">double</span></code>
423                    </p>
424                  </td>
425</tr>
426<tr>
427<td>
428                    <p>
429                      <code class="computeroutput"><span class="identifier">byte_</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>
430                    </p>
431                  </td>
432<td>
433                    <p>
434                      <code class="computeroutput"><span class="identifier">unused</span></code>
435                    </p>
436                  </td>
437</tr>
438<tr>
439<td>
440                    <p>
441                      <code class="computeroutput"><span class="identifier">word</span><span class="special">(</span><span class="identifier">w</span><span class="special">)</span></code>
442                    </p>
443                  </td>
444<td>
445                    <p>
446                      <code class="computeroutput"><span class="identifier">unused</span></code>
447                    </p>
448                  </td>
449</tr>
450<tr>
451<td>
452                    <p>
453                      <code class="computeroutput"><span class="identifier">dword</span><span class="special">(</span><span class="identifier">dw</span><span class="special">)</span></code>
454                    </p>
455                  </td>
456<td>
457                    <p>
458                      <code class="computeroutput"><span class="identifier">unused</span></code>
459                    </p>
460                  </td>
461</tr>
462<tr>
463<td>
464                    <p>
465                      <code class="computeroutput"><span class="identifier">qword</span><span class="special">(</span><span class="identifier">qw</span><span class="special">)</span></code>
466                    </p>
467                  </td>
468<td>
469                    <p>
470                      <code class="computeroutput"><span class="identifier">unused</span></code>
471                    </p>
472                  </td>
473</tr>
474<tr>
475<td>
476                    <p>
477                      <code class="computeroutput"><span class="identifier">bin_float</span><span class="special">(</span><span class="identifier">f</span><span class="special">)</span></code>
478                    </p>
479                  </td>
480<td>
481                    <p>
482                      <code class="computeroutput"><span class="identifier">unused</span></code>
483                    </p>
484                  </td>
485</tr>
486<tr>
487<td>
488                    <p>
489                      <code class="computeroutput"><span class="identifier">bin_double</span><span class="special">(</span><span class="identifier">d</span><span class="special">)</span></code>
490                    </p>
491                  </td>
492<td>
493                    <p>
494                      <code class="computeroutput"><span class="identifier">unused</span></code>
495                    </p>
496                  </td>
497</tr>
498</tbody>
499</table></div>
500<h6>
501<a name="spirit.qi.reference.binary.binary_native.h6"></a>
502            <span class="phrase"><a name="spirit.qi.reference.binary.binary_native.complexity"></a></span><a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.complexity">Complexity</a>
503          </h6>
504<div class="blockquote"><blockquote class="blockquote"><p>
505              O(N), where N is the number of bytes parsed
506            </p></blockquote></div>
507<h6>
508<a name="spirit.qi.reference.binary.binary_native.h7"></a>
509            <span class="phrase"><a name="spirit.qi.reference.binary.binary_native.example"></a></span><a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.example">Example</a>
510          </h6>
511<div class="note"><table border="0" summary="Note">
512<tr>
513<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
514<th align="left">Note</th>
515</tr>
516<tr><td align="left" valign="top"><p>
517              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>
518              section.
519            </p></td></tr>
520</table></div>
521<p>
522            Using declarations and variables:
523          </p>
524<p>
525</p>
526<pre class="programlisting"><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">byte_</span><span class="special">;</span>
527<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">word</span><span class="special">;</span>
528<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">dword</span><span class="special">;</span>
529<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">qword</span><span class="special">;</span>
530
531<span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint8_t</span> <span class="identifier">uc</span><span class="special">;</span>
532<span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint16_t</span> <span class="identifier">us</span><span class="special">;</span>
533<span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint32_t</span> <span class="identifier">ui</span><span class="special">;</span>
534<span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint64_t</span> <span class="identifier">ul</span><span class="special">;</span>
535</pre>
536<p>
537          </p>
538<p>
539            Basic usage of the native binary parsers for little endian platforms:
540          </p>
541<p>
542</p>
543<pre class="programlisting"><span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01"</span><span class="special">,</span> <span class="identifier">byte_</span><span class="special">,</span> <span class="identifier">uc</span><span class="special">);</span> <span class="identifier">assert</span><span class="special">(</span><span class="identifier">uc</span> <span class="special">==</span> <span class="number">0x01</span><span class="special">);</span>
544<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01\x02"</span><span class="special">,</span> <span class="identifier">word</span><span class="special">,</span> <span class="identifier">us</span><span class="special">);</span> <span class="identifier">assert</span><span class="special">(</span><span class="identifier">us</span> <span class="special">==</span> <span class="number">0x0201</span><span class="special">);</span>
545<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04"</span><span class="special">,</span> <span class="identifier">dword</span><span class="special">,</span> <span class="identifier">ui</span><span class="special">);</span> <span class="identifier">assert</span><span class="special">(</span><span class="identifier">ui</span> <span class="special">==</span> <span class="number">0x04030201</span><span class="special">);</span>
546<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04\x05\x06\x07\x08"</span><span class="special">,</span> <span class="identifier">qword</span><span class="special">,</span> <span class="identifier">ul</span><span class="special">);</span>
547<span class="identifier">assert</span><span class="special">(</span><span class="identifier">ul</span> <span class="special">==</span> <span class="number">0</span><span class="identifier">x0807060504030201LL</span><span class="special">);</span>
548
549<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01"</span><span class="special">,</span> <span class="identifier">byte_</span><span class="special">(</span><span class="number">0x01</span><span class="special">));</span>
550<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01\x02"</span><span class="special">,</span> <span class="identifier">word</span><span class="special">(</span><span class="number">0x0201</span><span class="special">));</span>
551<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04"</span><span class="special">,</span> <span class="identifier">dword</span><span class="special">(</span><span class="number">0x04030201</span><span class="special">));</span>
552<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04\x05\x06\x07\x08"</span><span class="special">,</span>
553    <span class="identifier">qword</span><span class="special">(</span><span class="number">0</span><span class="identifier">x0807060504030201LL</span><span class="special">));</span>
554</pre>
555<p>
556          </p>
557<p>
558            Basic usage of the native binary parsers for big endian platforms:
559          </p>
560<p>
561</p>
562<pre class="programlisting"><span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01"</span><span class="special">,</span> <span class="identifier">byte_</span><span class="special">,</span> <span class="identifier">uc</span><span class="special">);</span> <span class="identifier">assert</span><span class="special">(</span><span class="identifier">uc</span> <span class="special">==</span> <span class="number">0x01</span><span class="special">);</span>
563<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01\x02"</span><span class="special">,</span> <span class="identifier">word</span><span class="special">,</span> <span class="identifier">us</span><span class="special">);</span> <span class="identifier">assert</span><span class="special">(</span><span class="identifier">us</span> <span class="special">==</span>  <span class="number">0x0102</span><span class="special">);</span>
564<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04"</span><span class="special">,</span> <span class="identifier">dword</span><span class="special">,</span> <span class="identifier">ui</span><span class="special">);</span> <span class="identifier">assert</span><span class="special">(</span><span class="identifier">ui</span> <span class="special">==</span> <span class="number">0x01020304</span><span class="special">);</span>
565<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04\x05\x06\x07\x08"</span><span class="special">,</span> <span class="identifier">qword</span><span class="special">,</span> <span class="identifier">ul</span><span class="special">);</span>
566<span class="identifier">assert</span><span class="special">(</span><span class="number">0</span><span class="identifier">x0102030405060708LL</span><span class="special">);</span>
567
568<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01"</span><span class="special">,</span> <span class="identifier">byte_</span><span class="special">(</span><span class="number">0x01</span><span class="special">));</span>
569<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01\x02"</span><span class="special">,</span> <span class="identifier">word</span><span class="special">(</span><span class="number">0x0102</span><span class="special">));</span>
570<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04"</span><span class="special">,</span> <span class="identifier">dword</span><span class="special">(</span><span class="number">0x01020304</span><span class="special">));</span>
571<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04\x05\x06\x07\x08"</span><span class="special">,</span>
572    <span class="identifier">qword</span><span class="special">(</span><span class="number">0</span><span class="identifier">x0102030405060708LL</span><span class="special">));</span>
573</pre>
574<p>
575          </p>
576</div>
577<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
578<td align="left"></td>
579<td align="right"><div class="copyright-footer">Copyright © 2001-2011 Joel de Guzman, Hartmut Kaiser<p>
580        Distributed under the Boost Software License, Version 1.0. (See accompanying
581        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>)
582      </p>
583</div></td>
584</tr></table>
585<hr>
586<div class="spirit-nav">
587<a accesskey="p" href="../binary.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../binary.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="binary_little.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
588</div>
589</body>
590</html>
591