привет всем.
подскажите, что я делаю не так и как правильно скопировать байты в вектор, когда пишу правило для boost::spirit
вот пример кода. создаю структуру, типа пакет, куда помещается распарсенные данные. длина(первые два байта) парсятся. но потом в правиле для парсера что то не так, компилятор ругается. подскажите как в динамике правило написать для вытаскивания данных и помещения в вектор с помощью спирита.
struct data
{
int i;
boost::uint16_t len;
std::vector<unsigned char> payload;
data() :
len(0),
i(0),
{}
};
char const test_packet[] =
{
0x00, 0x08, 0x02, 0x00, 0x01, 0x00, 0x01, 0x09,
0x00, 0x09
};
struct data data;
parse( test_packet,
test_packet+10,
big_word[ ref(data.len) = _1 ]
>> for_p( var(data.i) = 0, var(data.i) < var(data.len), ++var(data.i))
[
byte_[push_back_a(var(data.payload), _1)]
]
)