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; }
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; }