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
qqmlbuiltins_p.h
Go to the documentation of this file.
1
// Copyright (C) 2023 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
QQMLBUILTINS_H
6
#
define
QQMLBUILTINS_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
/
qqmlcomponentattached_p
.
h
>
20
21
#
include
<
QtQml
/
qjsvalue
.
h
>
22
#
include
<
QtQml
/
qqmlcomponent
.
h
>
23
#
include
<
QtQml
/
qqmlscriptstring
.
h
>
24
25
#
include
<
QtQmlIntegration
/
qqmlintegration
.
h
>
26
27
#
include
<
QtCore
/
qobject
.
h
>
28
#
include
<
QtCore
/
qglobal
.
h
>
29
#
include
<
QtCore
/
qtmetamacros
.
h
>
30
#
include
<
QtCore
/
qmetaobject
.
h
>
31
#
include
<
QtCore
/
qdatetime
.
h
>
32
#
include
<
QtCore
/
qstring
.
h
>
33
#
include
<
QtCore
/
qurl
.
h
>
34
#
include
<
QtCore
/
qvariantmap
.
h
>
35
#
include
<
QtCore
/
qtypes
.
h
>
36
#
include
<
QtCore
/
qchar
.
h
>
37
#
include
<
QtCore
/
qjsonobject
.
h
>
38
#
include
<
QtCore
/
qjsonvalue
.
h
>
39
#
include
<
QtCore
/
qjsonarray
.
h
>
40
41
#
include
<
climits
>
42
43
#
if
QT_CONFIG
(
regularexpression
)
44
#
include
<
QtCore
/
qregularexpression
.
h
>
45
#
endif
46
47
QT_BEGIN_NAMESPACE
48
49
// moc doesn't do 64bit constants, so we have to determine the size of qsizetype indirectly.
50
// We assume that qsizetype is always the same size as a pointer. I haven't seen a platform
51
// where this is not the case.
52
// Furthermore moc is wrong about pretty much everything on 64bit windows. We need to hardcode
53
// the size there.
54
// Likewise, we also have to determine the size of long and ulong indirectly.
55
56
#
if
defined
(
Q_OS_WIN64
)
57
58
static_assert
(
sizeof
(
long
) == 4);
59
#
define
QML_LONG_IS_32BIT
60
static_assert
(
sizeof
(qsizetype) == 8);
61
#
define
QML_SIZE_IS_64BIT
62
63
#
elif
QT_POINTER_SIZE
==
4
64
65
static_assert
(
sizeof
(
long
) == 4);
66
#
define
QML_LONG_IS_32BIT
67
static_assert
(
sizeof
(qsizetype) == 4);
68
#
define
QML_SIZE_IS_32BIT
69
70
#
else
71
72
static_assert
(
sizeof
(
long
) == 8);
73
#
define
QML_LONG_IS_64BIT
74
static_assert
(
sizeof
(qsizetype) == 8);
75
#
define
QML_SIZE_IS_64BIT
76
77
#
endif
78
79
#
define
QML_EXTENDED_JAVASCRIPT
(
EXTENDED_TYPE
)
80
Q_CLASSINFO
(
"QML.Extended"
,
#
EXTENDED_TYPE
)
81
Q_CLASSINFO
(
"QML.ExtensionIsJavaScript"
,
"true"
)
82
83
template
<
typename
A>
struct
QQmlPrimitiveAliasFriend
{};
84
85
#
define
QML_PRIMITIVE_ALIAS
(
PRIMITIVE_ALIAS
)
86
Q_CLASSINFO
(
"QML.PrimitiveAlias"
,
#
PRIMITIVE_ALIAS
)
87
friend
QQmlPrimitiveAliasFriend
<
PRIMITIVE_ALIAS
>
;
88
89
struct
QQmlVoidForeign
90
{
91
Q_GADGET
92
QML_VALUE_TYPE(
void
)
93
QML_EXTENDED_JAVASCRIPT
(undefined)
94
#
if
!
QT_CONFIG
(
regularexpression
)
95
QML_VALUE_TYPE
(
regexp
)
96
#
endif
97
QML_FOREIGN
(
void
)
98
};
99
100
struct
QQmlVarForeign
101
{
102
Q_GADGET
103
QML_VALUE_TYPE(var)
104
QML_VALUE_TYPE
(
variant
)
105
QML_FOREIGN
(
QVariant
)
106
QML_EXTENDED
(
QQmlVarForeign
)
107
};
108
109
struct
QQmlQtObjectForeign
110
{
111
Q_GADGET
112
QML_NAMED_ELEMENT(QtObject)
113
QML_EXTENDED_JAVASCRIPT
(Object)
114
QML_FOREIGN
(
QObject
)
115
Q_CLASSINFO
(
"QML.Root"
,
"true"
)
116
};
117
118
struct
QQmlIntForeign
119
{
120
Q_GADGET
121
QML_VALUE_TYPE(
int
)
122
QML_EXTENDED_JAVASCRIPT
(Number)
123
QML_FOREIGN
(
int
)
124
#
ifdef
QML_SIZE_IS_32BIT
125
// Keep qsizetype as primitive alias. We want it as separate type.
126
QML_PRIMITIVE_ALIAS
(
qsizetype
)
127
#
endif
128
};
129
130
struct
QQmlQint32Foreign
131
{
132
Q_GADGET
133
QML_FOREIGN(qint32)
134
QML_USING
(
int
)
135
};
136
137
struct
QQmlInt32TForeign
138
{
139
Q_GADGET
140
QML_FOREIGN(int32_t)
141
QML_USING
(
int
)
142
};
143
144
struct
QQmlDoubleForeign
145
{
146
Q_GADGET
147
QML_VALUE_TYPE(real)
148
QML_VALUE_TYPE
(
double
)
149
QML_EXTENDED_JAVASCRIPT
(Number)
150
QML_FOREIGN
(
double
)
151
};
152
153
struct
QQmlStringForeign
154
{
155
Q_GADGET
156
QML_VALUE_TYPE(string)
157
QML_EXTENDED_JAVASCRIPT
(String)
158
QML_FOREIGN
(
QString
)
159
};
160
161
struct
QQmlAnyStringViewForeign
162
{
163
Q_GADGET
164
QML_ANONYMOUS
165
QML_EXTENDED_JAVASCRIPT
(String)
166
QML_FOREIGN
(
QAnyStringView
)
167
};
168
169
struct
QQmlBoolForeign
170
{
171
Q_GADGET
172
QML_VALUE_TYPE(
bool
)
173
QML_EXTENDED_JAVASCRIPT
(Boolean)
174
QML_FOREIGN
(
bool
)
175
};
176
177
struct
QQmlDateForeign
178
{
179
Q_GADGET
180
QML_VALUE_TYPE(date)
181
QML_EXTENDED_JAVASCRIPT
(Date)
182
QML_FOREIGN
(
QDateTime
)
183
};
184
185
struct
QQmlUrlForeign
186
{
187
Q_GADGET
188
QML_VALUE_TYPE(url)
189
QML_EXTENDED_JAVASCRIPT
(URL)
190
QML_FOREIGN
(
QUrl
)
191
};
192
193
#
if
QT_CONFIG
(
regularexpression
)
194
struct
QQmlRegexpForeign
195
{
196
Q_GADGET
197
QML_VALUE_TYPE(regexp)
198
QML_EXTENDED_JAVASCRIPT(RegExp)
199
QML_FOREIGN(QRegularExpression)
200
};
201
#
endif
202
203
struct
QQmlNullForeign
204
{
205
Q_GADGET
206
QML_ANONYMOUS
207
QML_FOREIGN
(
std
::
nullptr_t
)
208
QML_EXTENDED
(
QQmlNullForeign
)
209
};
210
211
struct
QQmlQVariantMapForeign
212
{
213
Q_GADGET
214
QML_ANONYMOUS
215
QML_FOREIGN
(
QVariantMap
)
216
QML_EXTENDED_JAVASCRIPT
(Object)
217
};
218
219
struct
QQmlQVariantHashForeign
220
{
221
Q_GADGET
222
QML_ANONYMOUS
223
QML_FOREIGN
(
QVariantHash
)
224
QML_EXTENDED_JAVASCRIPT
(Object)
225
};
226
227
struct
QQmlQint8Foreign
228
{
229
Q_GADGET
230
QML_ANONYMOUS
231
QML_EXTENDED_JAVASCRIPT
(Number)
232
QML_FOREIGN
(
qint8
)
233
};
234
235
struct
QQmlInt8TForeign
236
{
237
Q_GADGET
238
QML_FOREIGN(int8_t)
239
QML_USING
(
qint8
)
240
};
241
242
struct
QQmlQuint8Foreign
243
{
244
Q_GADGET
245
QML_ANONYMOUS
246
QML_EXTENDED_JAVASCRIPT
(Number)
247
QML_FOREIGN
(
quint8
)
248
};
249
250
struct
QQmlUint8TForeign
251
{
252
Q_GADGET
253
QML_FOREIGN(uint8_t)
254
QML_USING
(
quint8
)
255
};
256
257
struct
QQmlUcharForeign
258
{
259
Q_GADGET
260
QML_FOREIGN(uchar)
261
QML_USING
(
quint8
)
262
};
263
264
struct
QQmlCharForeign
265
{
266
Q_GADGET
267
QML_FOREIGN(
char
)
268
#
if
CHAR_MAX
==
UCHAR_MAX
269
QML_USING
(
quint8
)
270
#
elif
CHAR_MAX
==
SCHAR_MAX
271
QML_USING
(
qint8
)
272
#
else
273
#
error
char
is
neither
quint8
nor
qint8
274
#
endif
275
};
276
277
struct
QQmlShortForeign
278
{
279
Q_GADGET
280
QML_ANONYMOUS
281
QML_EXTENDED_JAVASCRIPT
(Number)
282
QML_FOREIGN
(
short
)
283
};
284
285
struct
QQmlQint16Foreign
286
{
287
Q_GADGET
288
QML_FOREIGN(qint16)
289
QML_USING
(
short
)
290
};
291
292
struct
QQmlInt16TForeign
293
{
294
Q_GADGET
295
QML_FOREIGN(int16_t)
296
QML_USING
(
short
)
297
};
298
299
struct
QQmlUshortForeign
300
{
301
Q_GADGET
302
QML_ANONYMOUS
303
QML_EXTENDED_JAVASCRIPT
(Number)
304
QML_FOREIGN
(
ushort
)
305
};
306
307
struct
QQmlQuint16Foreign
308
{
309
Q_GADGET
310
QML_FOREIGN(quint16)
311
QML_USING
(
ushort
)
312
};
313
314
struct
QQmlUint16TForeign
315
{
316
Q_GADGET
317
QML_FOREIGN(uint16_t)
318
QML_USING
(
ushort
)
319
};
320
321
struct
QQmlUintForeign
322
{
323
Q_GADGET
324
QML_ANONYMOUS
325
QML_EXTENDED_JAVASCRIPT
(Number)
326
QML_FOREIGN
(
uint
)
327
};
328
329
struct
QQmlQuint32Foreign
330
{
331
Q_GADGET
332
QML_FOREIGN(quint32)
333
QML_USING
(
uint
)
334
};
335
336
struct
QQmlUint32TForeign
337
{
338
Q_GADGET
339
QML_FOREIGN(uint32_t)
340
QML_USING
(
uint
)
341
};
342
343
struct
QQmlQlonglongForeign
344
{
345
Q_GADGET
346
QML_ANONYMOUS
347
QML_EXTENDED_JAVASCRIPT
(Number)
348
QML_FOREIGN
(
qlonglong
)
349
#
ifdef
QML_SIZE_IS_64BIT
350
// Keep qsizetype as primitive alias. We want it as separate type.
351
QML_PRIMITIVE_ALIAS
(
qsizetype
)
352
#
endif
353
};
354
355
struct
QQmlQint64Foreign
356
{
357
Q_GADGET
358
QML_FOREIGN(qint64)
359
QML_USING
(
qlonglong
)
360
};
361
362
struct
QQmlInt64TForeign
363
{
364
Q_GADGET
365
QML_FOREIGN(int64_t)
366
QML_USING
(
qlonglong
)
367
};
368
369
struct
QQmlLongForeign
370
{
371
Q_GADGET
372
QML_FOREIGN(
long
)
373
#
if
defined
QML_LONG_IS_32BIT
374
QML_USING
(
int
)
375
#
elif
defined
QML_LONG_IS_64BIT
376
QML_USING
(
qlonglong
)
377
#
else
378
#
error
long
is
neither
32bit
nor
64bit
379
#
endif
380
};
381
382
struct
QQmlQulonglongForeign
383
{
384
Q_GADGET
385
QML_ANONYMOUS
386
QML_EXTENDED_JAVASCRIPT
(Number)
387
QML_FOREIGN
(
qulonglong
)
388
};
389
390
struct
QQmlQuint64Foreign
391
{
392
Q_GADGET
393
QML_FOREIGN(quint64)
394
QML_USING
(
qulonglong
)
395
};
396
397
struct
QQmlUint64TForeign
398
{
399
Q_GADGET
400
QML_FOREIGN(uint64_t)
401
QML_USING
(
qulonglong
)
402
};
403
404
struct
QQmlUlongForeign
405
{
406
Q_GADGET
407
QML_FOREIGN(ulong)
408
#
if
defined
QML_LONG_IS_32BIT
409
QML_USING
(
uint
)
410
#
elif
defined
QML_LONG_IS_64BIT
411
QML_USING
(
qulonglong
)
412
#
else
413
#
error
ulong
is
neither
32bit
nor
64bit
414
#
endif
415
};
416
417
struct
QQmlFloatForeign
418
{
419
Q_GADGET
420
QML_ANONYMOUS
421
QML_EXTENDED_JAVASCRIPT
(Number)
422
QML_FOREIGN
(
float
)
423
};
424
425
struct
QQmlQRealForeign
426
{
427
Q_GADGET
428
QML_FOREIGN(qreal)
429
#
if
!
defined
(
QT_COORD_TYPE
)
||
defined
(
QT_COORD_TYPE_IS_DOUBLE
)
430
QML_USING
(
double
)
431
#
elif
defined
(
QT_COORD_TYPE_IS_FLOAT
)
432
QML_USING
(
float
)
433
#
else
434
#
error
qreal
is
neither
float
nor
double
435
#
endif
436
};
437
438
struct
QQmlQCharForeign
439
{
440
Q_GADGET
441
QML_ANONYMOUS
442
QML_FOREIGN
(
QChar
)
443
QML_EXTENDED_JAVASCRIPT
(String)
444
};
445
446
struct
QQmlQDateForeign
447
{
448
Q_GADGET
449
QML_ANONYMOUS
450
QML_FOREIGN
(
QDate
)
451
QML_EXTENDED_JAVASCRIPT
(Date)
452
};
453
454
struct
QQmlQTimeForeign
455
{
456
Q_GADGET
457
QML_ANONYMOUS
458
QML_FOREIGN
(
QTime
)
459
QML_EXTENDED_JAVASCRIPT
(Date)
460
};
461
462
struct
QQmlQByteArrayForeign
463
{
464
Q_GADGET
465
QML_ANONYMOUS
466
QML_EXTENDED_JAVASCRIPT
(ArrayBuffer)
467
QML_FOREIGN
(
QByteArray
)
468
};
469
470
struct
QQmlQByteArrayListForeign
471
{
472
Q_GADGET
473
QML_ANONYMOUS
474
QML_FOREIGN
(
QByteArrayList
)
475
QML_SEQUENTIAL_CONTAINER
(
QByteArray
)
476
};
477
478
struct
QQmlQStringListForeign
479
{
480
Q_GADGET
481
QML_ANONYMOUS
482
QML_FOREIGN
(
QStringList
)
483
QML_SEQUENTIAL_CONTAINER
(
QString
)
484
};
485
486
struct
QQmlQVariantListForeign
487
{
488
Q_GADGET
489
QML_ANONYMOUS
490
QML_FOREIGN
(
QVariantList
)
491
QML_SEQUENTIAL_CONTAINER
(
QVariant
)
492
};
493
494
struct
QQmlQObjectListForeign
495
{
496
Q_GADGET
497
QML_ANONYMOUS
498
QML_FOREIGN
(
QObjectList
)
499
QML_SEQUENTIAL_CONTAINER
(
QObject
*)
500
};
501
502
struct
QQmlQListQObjectForeign
503
{
504
Q_GADGET
505
QML_FOREIGN(QList<QObject*>)
506
QML_USING
(
QObjectList
)
507
};
508
509
struct
QQmlQJSValueForeign
510
{
511
Q_GADGET
512
QML_ANONYMOUS
513
QML_FOREIGN
(
QJSValue
)
514
QML_EXTENDED
(
QQmlQJSValueForeign
)
515
};
516
517
struct
QQmlComponentForeign
518
{
519
Q_GADGET
520
QML_NAMED_ELEMENT(Component)
521
QML_FOREIGN
(
QQmlComponent
)
522
QML_ATTACHED
(
QQmlComponentAttached
)
523
};
524
525
struct
QQmlScriptStringForeign
526
{
527
Q_GADGET
528
QML_ANONYMOUS
529
QML_FOREIGN
(
QQmlScriptString
)
530
};
531
532
struct
QQmlV4FunctionPtrForeign
533
{
534
Q_GADGET
535
QML_ANONYMOUS
536
QML_FOREIGN
(
QQmlV4FunctionPtr
)
537
QML_EXTENDED
(
QQmlV4FunctionPtrForeign
)
538
};
539
540
struct
QQmlQJsonObjectForeign
541
{
542
Q_GADGET
543
QML_ANONYMOUS
544
QML_FOREIGN
(
QJsonObject
)
545
QML_EXTENDED_JAVASCRIPT
(Object)
546
};
547
548
struct
QQmlQJsonValueForeign
549
{
550
Q_GADGET
551
QML_ANONYMOUS
552
QML_FOREIGN
(
QJsonValue
)
553
QML_EXTENDED
(
QQmlQJsonValueForeign
)
554
};
555
556
struct
QQmlQJsonArrayForeign
557
{
558
Q_GADGET
559
QML_ANONYMOUS
560
QML_FOREIGN
(
QJsonArray
)
561
QML_SEQUENTIAL_CONTAINER
(
QJsonValue
)
562
};
563
564
QT_END_NAMESPACE
565
566
#
endif
// QQMLBUILTINS_H
QML_PRIMITIVE_ALIAS
#define QML_PRIMITIVE_ALIAS(PRIMITIVE_ALIAS)
Definition
qqmlbuiltins_p.h:85
QML_SIZE_IS_64BIT
#define QML_SIZE_IS_64BIT
Definition
qqmlbuiltins_p.h:75
QML_LONG_IS_64BIT
#define QML_LONG_IS_64BIT
Definition
qqmlbuiltins_p.h:73
QML_EXTENDED_JAVASCRIPT
#define QML_EXTENDED_JAVASCRIPT(EXTENDED_TYPE)
Definition
qqmlbuiltins_p.h:79
QQmlAnyStringViewForeign
Definition
qqmlbuiltins_p.h:162
QQmlBoolForeign
Definition
qqmlbuiltins_p.h:170
QQmlCharForeign
Definition
qqmlbuiltins_p.h:265
QQmlComponentForeign
Definition
qqmlbuiltins_p.h:518
QQmlDateForeign
Definition
qqmlbuiltins_p.h:178
QQmlDoubleForeign
Definition
qqmlbuiltins_p.h:145
QQmlFloatForeign
Definition
qqmlbuiltins_p.h:418
QQmlInt16TForeign
Definition
qqmlbuiltins_p.h:293
QQmlInt32TForeign
Definition
qqmlbuiltins_p.h:138
QQmlInt64TForeign
Definition
qqmlbuiltins_p.h:363
QQmlInt8TForeign
Definition
qqmlbuiltins_p.h:236
QQmlIntForeign
Definition
qqmlbuiltins_p.h:119
QQmlLongForeign
Definition
qqmlbuiltins_p.h:370
QQmlNullForeign
Definition
qqmlbuiltins_p.h:204
QQmlPrimitiveAliasFriend
Definition
qqmlbuiltins_p.h:83
QQmlQByteArrayForeign
Definition
qqmlbuiltins_p.h:463
QQmlQByteArrayListForeign
Definition
qqmlbuiltins_p.h:471
QQmlQCharForeign
Definition
qqmlbuiltins_p.h:439
QQmlQDateForeign
Definition
qqmlbuiltins_p.h:447
QQmlQJSValueForeign
Definition
qqmlbuiltins_p.h:510
QQmlQJsonArrayForeign
Definition
qqmlbuiltins_p.h:557
QQmlQJsonObjectForeign
Definition
qqmlbuiltins_p.h:541
QQmlQJsonValueForeign
Definition
qqmlbuiltins_p.h:549
QQmlQListQObjectForeign
Definition
qqmlbuiltins_p.h:503
QQmlQObjectListForeign
Definition
qqmlbuiltins_p.h:495
QQmlQRealForeign
Definition
qqmlbuiltins_p.h:426
QQmlQStringListForeign
Definition
qqmlbuiltins_p.h:479
QQmlQTimeForeign
Definition
qqmlbuiltins_p.h:455
QQmlQVariantHashForeign
Definition
qqmlbuiltins_p.h:220
QQmlQVariantListForeign
Definition
qqmlbuiltins_p.h:487
QQmlQVariantMapForeign
Definition
qqmlbuiltins_p.h:212
QQmlQint16Foreign
Definition
qqmlbuiltins_p.h:286
QQmlQint32Foreign
Definition
qqmlbuiltins_p.h:131
QQmlQint64Foreign
Definition
qqmlbuiltins_p.h:356
QQmlQint8Foreign
Definition
qqmlbuiltins_p.h:228
QQmlQlonglongForeign
Definition
qqmlbuiltins_p.h:344
QQmlQtObjectForeign
Definition
qqmlbuiltins_p.h:110
QQmlQuint16Foreign
Definition
qqmlbuiltins_p.h:308
QQmlQuint32Foreign
Definition
qqmlbuiltins_p.h:330
QQmlQuint64Foreign
Definition
qqmlbuiltins_p.h:391
QQmlQuint8Foreign
Definition
qqmlbuiltins_p.h:243
QQmlQulonglongForeign
Definition
qqmlbuiltins_p.h:383
QQmlScriptStringForeign
Definition
qqmlbuiltins_p.h:526
QQmlShortForeign
Definition
qqmlbuiltins_p.h:278
QQmlStringForeign
Definition
qqmlbuiltins_p.h:154
QQmlUcharForeign
Definition
qqmlbuiltins_p.h:258
QQmlUint16TForeign
Definition
qqmlbuiltins_p.h:315
QQmlUint32TForeign
Definition
qqmlbuiltins_p.h:337
QQmlUint64TForeign
Definition
qqmlbuiltins_p.h:398
QQmlUint8TForeign
Definition
qqmlbuiltins_p.h:251
QQmlUintForeign
Definition
qqmlbuiltins_p.h:322
QQmlUlongForeign
Definition
qqmlbuiltins_p.h:405
QQmlUrlForeign
Definition
qqmlbuiltins_p.h:186
QQmlUshortForeign
Definition
qqmlbuiltins_p.h:300
QQmlV4FunctionPtrForeign
Definition
qqmlbuiltins_p.h:533
QQmlVarForeign
Definition
qqmlbuiltins_p.h:101
QQmlVoidForeign
Definition
qqmlbuiltins_p.h:90
qtdeclarative
src
qml
qqmlbuiltins_p.h
Generated on
for Qt by
1.16.1