bool Uri::Private::parseRelativeRef() { if (!parseRelativePart()) { return false; } if (expectChar('?')) { parseQuery(); } if (expectChar('#')) { parseFragment(); } return true; }
void URI::parsePathEtc(std::string::const_iterator& it, const std::string::const_iterator& end) { if (it == end) return; if (*it != '?' && *it != '#') parsePath(it, end); if (it != end && *it == '?') { ++it; parseQuery(it, end); } if (it != end && *it == '#') { ++it; parseFragment(it, end); } }
bool Uri::Private::parseURI() { if (!parseScheme()) { return false; } if (!expectChar(':')) { return false; } if (!parseHierPart()) { return false; } if (expectChar('?')) { parseQuery(); } if (expectChar('#')) { parseFragment(); } return true; }
int URI::parse(int p0) { int p = p0; int p2 = parseScheme(p); if (p2 < 0) { error("Scheme"); return -1; } p = p2; p2 = parseHierarchicalPart(p); if (p2 < 0) { error("Hierarchical part"); return -1; } p = p2; p2 = parseQuery(p); if (p2 < 0) { error("Query"); return -1; } p = p2; p2 = parseFragment(p); if (p2 < 0) { error("Fragment"); return -1; } p = p2; return p; }