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