LINUX.ORG.RU

скопировать raw data с помощью boost::spirit

 ,


0

2

привет всем.

подскажите, что я делаю не так и как правильно скопировать байты в вектор, когда пишу правило для 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)]
	]
	)


Последнее исправление: plusPlus (всего исправлений: 4)

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.