What header file is where the boost libray define its own primitive data type?

Posted by ronghai on Stack Overflow See other posts from Stack Overflow or by ronghai
Published on 2010-05-10T18:12:46Z Indexed on 2010/05/10 18:14 UTC
Read the original article Hit count: 292

Filed under:
|
|

Recently, I try to use the boost::spirit::qi binary endian parser to parse some binary data depends on the endianness of the Platform. There is a simple example, like following: Using declarations and variables:

using boost::spirit::qi::little_word; using boost::spirit::qi::little_dword; using boost::spirit::qi::little_qword;

boost::uint16_t us; boost::uint32_t ui; boost::uint64_t ul;

Basic usage of the little endian binary parsers:

test_parser_attr("\x01\x02", little_word, us); assert(us == 0x0201); test_parser_attr("\x01\x02\x03\x04", little_dword, ui); assert(ui == 0x04030201); test_parser_attr("\x01\x02\x03\x04\x05\x06\x07\x08", little_qword, ul); assert(ul == 0x0807060504030201LL);

test_parser("\x01\x02", little_word(0x0201)); test_parser("\x01\x02\x03\x04", little_dword(0x04030201)); test_parser("\x01\x02\x03\x04\x05\x06\x07\x08", little_qword(0x0807060504030201LL));

It works very well. But my questions come, why do we need use some data types like boost::uint16_t, boost::uint32_t here? Can I use unsigned long or unsigned int here? And if I want to parse double or float data type, what boost data type should I use? And please tell me where is boost define the above these types?

Thanks a lot.

© Stack Overflow or respective owner

Related posts about c++

Related posts about boost-spirit-qi