MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / IterativeParse

Method IterativeParse

Source/ThirdParty/rapidjson/reader.h:2192–2224  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2190
2191 template <unsigned parseFlags, typename InputStream, typename Handler>
2192 ParseResult IterativeParse(InputStream& is, Handler& handler) {
2193 parseResult_.Clear();
2194 ClearStackOnExit scope(*this);
2195 IterativeParsingState state = IterativeParsingStartState;
2196
2197 SkipWhitespaceAndComments<parseFlags>(is);
2198 RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);
2199 while (is.Peek() != '\0') {
2200 Token t = Tokenize(is.Peek());
2201 IterativeParsingState n = Predict(state, t);
2202 IterativeParsingState d = Transit<parseFlags>(state, t, n, is, handler);
2203
2204 if (d == IterativeParsingErrorState) {
2205 HandleError(state, is);
2206 break;
2207 }
2208
2209 state = d;
2210
2211 // Do not further consume streams if a root JSON has been parsed.
2212 if ((parseFlags & kParseStopWhenDoneFlag) && state == IterativeParsingFinishState)
2213 break;
2214
2215 SkipWhitespaceAndComments<parseFlags>(is);
2216 RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);
2217 }
2218
2219 // Handle the end of file.
2220 if (state != IterativeParsingFinishState)
2221 HandleError(state, is);
2222
2223 return parseResult_;
2224 }
2225
2226 static const size_t kDefaultStackCapacity = 256; //!< Default stack capacity in bytes for storing a single decoded string.
2227 internal::Stack<StackAllocator> stack_; //!< A stack for storing decoded string temporarily during non-destructive parsing.

Callers

nothing calls this directly

Calls 2

ClearMethod · 0.45
PeekMethod · 0.45

Tested by

no test coverage detected