]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/spirit/doc/qi/binary.qbk
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / spirit / doc / qi / binary.qbk
CommitLineData
7c673cae
FG
1[/==============================================================================
2 Copyright (C) 2001-2011 Joel de Guzman
3 Copyright (C) 2001-2011 Hartmut Kaiser
4
5 Distributed under the Boost Software License, Version 1.0. (See accompanying
6 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7===============================================================================/]
8
9[section:binary Binary Parsers]
10
11This module includes different parsers for parsing binary data in
12various __endianness__. It includes parsers for default (native),
13little, and big endian binary input.
14
15[heading Module Header]
16
17 // forwards to <boost/spirit/home/qi/binary.hpp>
18 #include <boost/spirit/include/qi_binary.hpp>
19
20Also, see __include_structure__.
21
22[/////////////////////////////////////////////////////////////////////////////]
23[section:binary_native Binary Native Endianness Parsers]
24
25[heading Description]
26
27Binary native endian parsers are designed to parse binary byte streams
28that are laid out in the native __endianness__ of the target
29architecture.
30
31[heading Header]
32
33 // forwards to <boost/spirit/home/qi/binary.hpp>
34 #include <boost/spirit/include/qi_binary.hpp>
35
36Also, see __include_structure__.
37
38[heading Namespace]
39
40[table
41 [[Name]]
42 [[`boost::spirit::byte_ // alias: boost::spirit::qi::byte_`]]
43 [[`boost::spirit::word // alias: boost::spirit::qi::word`]]
44 [[`boost::spirit::dword // alias: boost::spirit::qi::dword`]]
45 [[`boost::spirit::qword // alias: boost::spirit::qi::qword`]]
46 [[`boost::spirit::bin_float // alias: boost::spirit::qi::bin_float`]]
47 [[`boost::spirit::bin_double // alias: boost::spirit::qi::bin_double`]]
48]
49
50[note `qword` is only available on platforms where the preprocessor
51constant `BOOST_HAS_LONG_LONG` is defined (i.e. on platforms having
52native support for `unsigned long long` (64 bit) integer types).]
53
54[heading Model of]
55
56[:__primitive_parser_concept__]
57
58[variablelist Notation
59 [[`b`] [A single byte (8 bit binary value) or a __qi_lazy_argument__
60 that evaluates to a single byte. This value is always
61 in native endian.]]
62 [[`w`] [A 16 bit binary value or a __qi_lazy_argument__ that
63 evaluates to a 16 bit binary value. This value is always
64 in native endian.]]
65 [[`dw`] [A 32 bit binary value or a __qi_lazy_argument__ that
66 evaluates to a 32 bit binary value. This value is always
67 in native endian.]]
68 [[`qw`] [A 64 bit binary value or a __qi_lazy_argument__ that
69 evaluates to a 64 bit binary value. This value is always
70 in native endian.]]
71 [[`f`] [A float binary value or a __qi_lazy_argument__ that
72 evaluates to a float binary value. This value is always
73 in native endian.]]
74 [[`d`] [A double binary value or a __qi_lazy_argument__ that
75 evaluates to a double binary value. This value is always
76 in native endian.]]
77]
78
79[heading Expression Semantics]
80
81Semantics of an expression is defined only where it differs from, or is
82not defined in __primitive_parser_concept__.
83
84[table
85 [[Expression] [Description]]
86 [[`byte_`] [Matches any 8 bit native endian binary.]]
87 [[`word`] [Matches any 16 bit native endian binary.]]
88 [[`dword`] [Matches any 32 bit native endian binary.]]
89 [[`qword`] [Matches any 64 bit native endian binary.]]
90 [[`bin_float`] [Matches any float native endian binary.]]
91 [[`bin_double`] [Matches any double native endian binary.]]
92 [[`byte_(b)`] [Matches an exact 8 bit native endian binary.]]
93 [[`word(w)`] [Matches an exact 16 bit native endian binary.]]
94 [[`dword(dw)`] [Matches an exact 32 bit native endian binary.]]
95 [[`qword(qw)`] [Matches an exact 64 bit native endian binary.]]
96 [[`bin_float(f)`] [Matches an exact float native endian binary.]]
97 [[`bin_double(d)`] [Matches an exact double native endian binary.]]
98]
99
100[heading Attributes]
101
102[table
103 [[Expression] [Attribute]]
104 [[`byte_`] [`boost::uint_least8_t`]]
105 [[`word`] [`boost::uint_least16_t`]]
106 [[`dword`] [`boost::uint_least32_t`]]
107 [[`qword`] [`boost::uint_least64_t`]]
108 [[`bin_float`] [`float`]]
109 [[`bin_double`] [`double`]]
110 [[`byte_(b)`] [__unused__]]
111 [[`word(w)`] [__unused__]]
112 [[`dword(dw)`] [__unused__]]
113 [[`qword(qw)`] [__unused__]]
114 [[`bin_float(f)`] [__unused__]]
115 [[`bin_double(d)`] [__unused__]]
116]
117
118[heading Complexity]
119
120[:O(N), where N is the number of bytes parsed]
121
122[heading Example]
123
124[note The test harness for the example(s) below is presented in the
125__qi_basics_examples__ section.]
126
127[reference_qi_native_binary]
128
129[endsect]
130
131[/////////////////////////////////////////////////////////////////////////////]
132[section:binary_little Binary Little Endianness Parser]
133
134[heading Description]
135
136Binary little endian parsers are designed to parse binary byte streams
137that are laid out in little endian.
138
139[heading Header]
140
141 // forwards to <boost/spirit/home/qi/binary.hpp>
142 #include <boost/spirit/include/qi_binary.hpp>
143
144Also, see __include_structure__.
145
146[heading Namespace]
147
148[table
149 [[Name]]
150 [[`boost::spirit::little_word // alias: boost::spirit::qi::little_word` ]]
151 [[`boost::spirit::little_dword // alias: boost::spirit::qi::little_dword` ]]
152 [[`boost::spirit::little_qword // alias: boost::spirit::qi::little_qword` ]]
153 [[`boost::spirit::little_bin_float // alias: boost::spirit::qi::little_bin_float` ]]
154 [[`boost::spirit::little_bin_double // alias: boost::spirit::qi::little_bin_double` ]]
155]
156
157[note `little_qword` is only available on platforms where the
158preprocessor constant `BOOST_HAS_LONG_LONG` is defined (i.e. on
159platforms having native support for `unsigned long long` (64 bit)
160integer types).]
161
162[heading Model of]
163
164[:__primitive_parser_concept__]
165
166[variablelist Notation
167 [[`w`] [A 16 bit binary value or a __qi_lazy_argument__ that
168 evaluates to a 16 bit binary value. This value is always
169 in native endian.]]
170 [[`dw`] [A 32 bit binary value or a __qi_lazy_argument__ that
171 evaluates to a 32 bit binary value. This value is always
172 in native endian.]]
173 [[`qw`] [A 64 bit binary value or a __qi_lazy_argument__ that
174 evaluates to a 64 bit binary value. This value is always
175 in native endian.]]
176 [[`f`] [A float binary value or a __qi_lazy_argument__ that
177 evaluates to a float binary value. This value is always
178 in native endian.]]
179 [[`d`] [A double binary value or a __qi_lazy_argument__ that
180 evaluates to a double binary value. This value is always
181 in native endian.]]
182]
183
184[heading Expression Semantics]
185
186Semantics of an expression is defined only where it differs from, or is
187not defined in __primitive_parser_concept__.
188
189[table
190 [[Expression] [Description]]
191 [[`little_word`] [Matches any 16 bit little endian binary.]]
192 [[`little_dword`] [Matches any 32 bit little endian binary.]]
193 [[`little_qword`] [Matches any 64 bit little endian binary.]]
194 [[`little_bin_float`] [Matches any float little endian binary.]]
195 [[`little_bin_double`] [Matches any double little endian binary.]]
196 [[`little_word(w)`] [Matches an exact 16 bit little endian binary.]]
197 [[`little_dword(dw)`] [Matches an exact 32 bit little endian binary.]]
198 [[`little_qword(qw)`] [Matches an exact 32 bit little endian binary.]]
199 [[`little_bin_float(f)`] [Matches an exact float little endian binary.]]
200 [[`little_bin_double(d)`] [Matches an exact double little endian binary.]]
201]
202
203[heading Attributes]
204
205[table
206 [[Expression] [Attribute]]
207 [[`little_word`] [`boost::uint_least16_t`]]
208 [[`little_dword`] [`boost::uint_least32_t`]]
209 [[`little_qword`] [`boost::uint_least64_t`]]
210 [[`little_bin_float`] [`float`]]
211 [[`little_bin_double`] [`double`]]
212 [[`little_word(w)`] [__unused__]]
213 [[`little_dword(dw)`] [__unused__]]
214 [[`little_qword(qw)`] [__unused__]]
215 [[`little_bin_float(f)`] [__unused__]]
216 [[`little_bin_double(d)`] [__unused__]]
217]
218
219[heading Complexity]
220
221[:O(N), where N is the number of bytes parsed]
222
223[heading Example]
224
225[note The test harness for the example(s) below is presented in the
226__qi_basics_examples__ section.]
227
228[reference_qi_little_binary]
229
230[endsect]
231
232[/////////////////////////////////////////////////////////////////////////////]
233[section:binary_big Binary Big Endianness Parsers]
234
235[heading Description]
236
237Binary big endian parsers are designed to parse binary byte streams that
238are laid out in big endian.
239
240[heading Header]
241
242 // forwards to <boost/spirit/home/qi/binary.hpp>
243 #include <boost/spirit/include/qi_binary.hpp>
244
245Also, see __include_structure__.
246
247[heading Namespace]
248
249[table
250 [[Name]]
251 [[`boost::spirit::big_word // alias: boost::spirit::qi::big_word` ]]
252 [[`boost::spirit::big_dword // alias: boost::spirit::qi::big_dword` ]]
253 [[`boost::spirit::big_qword // alias: boost::spirit::qi::big_qword` ]]
254 [[`boost::spirit::big_bin_float // alias: boost::spirit::qi::big_bin_float` ]]
255 [[`boost::spirit::big_bin_double // alias: boost::spirit::qi::big_bin_double` ]]
256]
257
258[note `big_qword` is only available on platforms where the
259preprocessor constant `BOOST_HAS_LONG_LONG` is defined (i.e. on
260platforms having native support for `unsigned long long` (64 bit)
261integer types).]
262
263[heading Model of]
264
265[:__primitive_parser_concept__]
266
267[variablelist Notation
268 [[`w`] [A 16 bit binary value or a __qi_lazy_argument__ that
269 evaluates to a 16 bit binary value. This value is always
270 in native endian.]]
271 [[`dw`] [A 32 bit binary value or a __qi_lazy_argument__ that
272 evaluates to a 32 bit binary value. This value is always
273 in native endian.]]
274 [[`qw`] [A 64 bit binary value or a __qi_lazy_argument__ that
275 evaluates to a 64 bit binary value. This value is always
276 in native endian.]]
277 [[`f`] [A float binary value or a __qi_lazy_argument__ that
278 evaluates to a float binary value. This value is always
279 in native endian.]]
280 [[`d`] [A double binary value or a __qi_lazy_argument__ that
281 evaluates to a double binary value. This value is always
282 in native endian.]]
283]
284
285[heading Expression Semantics]
286
287Semantics of an expression is defined only where it differs from, or is
288not defined in __primitive_parser_concept__.
289
290[table
291 [[Expression] [Description]]
292 [[`big_word`] [Matches any 16 bit big endian binary.]]
293 [[`big_dword`] [Matches any 32 bit big endian binary.]]
294 [[`big_qword`] [Matches any 64 bit big endian binary.]]
295 [[`big_bin_float`] [Matches any float big endian binary.]]
296 [[`big_bin_double`] [Matches any double big endian binary.]]
297 [[`big_word(w)`] [Matches an exact 16 bit big endian binary.]]
298 [[`big_dword(dw)`] [Matches an exact 32 bit big endian binary.]]
299 [[`big_qword(qw)`] [Matches an exact 32 bit big endian binary.]]
300 [[`big_bin_float(f)`] [Matches an exact float big endian binary.]]
301 [[`big_bin_double(d)`] [Matches an exact double big endian binary.]]
302]
303
304[heading Attributes]
305
306[table
307 [[Expression] [Attribute]]
308 [[`big_word`] [`boost::uint_least16_t`]]
309 [[`big_dword`] [`boost::uint_least32_t`]]
310 [[`big_qword`] [`boost::uint_least64_t`]]
311 [[`big_bin_float`] [`float`]]
312 [[`big_bin_double`] [`double`]]
313 [[`big_word(w)`] [__unused__]]
314 [[`big_dword(dw)`] [__unused__]]
315 [[`big_qword(qw)`] [__unused__]]
316 [[`big_bin_float(f)`] [__unused__]]
317 [[`big_bin_double(d)`] [__unused__]]
318]
319
320[heading Complexity]
321
322[:O(N), where N is the number of bytes parsed]
323
324[heading Example]
325
326[note The test harness for the example(s) below is presented in the
327__qi_basics_examples__ section.]
328
329[reference_qi_big_binary]
330
331[endsect]
332
333[endsect]