Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qjsonparser.cpp File Reference

(8d6349670146cc6dd0b225577831ee30a4d11be5)

#include <qcoreapplication.h>
#include <qdebug.h>
#include "qjsonparser_p.h"
#include "qjson_p.h"
#include "private/qstringconverter_p.h"
#include "private/qcborvalue_p.h"
#include "private/qnumeric_p.h"
#include <private/qtools_p.h>
Include dependency graph for qjsonparser.cpp:

Go to the source code of this file.

Classes

class  StashedContainer

Macros

#define JSONERR_OK   QT_TRANSLATE_NOOP("QJsonParseError", "no error occurred")
#define JSONERR_UNTERM_OBJ   QT_TRANSLATE_NOOP("QJsonParseError", "unterminated object")
#define JSONERR_MISS_NSEP   QT_TRANSLATE_NOOP("QJsonParseError", "missing name separator")
#define JSONERR_UNTERM_AR   QT_TRANSLATE_NOOP("QJsonParseError", "unterminated array")
#define JSONERR_MISS_VSEP   QT_TRANSLATE_NOOP("QJsonParseError", "missing value separator")
#define JSONERR_ILLEGAL_VAL   QT_TRANSLATE_NOOP("QJsonParseError", "illegal value")
#define JSONERR_END_OF_NUM   QT_TRANSLATE_NOOP("QJsonParseError", "invalid termination by number")
#define JSONERR_ILLEGAL_NUM   QT_TRANSLATE_NOOP("QJsonParseError", "illegal number")
#define JSONERR_STR_ESC_SEQ   QT_TRANSLATE_NOOP("QJsonParseError", "invalid escape sequence")
#define JSONERR_STR_UTF8   QT_TRANSLATE_NOOP("QJsonParseError", "invalid UTF8 string")
#define JSONERR_UTERM_STR   QT_TRANSLATE_NOOP("QJsonParseError", "unterminated string")
#define JSONERR_MISS_OBJ   QT_TRANSLATE_NOOP("QJsonParseError", "object is missing after a comma")
#define JSONERR_DEEP_NEST   QT_TRANSLATE_NOOP("QJsonParseError", "too deeply nested document")
#define JSONERR_DOC_LARGE   QT_TRANSLATE_NOOP("QJsonParseError", "too large document")
#define JSONERR_GARBAGEEND   QT_TRANSLATE_NOOP("QJsonParseError", "garbage at the end of the document")

Enumerations

enum  {
  Space = 0x20 , Tab = 0x09 , LineFeed = 0x0a , Return = 0x0d ,
  BeginArray = 0x5b , BeginObject = 0x7b , EndArray = 0x5d , EndObject = 0x7d ,
  NameSeparator = 0x3a , ValueSeparator = 0x2c , Quote = 0x22 , Space = 0x20 ,
  Tab = 0x09 , LineFeed = 0x0a , Return = 0x0d , BeginArray = 0x5b ,
  BeginObject = 0x7b , EndArray = 0x5d , EndObject = 0x7d , NameSeparator = 0x3a ,
  ValueSeparator = 0x2c , Quote = 0x22
}
enum  {
  Space = 0x20 , Tab = 0x09 , LineFeed = 0x0a , Return = 0x0d ,
  BeginArray = 0x5b , BeginObject = 0x7b , EndArray = 0x5d , EndObject = 0x7d ,
  NameSeparator = 0x3a , ValueSeparator = 0x2c , Quote = 0x22 , Space = 0x20 ,
  Tab = 0x09 , LineFeed = 0x0a , Return = 0x0d , BeginArray = 0x5b ,
  BeginObject = 0x7b , EndArray = 0x5d , EndObject = 0x7d , NameSeparator = 0x3a ,
  ValueSeparator = 0x2c , Quote = 0x22
}

Functions

template<typename Iterator, typename Compare, typename Assign>
static Iterator customAssigningUniqueLast (Iterator first, Iterator last, Compare compare, Assign assign)
static void sortContainer (QCborContainerPrivate *container)
static bool addHexDigit (char digit, char32_t *result)
static bool scanEscapeSequence (const char *&json, const char *end, char32_t *ch)
static bool scanUtf8Char (const char *&json, const char *end, char32_t *result)

Variables

static const int nestingLimit = 1024

Macro Definition Documentation

◆ JSONERR_DEEP_NEST

#define JSONERR_DEEP_NEST   QT_TRANSLATE_NOOP("QJsonParseError", "too deeply nested document")

Definition at line 36 of file qjsonparser.cpp.

◆ JSONERR_DOC_LARGE

#define JSONERR_DOC_LARGE   QT_TRANSLATE_NOOP("QJsonParseError", "too large document")

Definition at line 37 of file qjsonparser.cpp.

◆ JSONERR_END_OF_NUM

#define JSONERR_END_OF_NUM   QT_TRANSLATE_NOOP("QJsonParseError", "invalid termination by number")

Definition at line 30 of file qjsonparser.cpp.

◆ JSONERR_GARBAGEEND

#define JSONERR_GARBAGEEND   QT_TRANSLATE_NOOP("QJsonParseError", "garbage at the end of the document")

Definition at line 38 of file qjsonparser.cpp.

◆ JSONERR_ILLEGAL_NUM

#define JSONERR_ILLEGAL_NUM   QT_TRANSLATE_NOOP("QJsonParseError", "illegal number")

Definition at line 31 of file qjsonparser.cpp.

◆ JSONERR_ILLEGAL_VAL

#define JSONERR_ILLEGAL_VAL   QT_TRANSLATE_NOOP("QJsonParseError", "illegal value")

Definition at line 29 of file qjsonparser.cpp.

◆ JSONERR_MISS_NSEP

#define JSONERR_MISS_NSEP   QT_TRANSLATE_NOOP("QJsonParseError", "missing name separator")

Definition at line 26 of file qjsonparser.cpp.

◆ JSONERR_MISS_OBJ

#define JSONERR_MISS_OBJ   QT_TRANSLATE_NOOP("QJsonParseError", "object is missing after a comma")

Definition at line 35 of file qjsonparser.cpp.

◆ JSONERR_MISS_VSEP

#define JSONERR_MISS_VSEP   QT_TRANSLATE_NOOP("QJsonParseError", "missing value separator")

Definition at line 28 of file qjsonparser.cpp.

◆ JSONERR_OK

#define JSONERR_OK   QT_TRANSLATE_NOOP("QJsonParseError", "no error occurred")

Definition at line 24 of file qjsonparser.cpp.

◆ JSONERR_STR_ESC_SEQ

#define JSONERR_STR_ESC_SEQ   QT_TRANSLATE_NOOP("QJsonParseError", "invalid escape sequence")

Definition at line 32 of file qjsonparser.cpp.

◆ JSONERR_STR_UTF8

#define JSONERR_STR_UTF8   QT_TRANSLATE_NOOP("QJsonParseError", "invalid UTF8 string")

Definition at line 33 of file qjsonparser.cpp.

◆ JSONERR_UNTERM_AR

#define JSONERR_UNTERM_AR   QT_TRANSLATE_NOOP("QJsonParseError", "unterminated array")

Definition at line 27 of file qjsonparser.cpp.

◆ JSONERR_UNTERM_OBJ

#define JSONERR_UNTERM_OBJ   QT_TRANSLATE_NOOP("QJsonParseError", "unterminated object")

Definition at line 25 of file qjsonparser.cpp.

◆ JSONERR_UTERM_STR

#define JSONERR_UTERM_STR   QT_TRANSLATE_NOOP("QJsonParseError", "unterminated string")

Definition at line 34 of file qjsonparser.cpp.

Enumeration Type Documentation

◆ anonymous enum [1/2]

anonymous enum
Enumerator
Space 
Tab 
LineFeed 
Return 
BeginArray 
BeginObject 
EndArray 
EndObject 
NameSeparator 
ValueSeparator 
Quote 
Space 
Tab 
LineFeed 
Return 
BeginArray 
BeginObject 
EndArray 
EndObject 
NameSeparator 
ValueSeparator 
Quote 

Definition at line 216 of file qjsonparser.cpp.

◆ anonymous enum [2/2]

anonymous enum
Enumerator
Space 
Tab 
LineFeed 
Return 
BeginArray 
BeginObject 
EndArray 
EndObject 
NameSeparator 
ValueSeparator 
Quote 
Space 
Tab 
LineFeed 
Return 
BeginArray 
BeginObject 
EndArray 
EndObject 
NameSeparator 
ValueSeparator 
Quote 

Definition at line 216 of file qjsonparser.cpp.

Function Documentation

◆ addHexDigit()

bool addHexDigit ( char digit,
char32_t * result )
inlinestatic

Definition at line 730 of file qjsonparser.cpp.

Referenced by scanEscapeSequence().

Here is the caller graph for this function:

◆ customAssigningUniqueLast()

template<typename Iterator, typename Compare, typename Assign>
Iterator customAssigningUniqueLast ( Iterator first,
Iterator last,
Compare compare,
Assign assign )
static

Definition at line 333 of file qjsonparser.cpp.

◆ scanEscapeSequence()

bool scanEscapeSequence ( const char *& json,
const char * end,
char32_t * ch )
inlinestatic

Definition at line 742 of file qjsonparser.cpp.

References addHexDigit().

Here is the call graph for this function:

◆ scanUtf8Char()

bool scanUtf8Char ( const char *& json,
const char * end,
char32_t * result )
inlinestatic

Definition at line 786 of file qjsonparser.cpp.

◆ sortContainer()

void sortContainer ( QCborContainerPrivate * container)
static

Definition at line 363 of file qjsonparser.cpp.

Variable Documentation

◆ nestingLimit

const int nestingLimit = 1024
static

Definition at line 17 of file qjsonparser.cpp.