Пример #1
0
void component::parseImpl
	(ref <utility::parserInputStreamAdapter> parser, const utility::stream::size_type position,
	 const utility::stream::size_type end, utility::stream::size_type* newPosition)
{
	const std::string buffer = parser->extract(position, end);
	parseImpl(buffer, 0, buffer.length(), newPosition);

	// Recursivey offset parsed bounds on children
	if (position != 0)
		offsetParsedBounds(position);

	if (newPosition != NULL)
		*newPosition += position;
}
Пример #2
0
void component::parseImpl
	(const parsingContext& ctx, shared_ptr <utility::parserInputStreamAdapter> parser,
	 size_t position, size_t end, size_t* newPosition)
{
	// This is the default implementation for parsing from an input stream:
	// actually, we extract the substring and use the "parse from string" implementation
	const string &buffer = parser->extract(position, end);
	parseImpl(ctx, buffer, 0, buffer.length(), newPosition);

	// Recursivey offset parsed bounds on children
	if (position != 0)
		offsetParsedBounds(position);

	if (newPosition)
		*newPosition += position;
}