#include <cstddef>
#include <cassert>
#include <vector>
#include <boost/array.hpp>
typedef unsigned UINT;
typedef unsigned char BYTE;
std::size_t const DATA_SIZE = 6;
struct Data
{
UINT a;
BYTE b;
BYTE c;
BYTE d;
Data() : a(), b(), c(), d() { }
Data(boost::array<BYTE, DATA_SIZE> const& data)
: a(data[0] << 16 | data[1] << 8 | data[2]),
b(data[3]),
c(data[4]),
d(data[5])
{ }
};
inline bool operator ==(Data const& lhs, Data const& rhs)
{
return lhs.a == rhs.a && lhs.b == rhs.b && lhs.c == rhs.c && lhs.d == rhs.d;
}
int main()
{
boost::array<boost::array<BYTE, DATA_SIZE>, 2> const source =
{{
{{ 0x01, 0xfe, 0xaa, 0x01, 0xcc, 0x13 }},
{{ 0x02, 0xa1, 0x02, 0xbb, 0x02, 0xdd }}
}};
std::vector<Data> data_list(source.begin(), source.end());
assert(data_list[0] == Data(source[0]));
assert(data_list[1] == Data(source[1]));
}
I2luY2x1ZGUgPGNzdGRkZWY+CiNpbmNsdWRlIDxjYXNzZXJ0PgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8Ym9vc3QvYXJyYXkuaHBwPgoKdHlwZWRlZiB1bnNpZ25lZCBVSU5UOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgQllURTsKCnN0ZDo6c2l6ZV90IGNvbnN0IERBVEFfU0laRSA9IDY7CgpzdHJ1Y3QgRGF0YQp7CiAgICBVSU5UIGE7CiAgICBCWVRFIGI7CiAgICBCWVRFIGM7CiAgICBCWVRFIGQ7CgogICAgRGF0YSgpIDogYSgpLCBiKCksIGMoKSwgZCgpIHsgfQoKICAgIERhdGEoYm9vc3Q6OmFycmF5PEJZVEUsIERBVEFfU0laRT4gY29uc3QmIGRhdGEpCiAgICAgIDogYShkYXRhWzBdIDw8IDE2IHwgZGF0YVsxXSA8PCA4IHwgZGF0YVsyXSksCiAgICAgICAgYihkYXRhWzNdKSwKICAgICAgICBjKGRhdGFbNF0pLAogICAgICAgIGQoZGF0YVs1XSkKICAgIHsgfQp9OwoKaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0oRGF0YSBjb25zdCYgbGhzLCBEYXRhIGNvbnN0JiByaHMpCnsKICAgIHJldHVybiBsaHMuYSA9PSByaHMuYSAmJiBsaHMuYiA9PSByaHMuYiAmJiBsaHMuYyA9PSByaHMuYyAmJiBsaHMuZCA9PSByaHMuZDsKfQoKaW50IG1haW4oKQp7CiAgICBib29zdDo6YXJyYXk8Ym9vc3Q6OmFycmF5PEJZVEUsIERBVEFfU0laRT4sIDI+IGNvbnN0IHNvdXJjZSA9CiAgICB7ewogICAgICAgIHt7IDB4MDEsIDB4ZmUsIDB4YWEsIDB4MDEsIDB4Y2MsIDB4MTMgfX0sCiAgICAgICAge3sgMHgwMiwgMHhhMSwgMHgwMiwgMHhiYiwgMHgwMiwgMHhkZCB9fQogICAgfX07CgogICAgc3RkOjp2ZWN0b3I8RGF0YT4gZGF0YV9saXN0KHNvdXJjZS5iZWdpbigpLCBzb3VyY2UuZW5kKCkpOwoKICAgIGFzc2VydChkYXRhX2xpc3RbMF0gPT0gRGF0YShzb3VyY2VbMF0pKTsKICAgIGFzc2VydChkYXRhX2xpc3RbMV0gPT0gRGF0YShzb3VyY2VbMV0pKTsKfQ==