Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qv4jsonobject_p.h
Go to the documentation of this file.
1
// Copyright (C) 2016 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
// Qt-Security score:significant
4
#
ifndef
QV4JSONOBJECT_H
5
#
define
QV4JSONOBJECT_H
6
7
//
8
// W A R N I N G
9
// -------------
10
//
11
// This file is not part of the Qt API. It exists purely as an
12
// implementation detail. This header file may change from version to
13
// version without notice, or even be removed.
14
//
15
// We mean it.
16
//
17
18
#
include
"qv4object_p.h"
19
#
include
<
qjsonarray
.
h
>
20
#
include
<
qjsonobject
.
h
>
21
#
include
<
qjsonvalue
.
h
>
22
#
include
<
qjsondocument
.
h
>
23
#
include
<
qhash
.
h
>
24
25
QT_BEGIN_NAMESPACE
26
27
namespace
QV4
{
28
29
namespace
Heap
{
30
31
struct
JsonObject
:
Object
{
32
void
init
();
33
};
34
35
}
36
37
struct
ObjectItem
{
38
const
QV4
::Object *
o
;
39
ObjectItem
(
const
QV4
::Object *o) :
o
(o) {}
40
};
41
42
inline
bool
operator
==(
const
ObjectItem
&a,
const
ObjectItem
&b)
43
{
return
a
.
o
->d() == b
.
o
->d(); }
44
45
inline
size_t
qHash
(
const
ObjectItem
&i, size_t seed = 0)
46
{
return
::qHash((
void
*)i
.
o
->d(), seed); }
47
48
struct
JsonObject
:
Object
{
49
Q_MANAGED_TYPE
(JsonObject)
50
V4_OBJECT2(
JsonObject
, Object)
51
private
:
52
53
typedef
QSet
<
ObjectItem
>
V4ObjectSet
;
54
public
:
55
56
static
ReturnedValue
method_parse
(
const
FunctionObject *,
const
Value *thisObject,
const
Value *argv,
int
argc);
57
static
ReturnedValue
method_stringify
(
const
FunctionObject *,
const
Value *thisObject,
const
Value *argv,
int
argc);
58
59
static
ReturnedValue
fromJsonValue
(ExecutionEngine *engine,
const
QJsonValue &value);
60
static
ReturnedValue
fromJsonObject
(ExecutionEngine *engine,
const
QJsonObject &object);
61
static
ReturnedValue
fromJsonArray
(ExecutionEngine *engine,
const
QJsonArray &array);
62
63
static
inline
QJsonValue
toJsonValue
(
const
QV4
::Value &value)
64
{ V4ObjectSet visitedObjects;
return
toJsonValue(value, visitedObjects); }
65
static
inline
QJsonObject
toJsonObject
(
const
QV4
::Object *o)
66
{ V4ObjectSet visitedObjects;
return
toJsonObject(o, visitedObjects); }
67
static
inline
QJsonArray
toJsonArray
(
const
QV4
::Object *o)
68
{ V4ObjectSet visitedObjects;
return
toJsonArray(o, visitedObjects); }
69
70
private
:
71
static
QJsonValue toJsonValue(
const
QV4
::Value &value, V4ObjectSet &visitedObjects);
72
static
QJsonObject toJsonObject(
const
Object *o, V4ObjectSet &visitedObjects);
73
static
QJsonArray toJsonArray(
const
Object *o, V4ObjectSet &visitedObjects);
74
};
75
76
class
JsonParser
77
{
78
public
:
79
JsonParser
(ExecutionEngine *engine,
const
QChar *json,
int
length);
80
81
ReturnedValue
parse
(QJsonParseError *error);
82
83
private
:
84
inline
bool
eatSpace();
85
inline
QChar nextToken();
86
87
ReturnedValue parseObject();
88
ReturnedValue parseArray();
89
bool
parseMember(Object *o);
90
bool
parseString(QString *string);
91
bool
parseValue(Value *val);
92
bool
parseNumber(Value *val);
93
94
ExecutionEngine *engine;
95
const
QChar *head;
96
const
QChar *json;
97
const
QChar *end;
98
99
int
nestingLevel;
100
QJsonParseError::ParseError lastError;
101
};
102
103
}
104
105
QT_END_NAMESPACE
106
107
#
endif
QV4::JsonParser
Definition
qv4jsonobject_p.h:77
QV4::JsonParser::JsonParser
JsonParser(ExecutionEngine *engine, const QChar *json, int length)
Definition
qv4jsonobject.cpp:41
QV4::JsonParser::parse
ReturnedValue parse(QJsonParseError *error)
Definition
qv4jsonobject.cpp:131
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
QV4::Heap
Definition
qv4compileddata_p.h:76
QV4
Definition
qjsvalue.h:24
QV4::operator==
bool operator==(const ObjectItem &a, const ObjectItem &b)
Definition
qv4jsonobject_p.h:42
QV4::qHash
size_t qHash(const ObjectItem &i, size_t seed=0)
Definition
qv4jsonobject_p.h:45
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
DEBUG
#define DEBUG
Definition
qfilesystemwatcher_fsevents.mm:24
BeginObject
@ BeginObject
Definition
qjsonparser.cpp:222
LineFeed
@ LineFeed
Definition
qjsonparser.cpp:219
EndObject
@ EndObject
Definition
qjsonparser.cpp:224
BeginArray
@ BeginArray
Definition
qjsonparser.cpp:221
ValueSeparator
@ ValueSeparator
Definition
qjsonparser.cpp:226
Quote
@ Quote
Definition
qjsonparser.cpp:227
Tab
@ Tab
Definition
qjsonparser.cpp:218
Space
@ Space
Definition
qjsonparser.cpp:217
NameSeparator
@ NameSeparator
Definition
qjsonparser.cpp:225
EndArray
@ EndArray
Definition
qjsonparser.cpp:223
Return
@ Return
Definition
qjsonparser.cpp:220
END
#define END(function)
Definition
qt_mips_asm_dsp_p.h:88
scanEscapeSequence
static bool scanEscapeSequence(const QChar *&json, const QChar *end, uint *ch)
Definition
qv4jsonobject.cpp:506
nestingLimit
static const int nestingLimit
Definition
qv4jsonobject.cpp:38
DEFINE_OBJECT_VTABLE
DEFINE_OBJECT_VTABLE(JsonObject)
addHexDigit
static bool addHexDigit(QChar digit, uint *result)
Definition
qv4jsonobject.cpp:491
BEGIN
#define BEGIN
Definition
qv4jsonobject.cpp:30
Q_MANAGED_TYPE
#define Q_MANAGED_TYPE(type)
Definition
qv4managed_p.h:61
CHECK_EXCEPTION
#define CHECK_EXCEPTION()
Definition
qv4scopedvalue_p.h:41
RETURN_UNDEFINED
#define RETURN_UNDEFINED()
Definition
qv4scopedvalue_p.h:48
RETURN_RESULT
#define RETURN_RESULT(r)
Definition
qv4scopedvalue_p.h:51
QV4::BooleanObject
Definition
qv4object_p.h:432
QV4::BooleanObject::value
bool value() const
Definition
qv4object_p.h:437
QV4::Heap::JsonObject
Definition
qv4jsonobject_p.h:31
QV4::Heap::JsonObject::init
void init()
Definition
qv4jsonobject.cpp:874
QV4::JsonObject
Definition
qv4jsonobject_p.h:48
QV4::JsonObject::fromJsonValue
static ReturnedValue fromJsonValue(ExecutionEngine *engine, const QJsonValue &value)
Definition
qv4jsonobject.cpp:959
QV4::JsonObject::fromJsonObject
static ReturnedValue fromJsonObject(ExecutionEngine *engine, const QJsonObject &object)
Definition
qv4jsonobject.cpp:1005
QV4::JsonObject::toJsonArray
static QJsonArray toJsonArray(const QV4::Object *o)
Definition
qv4jsonobject_p.h:67
QV4::JsonObject::fromJsonArray
static ReturnedValue fromJsonArray(ExecutionEngine *engine, const QJsonArray &array)
Definition
qv4jsonobject.cpp:1053
QV4::JsonObject::method_parse
static ReturnedValue method_parse(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
Definition
qv4jsonobject.cpp:887
QV4::JsonObject::toJsonObject
static QJsonObject toJsonObject(const QV4::Object *o)
Definition
qv4jsonobject_p.h:65
QV4::JsonObject::method_stringify
static ReturnedValue method_stringify(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
Definition
qv4jsonobject.cpp:906
QV4::JsonObject::toJsonValue
static QJsonValue toJsonValue(const QV4::Value &value)
Definition
qv4jsonobject_p.h:63
QV4::NumberObject
Definition
qv4object_p.h:441
QV4::NumberObject::value
double value() const
Definition
qv4object_p.h:446
QV4::ObjectItem
Definition
qv4jsonobject_p.h:37
QV4::ObjectItem::ObjectItem
ObjectItem(const QV4::Object *o)
Definition
qv4jsonobject_p.h:39
QV4::ObjectItem::o
const QV4::Object * o
Definition
qv4jsonobject_p.h:38
qtdeclarative
src
qml
jsruntime
qv4jsonobject_p.h
Generated on
for Qt by
1.18.0