Lines Matching refs:P
56 PathParser(string_view_t P, ParserState State) noexcept : Path(P), State_(State) {} in PathParser()
59 PathParser(string_view_t P, string_view_t E, unsigned char S) in PathParser()
60 : Path(P), RawEntry(E), State_(static_cast<ParserState>(S)) { in PathParser()
64 static PathParser CreateBegin(string_view_t P) noexcept { in CreateBegin()
65 PathParser PP(P, PS_BeforeBegin); in CreateBegin()
70 static PathParser CreateEnd(string_view_t P) noexcept { in CreateEnd()
71 PathParser PP(P, PS_AtEnd); in CreateEnd()
259 PosPtr consumeAllSeparators(PosPtr P, PosPtr End) const noexcept { in consumeAllSeparators()
260 if (P == nullptr || P == End || !isSeparator(*P)) in consumeAllSeparators()
262 const int Inc = P < End ? 1 : -1; in consumeAllSeparators()
263 P += Inc; in consumeAllSeparators()
264 while (P != End && isSeparator(*P)) in consumeAllSeparators()
265 P += Inc; in consumeAllSeparators()
266 return P; in consumeAllSeparators()
270 PosPtr consumeNSeparators(PosPtr P, PosPtr End, int N) const noexcept { in consumeNSeparators()
271 PosPtr Ret = consumeAllSeparators(P, End); in consumeNSeparators()
274 if (P < End) { in consumeNSeparators()
275 if (Ret == P + N) in consumeNSeparators()
278 if (Ret == P - N) in consumeNSeparators()
284 PosPtr consumeName(PosPtr P, PosPtr End) const noexcept { in consumeName()
285 PosPtr Start = P; in consumeName()
286 if (P == nullptr || P == End || isSeparator(*P)) in consumeName()
288 const int Inc = P < End ? 1 : -1; in consumeName()
289 P += Inc; in consumeName()
290 while (P != End && !isSeparator(*P)) in consumeName()
291 P += Inc; in consumeName()
292 if (P == End && Inc < 0) { in consumeName()
300 return P; in consumeName()
303 PosPtr consumeDriveLetter(PosPtr P, PosPtr End) const noexcept { in consumeDriveLetter()
304 if (P == End) in consumeDriveLetter()
306 if (P < End) { in consumeDriveLetter()
307 if (P + 1 == End || !isDriveLetter(P[0]) || P[1] != ':') in consumeDriveLetter()
309 return P + 2; in consumeDriveLetter()
311 if (P - 1 == End || !isDriveLetter(P[-1]) || P[0] != ':') in consumeDriveLetter()
313 return P - 2; in consumeDriveLetter()
317 PosPtr consumeNetworkRoot(PosPtr P, PosPtr End) const noexcept { in consumeNetworkRoot()
318 if (P == End) in consumeNetworkRoot()
320 if (P < End) in consumeNetworkRoot()
321 return consumeName(consumeNSeparators(P, End, 2), End); in consumeNetworkRoot()
323 return consumeNSeparators(consumeName(P, End), End, 2); in consumeNetworkRoot()
326 PosPtr consumeRootName(PosPtr P, PosPtr End) const noexcept { in consumeRootName()
328 if (PosPtr Ret = consumeDriveLetter(P, End)) in consumeRootName()
330 if (PosPtr Ret = consumeNetworkRoot(P, End)) in consumeRootName()