![]() |
VR-Vantage 2.7 API Documentation
|
SAX-style JSON parser. Use Reader for UTF8 encoding and default allocator. More...
Classes | |
| struct | ClearStackOnExit |
| class | NumberStream< InputStream, false, false > |
| class | NumberStream< InputStream, true, false > |
| class | NumberStream< InputStream, true, true > |
| class | StackStream |
Public Types | |
| typedef SourceEncoding::Ch | Ch |
| SourceEncoding character type. | |
Public Member Functions | |
| GenericReader (StackAllocator *stackAllocator=0, size_t stackCapacity=kDefaultStackCapacity) | |
| Constructor. | |
| template<unsigned parseFlags, typename InputStream , typename Handler > | |
| ParseResult | Parse (InputStream &is, Handler &handler) |
| Parse JSON text. | |
| template<typename InputStream , typename Handler > | |
| ParseResult | Parse (InputStream &is, Handler &handler) |
| Parse JSON text (with kParseDefaultFlags) | |
| bool | HasParseError () const |
| Whether a parse error has occured in the last parsing. | |
| ParseErrorCode | GetParseErrorCode () const |
| Get the ParseErrorCode of last parsing. | |
| size_t | GetErrorOffset () const |
| Get the position of last parsing error in input, 0 otherwise. | |
Protected Member Functions | |
| void | SetParseError (ParseErrorCode code, size_t offset) |
Private Member Functions | |
| GenericReader (const GenericReader &) | |
| GenericReader & | operator= (const GenericReader &) |
| void | ClearStack () |
| template<unsigned parseFlags, typename InputStream > | |
| void | SkipWhitespaceAndComments (InputStream &is) |
| template<unsigned parseFlags, typename InputStream , typename Handler > | |
| void | ParseObject (InputStream &is, Handler &handler) |
| template<unsigned parseFlags, typename InputStream , typename Handler > | |
| void | ParseArray (InputStream &is, Handler &handler) |
| template<unsigned parseFlags, typename InputStream , typename Handler > | |
| void | ParseNull (InputStream &is, Handler &handler) |
| template<unsigned parseFlags, typename InputStream , typename Handler > | |
| void | ParseTrue (InputStream &is, Handler &handler) |
| template<unsigned parseFlags, typename InputStream , typename Handler > | |
| void | ParseFalse (InputStream &is, Handler &handler) |
| template<typename InputStream > | |
| unsigned | ParseHex4 (InputStream &is, size_t escapeOffset) |
| template<unsigned parseFlags, typename InputStream , typename Handler > | |
| void | ParseString (InputStream &is, Handler &handler, bool isKey=false) |
| template<unsigned parseFlags, typename SEncoding , typename TEncoding , typename InputStream , typename OutputStream > | |
| RAPIDJSON_FORCEINLINE void | ParseStringToStream (InputStream &is, OutputStream &os) |
| template<unsigned parseFlags, typename InputStream , typename Handler > | |
| void | ParseNumber (InputStream &is, Handler &handler) |
| template<unsigned parseFlags, typename InputStream , typename Handler > | |
| void | ParseValue (InputStream &is, Handler &handler) |
| RAPIDJSON_FORCEINLINE Token | Tokenize (Ch c) |
| RAPIDJSON_FORCEINLINE IterativeParsingState | Predict (IterativeParsingState state, Token token) |
| template<unsigned parseFlags, typename InputStream , typename Handler > | |
| RAPIDJSON_FORCEINLINE IterativeParsingState | Transit (IterativeParsingState src, Token token, IterativeParsingState dst, InputStream &is, Handler &handler) |
| template<typename InputStream > | |
| void | HandleError (IterativeParsingState src, InputStream &is) |
| template<unsigned parseFlags, typename InputStream , typename Handler > | |
| ParseResult | IterativeParse (InputStream &is, Handler &handler) |
Static Private Member Functions | |
| template<typename InputStream > | |
| static RAPIDJSON_FORCEINLINE bool | Consume (InputStream &is, typename InputStream::Ch expect) |
| template<typename InputStream , typename OutputStream > | |
| static RAPIDJSON_FORCEINLINE void | ScanCopyUnescapedString (InputStream &, OutputStream &) |
Private Attributes | |
| internal::Stack< StackAllocator > | stack_ |
| A stack for storing decoded string temporarily during non-destructive parsing. | |
| ParseResult | parseResult_ |
Static Private Attributes | |
| static const size_t | kDefaultStackCapacity = 256 |
| Default stack capacity in bytes for storing a single decoded string. | |
SAX-style JSON parser. Use Reader for UTF8 encoding and default allocator.
GenericReader parses JSON text from a stream, and send events synchronously to an object implementing Handler concept.
It needs to allocate a stack for storing a single decoded string during non-destructive parsing.
For in-situ parsing, the decoded string is directly written to the source text string, no temporary buffer is required.
A GenericReader object can be reused for parsing multiple JSON text.
| SourceEncoding | Encoding of the input stream. |
| TargetEncoding | Encoding of the parse output. |
| StackAllocator | Allocator type for stack. |
| typedef SourceEncoding::Ch GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::Ch |
SourceEncoding character type.
|
private |
|
private |
|
private |
|
inline |
Constructor.
| stackAllocator | Optional allocator for allocating stack memory. (Only use for non-destructive parsing) |
| stackCapacity | stack capacity in bytes for storing a single decoded string. (Only use for non-destructive parsing) |
|
private |
|
inline |
Parse JSON text.
| parseFlags | Combination of ParseFlag. |
| InputStream | Type of input stream, implementing Stream concept. |
| Handler | Type of handler, implementing Handler concept. |
| is | Input stream to be parsed. |
| handler | The handler to receive events. |
References ParseResult::Clear(), kParseErrorDocumentEmpty, kParseErrorDocumentRootNotSingular, kParseIterativeFlag, kParseStopWhenDoneFlag, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::parseResult_, RAPIDJSON_PARSE_ERROR_NORETURN, and RAPIDJSON_UNLIKELY.
|
inline |
Parse JSON text (with kParseDefaultFlags)
| InputStream | Type of input stream, implementing Stream concept |
| Handler | Type of handler, implementing Handler concept. |
| is | Input stream to be parsed. |
| handler | The handler to receive events. |
|
inline |
Whether a parse error has occured in the last parsing.
References ParseResult::IsError(), and GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::parseResult_.
Referenced by GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::HandleError(), and GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::Transit().
|
inline |
Get the ParseErrorCode of last parsing.
References ParseResult::Code(), and GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::parseResult_.
|
inline |
Get the position of last parsing error in input, 0 otherwise.
References ParseResult::Offset(), and GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::parseResult_.
|
inlineprotected |
|
private |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
References GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::Consume(), kParseErrorObjectMissColon, kParseErrorObjectMissCommaOrCurlyBracket, kParseErrorObjectMissName, kParseErrorTermination, kParseTrailingCommasFlag, RAPIDJSON_ASSERT, RAPIDJSON_PARSE_ERROR, RAPIDJSON_UNLIKELY, and SizeType.
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlinestaticprivate |
References RAPIDJSON_LIKELY.
Referenced by GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::ParseArray(), GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::ParseFalse(), GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::ParseNull(), GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::ParseNumber(), GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::ParseObject(), GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::ParseStringToStream(), GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::ParseTrue(), and GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::SkipWhitespaceAndComments().
|
inlineprivate |
|
inlineprivate |
References kParseErrorTermination, kParseInsituFlag, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::StackStream< CharType >::Length(), GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::StackStream< CharType >::Pop(), RAPIDJSON_ASSERT, RAPIDJSON_PARSE_ERROR, RAPIDJSON_UNLIKELY, SizeType, and GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::stack_.
|
inlineprivate |
References GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::Consume(), exprtk::details::numeric::constant::e, kParseErrorStringEscapeInvalid, kParseErrorStringInvalidEncoding, kParseErrorStringMissQuotationMark, kParseErrorStringUnicodeSurrogateInvalid, kParseValidateEncodingFlag, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::ParseHex4(), RAPIDJSON_LIKELY, RAPIDJSON_PARSE_ERROR, RAPIDJSON_UNLIKELY, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::ScanCopyUnescapedString(), and Z16.
|
inlinestaticprivate |
|
inlineprivate |
References GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::Consume(), kParseErrorNumberMissExponent, kParseErrorNumberMissFraction, kParseErrorNumberTooBig, kParseErrorTermination, kParseErrorValueInvalid, kParseFullPrecisionFlag, kParseInsituFlag, kParseNanAndInfFlag, kParseNumbersAsStringsFlag, RAPIDJSON_ASSERT, RAPIDJSON_LIKELY, RAPIDJSON_PARSE_ERROR, RAPIDJSON_UINT64_C2, RAPIDJSON_UNLIKELY, SizeType, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::stack_, internal::StrtodFullPrecision(), and internal::StrtodNormalPrecision().
|
inlineprivate |
|
inlineprivate |
References GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::ColonToken, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::CommaToken, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::FalseToken, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::LeftBracketToken, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::LeftCurlyBracketToken, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::NullToken, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::NumberToken, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::RightBracketToken, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::RightCurlyBracketToken, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::StringToken, and GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::TrueToken.
Referenced by GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParse().
|
inlineprivate |
References GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::cIterativeParsingStateCount, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingArrayFinishState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingArrayInitialState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingElementDelimiterState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingElementState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingErrorState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingKeyValueDelimiterState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingMemberDelimiterState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingMemberKeyState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingMemberValueState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingObjectFinishState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingObjectInitialState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingValueState, and GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::kTokenCount.
Referenced by GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParse().
|
inlineprivate |
References GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::ColonToken, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::HasParseError(), GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingArrayFinishState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingArrayInitialState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingElementDelimiterState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingElementState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingErrorState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingFinishState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingKeyValueDelimiterState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingMemberDelimiterState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingMemberKeyState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingMemberValueState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingObjectFinishState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingObjectInitialState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingStartState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingValueState, kParseErrorObjectMissName, kParseErrorTermination, kParseErrorValueInvalid, kParseTrailingCommasFlag, RAPIDJSON_ASSERT, RAPIDJSON_PARSE_ERROR_NORETURN, SizeType, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::stack_, and void().
|
inlineprivate |
References GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::HasParseError(), GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingArrayInitialState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingElementDelimiterState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingElementState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingFinishState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingKeyValueDelimiterState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingMemberDelimiterState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingMemberKeyState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingMemberValueState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingObjectInitialState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingStartState, kParseErrorArrayMissCommaOrSquareBracket, kParseErrorDocumentEmpty, kParseErrorDocumentRootNotSingular, kParseErrorObjectMissColon, kParseErrorObjectMissCommaOrCurlyBracket, kParseErrorObjectMissName, kParseErrorValueInvalid, RAPIDJSON_ASSERT, and RAPIDJSON_PARSE_ERROR.
Referenced by GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParse().
|
inlineprivate |
References ParseResult::Clear(), GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::HandleError(), GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingErrorState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingFinishState, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParsingStartState, kParseStopWhenDoneFlag, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::parseResult_, GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::Predict(), and GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::Tokenize().
|
staticprivate |
Default stack capacity in bytes for storing a single decoded string.
|
private |
A stack for storing decoded string temporarily during non-destructive parsing.
Referenced by GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::ClearStack(), GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::ParseNumber(), GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::ParseString(), and GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::Transit().
|
private |
Referenced by GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::GetErrorOffset(), GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::GetParseErrorCode(), GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::HasParseError(), GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::IterativeParse(), GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::Parse(), and GenericReader< SourceEncoding, TargetEncoding, StackAllocator >::SetParseError().