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
qv4qobjectwrapper_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
5
#
ifndef
QV4QOBJECTWRAPPER_P_H
6
#
define
QV4QOBJECTWRAPPER_P_H
7
8
//
9
// W A R N I N G
10
// -------------
11
//
12
// This file is not part of the Qt API. It exists purely as an
13
// implementation detail. This header file may change from version to
14
// version without notice, or even be removed.
15
//
16
// We mean it.
17
//
18
19
#
include
<
private
/
qbipointer_p
.
h
>
20
#
include
<
private
/
qintrusivelist_p
.
h
>
21
#
include
<
private
/
qqmldata_p
.
h
>
22
#
include
<
private
/
qv4functionobject_p
.
h
>
23
#
include
<
private
/
qv4lookup_p
.
h
>
24
#
include
<
private
/
qv4value_p
.
h
>
25
26
#
include
<
QtCore
/
qglobal
.
h
>
27
#
include
<
QtCore
/
qmetatype
.
h
>
28
#
include
<
QtCore
/
qhash
.
h
>
29
30
#
include
<
utility
>
31
32
QT_BEGIN_NAMESPACE
33
34
Q_DECLARE_LOGGING_CATEGORY
(
lcBuiltinsBindingRemoval
)
35
36
class
QObject;
37
class
QQmlData;
38
class
QQmlPropertyCache;
39
class
QQmlPropertyData
;
40
class
QQmlObjectOrGadget;
41
42
namespace
QV4
{
43
struct
QObjectSlotDispatcher
;
44
45
namespace
Heap
{
46
47
struct
QQmlValueTypeWrapper;
48
49
struct
Q_QML_EXPORT
QObjectWrapper
:
Object
{
50
void
init
(
QObject
*
object
)
51
{
52
Object
::
init
();
53
qObj
.
init
(
object
);
54
}
55
56
void
destroy
() {
57
qObj
.
destroy
();
58
Object
::
destroy
();
59
}
60
61
QObject
*
object
()
const
{
return
qObj
.
data
(); }
62
static
void
markObjects
(
Heap
::
Base
*
that
,
MarkStack
*
markStack
);
63
64
private
:
65
QV4QPointer
<
QObject
>
qObj
;
66
};
67
68
#
define
QObjectMethodMembers
(
class
,
Member
)
69
Member
(
class
,
Pointer
,
Object
*
,
wrapper
)
70
71
DECLARE_EXPORTED_HEAP_OBJECT
(QObjectMethod, FunctionObject) {
72
DECLARE_MARKOBJECTS(QObjectMethod)
73
74
QQmlPropertyData
*methods;
75
alignas
(
alignof
(QQmlPropertyData))
std
::byte _singleMethod[
sizeof
(QQmlPropertyData)];
76
int
methodCount;
77
int
index;
78
79
void
init(
QV4
::ExecutionEngine *engine, Object *wrapper,
int
index);
80
void
destroy()
81
{
82
if
(methods !=
reinterpret_cast
<
const
QQmlPropertyData *>(&_singleMethod))
83
delete
[] methods;
84
FunctionObject::destroy();
85
}
86
87
void
ensureMethodsCache(
const
QMetaObject *thisMeta);
88
QString name()
const
;
89
90
const
QMetaObject *metaObject()
const
;
91
QObject *object()
const
;
92
93
bool
isDetached()
const
;
94
bool
isAttachedTo(QObject *o)
const
;
95
96
enum
ThisObjectMode {
97
Invalid,
98
Included,
99
Explicit,
100
};
101
102
QV4::Heap::QObjectMethod::ThisObjectMode checkThisObject(
const
QMetaObject *thisMeta)
const
;
103
};
104
105
struct
QmlSignalHandler
:
Object
{
106
void
init
(QObject *object,
int
signalIndex);
107
void
destroy
() {
108
qObj.destroy();
109
Object::destroy();
110
}
111
int
signalIndex
;
112
113
QObject *
object
()
const
{
return
qObj.data(); }
114
void
setObject
(QObject *o) { qObj = o; }
115
116
private
:
117
QV4QPointer<QObject> qObj;
118
};
119
120
}
121
122
struct
Q_QML_EXPORT
QObjectWrapper
:
public
Object
123
{
124
V4_OBJECT2
(
QObjectWrapper
,
Object
)
125
Q_MANAGED_TYPE
(
V4QObjectWrapper
)
126
V4_NEEDS_DESTROY
127
128
enum
Flag
{
129
NoFlag
= 0x0,
130
CheckRevision
= 0x1,
131
AttachMethods
= 0x2,
132
AllowOverride
= 0x4,
133
IncludeImports
= 0x8,
134
};
135
136
Q_DECLARE_FLAGS
(
Flags
,
Flag
);
137
138
static
void
initializeBindings
(
ExecutionEngine
*
engine
);
139
140
const
QMetaObject
*
metaObject
()
const
141
{
142
if
(
QObject
*
o
=
object
())
143
return
o
->
metaObject
();
144
return
nullptr
;
145
}
146
147
QObject
*
object
()
const
{
return
d
()->
object
(); }
148
149
ReturnedValue
getQmlProperty
(
150
const
QQmlRefPointer
<
QQmlContextData
> &
qmlContext
,
String
*
name
,
151
Flags
flags
,
bool
*
hasProperty
=
nullptr
)
const
;
152
153
static
ReturnedValue
getQmlProperty
(
154
ExecutionEngine
*
engine
,
const
QQmlRefPointer
<
QQmlContextData
> &
qmlContext
,
155
Heap
::
Object
*
wrapper
,
QObject
*
object
,
String
*
name
,
Flags
flags
,
156
bool
*
hasProperty
=
nullptr
,
const
QQmlPropertyData
**
property
=
nullptr
);
157
158
static
bool
setQmlProperty
(
159
ExecutionEngine
*
engine
,
const
QQmlRefPointer
<
QQmlContextData
> &
qmlContext
,
160
QObject
*
object
,
String
*
name
,
Flags
flags
,
const
Value
&
value
);
161
162
Q_NODISCARD_X
(
"Use ensureWrapper if you don't need the return value"
)
163
static
ReturnedValue
wrap
(
ExecutionEngine
*
engine
,
QObject
*
object
);
164
Q_NODISCARD_X
(
"Throwing the const wrapper away can cause it to be garbage collected"
)
165
static
ReturnedValue
wrapConst
(
ExecutionEngine
*
engine
,
QObject
*
object
);
166
static
void
ensureWrapper
(
ExecutionEngine
*
engine
,
QObject
*
object
);
167
static
void
markWrapper
(
QObject
*
object
,
MarkStack
*
markStack
);
168
169
using
Object
::
get
;
170
171
static
void
setProperty
(
ExecutionEngine
*
engine
,
QObject
*
object
,
int
propertyIndex
,
const
Value
&
value
);
172
void
setProperty
(
ExecutionEngine
*
engine
,
int
propertyIndex
,
const
Value
&
value
);
173
static
void
setProperty
(
174
ExecutionEngine
*
engine
,
QObject
*
object
,
175
const
QQmlPropertyData
*
property
,
const
Value
&
value
);
176
177
void
destroyObject
(
bool
lastCall
);
178
179
static
ReturnedValue
getProperty
(
180
ExecutionEngine
*
engine
,
Heap
::
Object
*
wrapper
,
QObject
*
object
,
181
const
QQmlPropertyData
*
property
,
Flags
flags
);
182
183
static
ReturnedValue
virtualResolveLookupGetter
(
const
Object
*
object
,
ExecutionEngine
*
engine
,
Lookup
*
lookup
);
184
185
template
<
typename
ReversalFunctor
>
static
ReturnedValue
lookupPropertyGetterImpl
(
186
Lookup
*
l
,
ExecutionEngine
*
engine
,
const
Value
&
object
,
187
Flags
flags
,
ReversalFunctor
revert
);
188
template
<
typename
ReversalFunctor
>
static
ReturnedValue
lookupMethodGetterImpl
(
189
Lookup
*
l
,
ExecutionEngine
*
engine
,
const
Value
&
object
,
190
Flags
flags
,
ReversalFunctor
revert
);
191
static
bool
virtualResolveLookupSetter
(
192
Object
*
object
,
ExecutionEngine
*
engine
,
Lookup
*
lookup
,
const
Value
&
value
);
193
static
OwnPropertyKeyIterator
*
virtualOwnPropertyKeys
(
const
Object
*
m
,
Value
*
target
);
194
195
static
int
virtualMetacall
(
Object
*
object
,
QMetaObject
::
Call
call
,
int
index
,
void
**
a
);
196
197
static
QString
objectToString
(
198
ExecutionEngine
*
engine
,
const
QMetaObject
*
metaObject
,
QObject
*
object
);
199
200
protected
:
201
static
bool
virtualIsEqualTo
(
Managed
*
that
,
Managed
*
o
);
202
static
ReturnedValue
create
(
ExecutionEngine
*
engine
,
QObject
*
object
);
203
204
static
const
QQmlPropertyData
*
findProperty
(
205
QObject
*
o
,
const
QQmlRefPointer
<
QQmlContextData
> &
qmlContext
,
206
String
*
name
,
Flags
flags
,
QQmlPropertyData
*
local
);
207
208
const
QQmlPropertyData
*
findProperty
(
209
const
QQmlRefPointer
<
QQmlContextData
> &
qmlContext
,
210
String
*
name
,
Flags
flags
,
QQmlPropertyData
*
local
)
const
;
211
212
static
ReturnedValue
virtualGet
(
213
const
Managed
*
m
,
PropertyKey
id
,
const
Value
*
receiver
,
bool
*
hasProperty
);
214
static
bool
virtualPut
(
Managed
*
m
,
PropertyKey
id
,
const
Value
&
value
,
Value
*
receiver
);
215
static
PropertyAttributes
virtualGetOwnProperty
(
const
Managed
*
m
,
PropertyKey
id
,
Property
*
p
);
216
217
static
ReturnedValue
method_connect
(
218
const
FunctionObject
*,
const
Value
*
thisObject
,
const
Value
*
argv
,
int
argc
);
219
static
ReturnedValue
method_disconnect
(
220
const
FunctionObject
*,
const
Value
*
thisObject
,
const
Value
*
argv
,
int
argc
);
221
222
private
:
223
Q_NEVER_INLINE
static
ReturnedValue
wrap_slowPath
(
ExecutionEngine
*
engine
,
QObject
*
object
);
224
Q_NEVER_INLINE
static
ReturnedValue
wrapConst_slowPath
(
ExecutionEngine
*
engine
,
QObject
*
object
);
225
};
226
227
Q_DECLARE_OPERATORS_FOR_FLAGS
(
QObjectWrapper
::
Flags
)
228
229
// We generally musn't pass ReturnedValue as arguments to other functions.
230
// In this case, we do it solely for marking purposes so it's fine.
231
inline
void
markIfPastMarkWeakValues
(
ExecutionEngine
*
engine
,
ReturnedValue
rv
)
232
{
233
const
auto
gcState
=
engine
->
memoryManager
->
gcStateMachine
->
state
;
234
if
(
gcState
!=
GCStateMachine
::
Invalid
&&
gcState
>=
GCState
::
MarkWeakValues
) {
235
QV4
::
WriteBarrier
::
markCustom
(
engine
, [
rv
](
QV4
::
MarkStack
*
ms
) {
236
auto
*
m
=
StaticValue
::
fromReturnedValue
(
rv
).
m
();
237
m
->
mark
(
ms
);
238
});
239
}
240
}
241
242
inline
ReturnedValue
QObjectWrapper
::
wrap
(
ExecutionEngine
*
engine
,
QObject
*
object
)
243
{
244
if
(
Q_UNLIKELY
(
QQmlData
::
wasDeleted
(
object
)))
245
return
QV4
::
Encode
::
null
();
246
247
auto
ddata
=
QQmlData
::
get
(
object
);
248
if
(
Q_LIKELY
(
ddata
&&
ddata
->
jsEngineId
==
engine
->
m_engineId
&& !
ddata
->
jsWrapper
.
isUndefined
())) {
249
// We own the JS object
250
return
ddata
->
jsWrapper
.
value
();
251
}
252
253
const
auto
rv
=
wrap_slowPath
(
engine
,
object
);
254
markIfPastMarkWeakValues
(
engine
,
rv
);
255
return
rv
;
256
}
257
258
// Unfortunately we still need a non-const QObject* here because QQmlData needs to register itself in QObjectPrivate.
259
inline
ReturnedValue
QObjectWrapper
::
wrapConst
(
ExecutionEngine
*
engine
,
QObject
*
object
)
260
{
261
if
(
Q_UNLIKELY
(
QQmlData
::
wasDeleted
(
object
)))
262
return
QV4
::
Encode
::
null
();
263
264
const
auto
rv
=
wrapConst_slowPath
(
engine
,
object
);
265
markIfPastMarkWeakValues
(
engine
,
rv
);
266
return
rv
;
267
}
268
269
inline
bool
canConvert
(
const
QQmlPropertyCache *fromMo,
const
QQmlPropertyCache *toMo)
270
{
271
while
(fromMo) {
272
if
(fromMo == toMo)
273
return
true
;
274
fromMo = fromMo->parent().data();
275
}
276
return
false
;
277
}
278
279
template
<
typename
ReversalFunctor
>
280
inline
ReturnedValue
QObjectWrapper
::
lookupPropertyGetterImpl
(
281
Lookup
*
lookup
,
ExecutionEngine
*
engine
,
const
Value
&
object
,
282
QObjectWrapper
::
Flags
flags
,
ReversalFunctor
revertLookup
)
283
{
284
// we can safely cast to a QV4::Object here. If object is something else,
285
// the internal class won't match
286
Heap
::
Object
*
o
=
static_cast
<
Heap
::
Object
*>(
object
.
heapObject
());
287
if
(!
o
||
o
->
internalClass
!=
lookup
->
qobjectLookup
.
ic
)
288
return
revertLookup
();
289
290
Heap
::
QObjectWrapper
*
This
=
static_cast
<
Heap
::
QObjectWrapper
*>(
o
);
291
QObject
*
qobj
=
This
->
object
();
292
if
(
QQmlData
::
wasDeleted
(
qobj
))
293
return
QV4
::
Encode
::
undefined
();
294
295
QQmlData
*
ddata
=
QQmlData
::
get
(
qobj
,
/*create*/
false
);
296
if
(!
ddata
)
297
return
revertLookup
();
298
299
const
QQmlPropertyData
*
property
=
lookup
->
qobjectLookup
.
propertyData
;
300
if
(
ddata
->
propertyCache
.
data
() !=
lookup
->
qobjectLookup
.
propertyCache
) {
301
// If the property is overridden and the lookup allows overrides to be considered,
302
// we have to revert here and redo the lookup from scratch.
303
if
(
property
->
isOverridden
()
304
&& ((
flags
&
AllowOverride
)
305
||
property
->
isFunction
()
306
||
property
->
isSignalHandler
())) {
307
return
revertLookup
();
308
}
309
310
if
(!
canConvert
(
ddata
->
propertyCache
.
data
(),
lookup
->
qobjectLookup
.
propertyCache
))
311
return
revertLookup
();
312
}
313
314
return
getProperty
(
engine
,
This
,
qobj
,
property
,
flags
);
315
}
316
317
template
<
typename
ReversalFunctor
>
318
inline
ReturnedValue
QObjectWrapper
::
lookupMethodGetterImpl
(
319
Lookup
*
lookup
,
ExecutionEngine
*
engine
,
const
Value
&
object
,
320
QObjectWrapper
::
Flags
flags
,
ReversalFunctor
revertLookup
)
321
{
322
// we can safely cast to a QV4::Object here. If object is something else,
323
// the internal class won't match
324
Heap
::
Object
*
o
=
static_cast
<
Heap
::
Object
*>(
object
.
heapObject
());
325
if
(!
o
||
o
->
internalClass
!=
lookup
->
qobjectMethodLookup
.
ic
)
326
return
revertLookup
();
327
328
Heap
::
QObjectWrapper
*
This
=
static_cast
<
Heap
::
QObjectWrapper
*>(
o
);
329
QObject
*
qobj
=
This
->
object
();
330
if
(
QQmlData
::
wasDeleted
(
qobj
))
331
return
QV4
::
Encode
::
undefined
();
332
333
QQmlData
*
ddata
=
QQmlData
::
get
(
qobj
,
/*create*/
false
);
334
if
(!
ddata
)
335
return
revertLookup
();
336
337
const
QQmlPropertyData
*
property
=
lookup
->
qobjectMethodLookup
.
propertyData
;
338
if
(
ddata
->
propertyCache
.
data
() !=
lookup
->
qobjectMethodLookup
.
propertyCache
) {
339
if
(
property
&&
property
->
isOverridden
())
340
return
revertLookup
();
341
342
if
(!
canConvert
(
ddata
->
propertyCache
.
data
(),
lookup
->
qobjectMethodLookup
.
propertyCache
))
343
return
revertLookup
();
344
}
345
346
if
(
Heap
::
QObjectMethod
*
method
=
lookup
->
qobjectMethodLookup
.
method
) {
347
if
(
method
->
isDetached
())
348
return
method
->
asReturnedValue
();
349
}
350
351
if
(!
property
)
// was toString() or destroy()
352
return
revertLookup
();
353
354
QV4
::
Scope
scope
(
engine
);
355
QV4
::
ScopedValue
v
(
scope
,
getProperty
(
engine
,
This
,
qobj
,
property
,
flags
));
356
if
(!
v
->
as
<
QObjectMethod
>())
357
return
revertLookup
();
358
359
lookup
->
qobjectMethodLookup
.
method
.
set
(
engine
,
static_cast
<
Heap
::
QObjectMethod
*>(
v
->
heapObject
()));
360
return
v
->
asReturnedValue
();
361
}
362
363
struct
QQmlValueTypeWrapper;
364
365
struct
Q_QML_EXPORT
QObjectMethod
:
public
QV4
::
FunctionObject
366
{
367
V4_OBJECT2
(
QObjectMethod
,
QV4
::
FunctionObject
)
368
V4_NEEDS_DESTROY
369
370
enum
{
DestroyMethod
= -1,
ToStringMethod
= -2 };
371
372
static
ReturnedValue
create
(
ExecutionEngine
*
engine
,
Heap
::
Object
*
wrapper
,
int
index
);
373
static
ReturnedValue
create
(
374
ExecutionEngine
*
engine
,
Heap
::
QQmlValueTypeWrapper
*
valueType
,
int
index
);
375
static
ReturnedValue
create
(
376
ExecutionEngine
*
engine
,
Heap
::
QObjectMethod
*
cloneFrom
,
377
Heap
::
Object
*
wrapper
,
Heap
::
Object
*
object
);
378
379
int
methodIndex
()
const
{
return
d
()->
index
; }
380
QObject
*
object
()
const
{
return
d
()->
object
(); }
381
382
QV4
::
ReturnedValue
method_toString
(
QV4
::
ExecutionEngine
*
engine
,
QObject
*
o
)
const
;
383
QV4
::
ReturnedValue
method_destroy
(
384
QV4
::
ExecutionEngine
*
ctx
,
QObject
*
o
,
const
Value
*
args
,
int
argc
)
const
;
385
bool
method_destroy
(
386
QV4
::
ExecutionEngine
*
engine
,
QObject
*
o
,
int
delay
)
const
;
387
388
static
ReturnedValue
virtualCall
(
389
const
FunctionObject
*,
const
Value
*
thisObject
,
const
Value
*
argv
,
int
argc
);
390
static
void
virtualCallWithMetaTypes
(
391
const
FunctionObject
*
m
,
QObject
*
thisObject
,
392
void
**
argv
,
const
QMetaType
*
types
,
int
argc
);
393
394
ReturnedValue
callInternal
(
395
const
Value
*
thisObject
,
const
Value
*
argv
,
int
argc
)
const
;
396
void
callInternalWithMetaTypes
(
397
QObject
*
thisObject
,
void
**
argv
,
const
QMetaType
*
types
,
int
argc
)
const
;
398
399
static
std
::
pair
<
QObject
*,
int
>
extractQtMethod
(
const
QV4
::
FunctionObject
*
function
);
400
401
static
bool
isExactMatch
(
402
const
QMetaMethod
&
method
,
void
**
argv
,
int
argc
,
const
QMetaType
*
types
);
403
404
private
:
405
friend
struct
QMetaObjectWrapper
;
406
407
static
const
QQmlPropertyData
*
resolveOverloaded
(
408
const
QQmlObjectOrGadget
&
object
,
const
QQmlPropertyData
*
methods
,
int
methodCount
,
409
ExecutionEngine
*
engine
,
CallData
*
callArgs
);
410
411
static
const
QQmlPropertyData
*
resolveOverloaded
(
412
const
QQmlPropertyData
*
methods
,
int
methodCount
,
413
void
**
argv
,
int
argc
,
const
QMetaType
*
types
);
414
415
static
ReturnedValue
callPrecise
(
416
const
QQmlObjectOrGadget
&
object
,
const
QQmlPropertyData
&
data
,
417
ExecutionEngine
*
engine
,
CallData
*
callArgs
,
418
QMetaObject
::
Call
callType
=
QMetaObject
::
InvokeMetaMethod
);
419
};
420
421
struct
Q_QML_EXPORT
QmlSignalHandler
:
public
QV4
::
Object
422
{
423
V4_OBJECT2
(
QmlSignalHandler
,
QV4
::
Object
)
424
V4_PROTOTYPE
(
signalHandlerPrototype
)
425
V4_NEEDS_DESTROY
426
427
int
signalIndex
()
const
{
return
d
()->
signalIndex
; }
428
QObject
*
object
()
const
{
return
d
()->
object
(); }
429
430
ReturnedValue
call
(
const
Value
*
thisObject
,
const
Value
*
argv
,
int
argc
)
const
;
431
432
static
void
initProto
(
ExecutionEngine
*
v4
);
433
};
434
435
using
QObjectBiPointer
=
QBiPointer
<
QObject
,
const
QObject
>;
436
437
class
MultiplyWrappedQObjectMap
:
public
QObject
,
438
private
QHash
<
QObjectBiPointer
,
QV4
::
WeakValue
>
439
{
440
Q_OBJECT
441
public
:
442
typedef
QHash
<
QObjectBiPointer
,
QV4
::
WeakValue
>::
ConstIterator
ConstIterator
;
443
typedef
QHash
<
QObjectBiPointer
,
QV4
::
WeakValue
>::
Iterator
Iterator
;
444
445
using
value_type
=
QHash
<
QObjectBiPointer
,
QV4
::
WeakValue
>::
value_type
;
446
447
ConstIterator
begin
()
const
{
return
QHash<QObjectBiPointer, QV4::WeakValue>::constBegin(); }
448
Iterator
begin
() {
return
QHash<QObjectBiPointer, QV4::WeakValue>::begin(); }
449
ConstIterator
end
()
const
{
return
QHash<QObjectBiPointer, QV4::WeakValue>::constEnd(); }
450
Iterator
end
() {
return
QHash<QObjectBiPointer, QV4::WeakValue>::end(); }
451
452
template
<
typename
Pointer>
453
void
insert
(Pointer key,
Heap
::Object *value)
454
{
455
QHash<QObjectBiPointer, WeakValue>::operator[](key).set(value->internalClass->engine, value);
456
connect(key, SIGNAL(destroyed(QObject*)),
this
, SLOT(removeDestroyedObject(QObject*)));
457
}
458
459
template
<
typename
Pointer>
460
ReturnedValue
value
(Pointer key)
const
461
{
462
ConstIterator it = find(key);
463
return
it ==
end
()
464
? QV4::WeakValue().value()
465
: it->value();
466
}
467
468
Iterator
erase
(
Iterator
it);
469
470
template
<
typename
Pointer>
471
void
remove
(Pointer key)
472
{
473
Iterator
it = find(key);
474
if
(it ==
end
(
)
)
475
return
;
476
erase
(
it
)
;
477
}
478
479
template
<
typename
Pointer>
480
void
mark
(Pointer key, MarkStack *markStack)
481
{
482
Iterator
it = find(key);
483
if
(it ==
end
(
)
)
484
return
;
485
it->markOnce(markStack);
486
}
487
488
private
Q_SLOTS
:
489
void
removeDestroyedObject
(
QObject
*);
490
};
491
492
}
493
494
QT_END_NAMESPACE
495
496
#
endif
// QV4QOBJECTWRAPPER_P_H
QQmlPropertyData
Definition
qqmlpropertydata_p.h:27
QV4::MemoryManager::engine
QV4::ExecutionEngine * engine
Definition
qv4mm_p.h:485
QV4::MultiplyWrappedQObjectMap
Definition
qv4qobjectwrapper_p.h:439
QV4::MultiplyWrappedQObjectMap::insert
void insert(Pointer key, Heap::Object *value)
Definition
qv4qobjectwrapper_p.h:453
QV4::MultiplyWrappedQObjectMap::begin
Iterator begin()
Definition
qv4qobjectwrapper_p.h:448
QV4::MultiplyWrappedQObjectMap::mark
void mark(Pointer key, MarkStack *markStack)
Definition
qv4qobjectwrapper_p.h:480
QV4::MultiplyWrappedQObjectMap::end
Iterator end()
Definition
qv4qobjectwrapper_p.h:450
QV4::MultiplyWrappedQObjectMap::end
ConstIterator end() const
Definition
qv4qobjectwrapper_p.h:449
QV4::MultiplyWrappedQObjectMap::Iterator
QHash< QObjectBiPointer, QV4::WeakValue >::Iterator Iterator
Definition
qv4qobjectwrapper_p.h:443
QV4::MultiplyWrappedQObjectMap::value
ReturnedValue value(Pointer key) const
Definition
qv4qobjectwrapper_p.h:460
QV4::MultiplyWrappedQObjectMap::remove
void remove(Pointer key)
Definition
qv4qobjectwrapper_p.h:471
QV4::MultiplyWrappedQObjectMap::erase
Iterator erase(Iterator it)
Definition
qv4qobjectwrapper.cpp:2905
QV4::MultiplyWrappedQObjectMap::begin
ConstIterator begin() const
Definition
qv4qobjectwrapper_p.h:447
QV4::PersistentValue
Definition
qv4persistent_p.h:68
QV4::WeakValue
Definition
qv4persistent_p.h:127
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
QV4::Heap
Definition
qv4compileddata_p.h:76
QV4::Heap::DECLARE_EXPORTED_HEAP_OBJECT
DECLARE_EXPORTED_HEAP_OBJECT(QObjectMethod, FunctionObject)
Definition
qv4qobjectwrapper_p.h:71
QV4
Definition
qjsvalue.h:24
QV4::canConvert
bool canConvert(const QQmlPropertyCache *fromMo, const QQmlPropertyCache *toMo)
Definition
qv4qobjectwrapper_p.h:269
WTF
Definition
qv4engine_p.h:33
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
Q_DECLARE_LOGGING_CATEGORY
QT_BEGIN_NAMESPACE Q_DECLARE_LOGGING_CATEGORY(lcQIORing)
V4_NEEDS_DESTROY
#define V4_NEEDS_DESTROY
Definition
qv4managed_p.h:40
Q_MANAGED_TYPE
#define Q_MANAGED_TYPE(type)
Definition
qv4managed_p.h:61
QV4::Heap::QmlSignalHandler
Definition
qv4qobjectwrapper_p.h:105
QV4::Heap::QmlSignalHandler::destroy
void destroy()
Definition
qv4qobjectwrapper_p.h:107
QV4::Heap::QmlSignalHandler::init
void init(QObject *object, int signalIndex)
Definition
qv4qobjectwrapper.cpp:2860
QV4::Heap::QmlSignalHandler::signalIndex
int signalIndex
Definition
qv4qobjectwrapper_p.h:111
QV4::Heap::QmlSignalHandler::setObject
void setObject(QObject *o)
Definition
qv4qobjectwrapper_p.h:114
QV4::Heap::QmlSignalHandler::object
QObject * object() const
Definition
qv4qobjectwrapper_p.h:113
QV4::PersistentValueStorage::Iterator
Definition
qv4persistent_p.h:39
QV4::PersistentValueStorage::Iterator::operator=
Iterator & operator=(const Iterator &o)
Definition
qv4persistent.cpp:93
QV4::PersistentValueStorage::Iterator::~Iterator
~Iterator()
Definition
qv4persistent.cpp:107
QV4::PersistentValueStorage::Iterator::index
int index
Definition
qv4persistent_p.h:45
QV4::PersistentValueStorage::Iterator::Iterator
Iterator(void *p, int idx)
Definition
qv4persistent.cpp:77
QV4::PersistentValueStorage::Iterator::operator!=
bool operator!=(const Iterator &other)
Definition
qv4persistent_p.h:47
QV4::PersistentValueStorage::Iterator::operator*
Value & operator*()
Definition
qv4persistent.cpp:133
QV4::PersistentValueStorage::Iterator::p
void * p
Definition
qv4persistent_p.h:44
QV4::PersistentValueStorage::Iterator::Iterator
Iterator(const Iterator &o)
Definition
qv4persistent.cpp:85
QV4::PersistentValueStorage::Iterator::operator++
Iterator & operator++()
Definition
qv4persistent.cpp:114
QV4::PersistentValueStorage
Definition
qv4persistent_p.h:26
QV4::PersistentValueStorage::firstPage
void * firstPage
Definition
qv4persistent_p.h:60
QV4::PersistentValueStorage::getEngine
static ExecutionEngine * getEngine(const Value *v)
Definition
qv4persistent.cpp:231
QV4::PersistentValueStorage::~PersistentValueStorage
~PersistentValueStorage()
Definition
qv4persistent.cpp:144
QV4::PersistentValueStorage::clearFreePageHint
void clearFreePageHint()
Definition
qv4persistent.cpp:220
QV4::PersistentValueStorage::free
static void free(Value *v)
Definition
qv4persistent_p.h:31
QV4::PersistentValueStorage::mark
void mark(MarkStack *markStack)
Definition
qv4persistent.cpp:207
QV4::PersistentValueStorage::freePageHint
void * freePageHint
Definition
qv4persistent_p.h:61
QV4::PersistentValueStorage::allocate
Value * allocate()
Definition
qv4persistent.cpp:162
QV4::QObjectMethod
Definition
qv4qobjectwrapper_p.h:366
QV4::QObjectSlotDispatcher
Definition
qv4qobjectwrapper.cpp:1238
QV4::QObjectWrapper
Definition
qv4qobjectwrapper_p.h:123
QV4::QmlSignalHandler
Definition
qv4qobjectwrapper_p.h:422
QV4::SparseArray::begin
const SparseArrayNode * begin() const
Definition
qv4sparsearray_p.h:155
QV4::SparseArray::end
const SparseArrayNode * end() const
Definition
qv4sparsearray_p.h:153
qtdeclarative
src
qml
jsruntime
qv4qobjectwrapper_p.h
Generated on
for Qt by
1.18.0