aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qqmlbuiltins_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/qqmlbuiltins_p.h')
-rw-r--r--src/qml/qqmlbuiltins_p.h237
1 files changed, 198 insertions, 39 deletions
diff --git a/src/qml/qqmlbuiltins_p.h b/src/qml/qqmlbuiltins_p.h
index edf2579760..338bcf68a9 100644
--- a/src/qml/qqmlbuiltins_p.h
+++ b/src/qml/qqmlbuiltins_p.h
@@ -15,10 +15,8 @@
// We mean it.
//
-// QmlBuiltins does not link QtQml - rather the other way around. Still, we can use the QtQml
-// headers here. This works because we explicitly include the QtQml include directories in the
-// manual moc call.
#include <private/qqmlcomponentattached_p.h>
+
#include <QtQml/qjsvalue.h>
#include <QtQml/qqmlcomponent.h>
#include <QtQml/qqmlscriptstring.h>
@@ -35,6 +33,9 @@
#include <QtCore/qvariantmap.h>
#include <QtCore/qtypes.h>
#include <QtCore/qchar.h>
+#include <QtCore/qjsonobject.h>
+#include <QtCore/qjsonvalue.h>
+#include <QtCore/qjsonarray.h>
#include <climits>
@@ -119,14 +120,24 @@ struct QQmlIntForeign
QML_VALUE_TYPE(int)
QML_EXTENDED_JAVASCRIPT(Number)
QML_FOREIGN(int)
- QML_PRIMITIVE_ALIAS(qint32)
- QML_PRIMITIVE_ALIAS(int32_t)
#ifdef QML_SIZE_IS_32BIT
+ // Keep qsizetype as primitive alias. We want it as separate type.
QML_PRIMITIVE_ALIAS(qsizetype)
#endif
-#ifdef QML_LONG_IS_32BIT
- QML_PRIMITIVE_ALIAS(long)
-#endif
+};
+
+struct QQmlQint32Foreign
+{
+ Q_GADGET
+ QML_FOREIGN(qint32)
+ QML_USING(int)
+};
+
+struct QQmlInt32TForeign
+{
+ Q_GADGET
+ QML_FOREIGN(int32_t)
+ QML_USING(int)
};
struct QQmlDoubleForeign
@@ -136,9 +147,6 @@ struct QQmlDoubleForeign
QML_VALUE_TYPE(double)
QML_EXTENDED_JAVASCRIPT(Number)
QML_FOREIGN(double)
-#if !defined(QT_COORD_TYPE) || defined(QT_COORD_TYPE_IS_DOUBLE)
- QML_PRIMITIVE_ALIAS(qreal)
-#endif
};
struct QQmlStringForeign
@@ -213,10 +221,13 @@ struct QQmlQint8Foreign
QML_ANONYMOUS
QML_EXTENDED_JAVASCRIPT(Number)
QML_FOREIGN(qint8)
- QML_PRIMITIVE_ALIAS(int8_t)
-#if CHAR_MAX == SCHAR_MAX
- QML_PRIMITIVE_ALIAS(char)
-#endif
+};
+
+struct QQmlInt8TForeign
+{
+ Q_GADGET
+ QML_FOREIGN(int8_t)
+ QML_USING(qint8)
};
struct QQmlQuint8Foreign
@@ -225,10 +236,32 @@ struct QQmlQuint8Foreign
QML_ANONYMOUS
QML_EXTENDED_JAVASCRIPT(Number)
QML_FOREIGN(quint8)
- QML_PRIMITIVE_ALIAS(uint8_t)
- QML_PRIMITIVE_ALIAS(uchar)
+};
+
+struct QQmlUint8TForeign
+{
+ Q_GADGET
+ QML_FOREIGN(uint8_t)
+ QML_USING(quint8)
+};
+
+struct QQmlUcharForeign
+{
+ Q_GADGET
+ QML_FOREIGN(uchar)
+ QML_USING(quint8)
+};
+
+struct QQmlCharForeign
+{
+ Q_GADGET
+ QML_FOREIGN(char)
#if CHAR_MAX == UCHAR_MAX
- QML_PRIMITIVE_ALIAS(char)
+ QML_USING(quint8)
+#elif CHAR_MAX == SCHAR_MAX
+ QML_USING(qint8)
+#else
+# error char is neither quint8 nor qint8
#endif
};
@@ -238,8 +271,20 @@ struct QQmlShortForeign
QML_ANONYMOUS
QML_EXTENDED_JAVASCRIPT(Number)
QML_FOREIGN(short)
- QML_PRIMITIVE_ALIAS(qint16)
- QML_PRIMITIVE_ALIAS(int16_t)
+};
+
+struct QQmlQint16Foreign
+{
+ Q_GADGET
+ QML_FOREIGN(qint16)
+ QML_USING(short)
+};
+
+struct QQmlInt16TForeign
+{
+ Q_GADGET
+ QML_FOREIGN(int16_t)
+ QML_USING(short)
};
struct QQmlUshortForeign
@@ -248,8 +293,20 @@ struct QQmlUshortForeign
QML_ANONYMOUS
QML_EXTENDED_JAVASCRIPT(Number)
QML_FOREIGN(ushort)
- QML_PRIMITIVE_ALIAS(quint16)
- QML_PRIMITIVE_ALIAS(uint16_t)
+};
+
+struct QQmlQuint16Foreign
+{
+ Q_GADGET
+ QML_FOREIGN(quint16)
+ QML_USING(ushort)
+};
+
+struct QQmlUint16TForeign
+{
+ Q_GADGET
+ QML_FOREIGN(uint16_t)
+ QML_USING(ushort)
};
struct QQmlUintForeign
@@ -258,11 +315,20 @@ struct QQmlUintForeign
QML_ANONYMOUS
QML_EXTENDED_JAVASCRIPT(Number)
QML_FOREIGN(uint)
- QML_PRIMITIVE_ALIAS(quint32)
- QML_PRIMITIVE_ALIAS(uint32_t)
-#ifdef QML_LONG_IS_32BIT
- QML_PRIMITIVE_ALIAS(ulong)
-#endif
+};
+
+struct QQmlQuint32Foreign
+{
+ Q_GADGET
+ QML_FOREIGN(quint32)
+ QML_USING(uint)
+};
+
+struct QQmlUint32TForeign
+{
+ Q_GADGET
+ QML_FOREIGN(uint32_t)
+ QML_USING(uint)
};
struct QQmlQlonglongForeign
@@ -271,26 +337,71 @@ struct QQmlQlonglongForeign
QML_ANONYMOUS
QML_EXTENDED_JAVASCRIPT(Number)
QML_FOREIGN(qlonglong)
- QML_PRIMITIVE_ALIAS(qint64)
- QML_PRIMITIVE_ALIAS(int64_t)
-#ifdef QML_LONG_IS_64BIT
- QML_PRIMITIVE_ALIAS(long)
-#endif
#ifdef QML_SIZE_IS_64BIT
+ // Keep qsizetype as primitive alias. We want it as separate type.
QML_PRIMITIVE_ALIAS(qsizetype)
#endif
};
+struct QQmlQint64Foreign
+{
+ Q_GADGET
+ QML_FOREIGN(qint64)
+ QML_USING(qlonglong)
+};
+
+struct QQmlInt64TForeign
+{
+ Q_GADGET
+ QML_FOREIGN(int64_t)
+ QML_USING(qlonglong)
+};
+
+struct QQmlLongForeign
+{
+ Q_GADGET
+ QML_FOREIGN(long)
+#if defined QML_LONG_IS_32BIT
+ QML_USING(int)
+#elif defined QML_LONG_IS_64BIT
+ QML_USING(qlonglong)
+#else
+# error long is neither 32bit nor 64bit
+#endif
+};
+
struct QQmlQulonglongForeign
{
Q_GADGET
QML_ANONYMOUS
QML_EXTENDED_JAVASCRIPT(Number)
QML_FOREIGN(qulonglong)
- QML_PRIMITIVE_ALIAS(quint64)
- QML_PRIMITIVE_ALIAS(uint64_t)
-#ifdef QML_LONG_IS_64BIT
- QML_PRIMITIVE_ALIAS(ulong)
+};
+
+struct QQmlQuint64Foreign
+{
+ Q_GADGET
+ QML_FOREIGN(quint64)
+ QML_USING(qulonglong)
+};
+
+struct QQmlUint64TForeign
+{
+ Q_GADGET
+ QML_FOREIGN(uint64_t)
+ QML_USING(qulonglong)
+};
+
+struct QQmlUlongForeign
+{
+ Q_GADGET
+ QML_FOREIGN(ulong)
+#if defined QML_LONG_IS_32BIT
+ QML_USING(uint)
+#elif defined QML_LONG_IS_64BIT
+ QML_USING(qulonglong)
+#else
+# error ulong is neither 32bit nor 64bit
#endif
};
@@ -300,8 +411,18 @@ struct QQmlFloatForeign
QML_ANONYMOUS
QML_EXTENDED_JAVASCRIPT(Number)
QML_FOREIGN(float)
-#if defined(QT_COORD_TYPE) && defined(QT_COORD_TYPE_IS_FLOAT)
- QML_PRIMITIVE_ALIAS(qreal)
+};
+
+struct QQmlQRealForeign
+{
+ Q_GADGET
+ QML_FOREIGN(qreal)
+#if !defined(QT_COORD_TYPE) || defined(QT_COORD_TYPE_IS_DOUBLE)
+ QML_USING(double)
+#elif defined(QT_COORD_TYPE_IS_FLOAT)
+ QML_USING(float)
+#else
+# error qreal is neither float nor double
#endif
};
@@ -337,6 +458,14 @@ struct QQmlQByteArrayForeign
QML_FOREIGN(QByteArray)
};
+struct QQmlQByteArrayListForeign
+{
+ Q_GADGET
+ QML_ANONYMOUS
+ QML_FOREIGN(QByteArrayList)
+ QML_SEQUENTIAL_CONTAINER(QByteArray)
+};
+
struct QQmlQStringListForeign
{
Q_GADGET
@@ -359,7 +488,13 @@ struct QQmlQObjectListForeign
QML_ANONYMOUS
QML_FOREIGN(QObjectList)
QML_SEQUENTIAL_CONTAINER(QObject*)
- QML_PRIMITIVE_ALIAS(QList<QObject*>)
+};
+
+struct QQmlQListQObjectForeign
+{
+ Q_GADGET
+ QML_FOREIGN(QList<QObject*>)
+ QML_USING(QObjectList)
};
struct QQmlQJSValueForeign
@@ -393,6 +528,30 @@ struct QQmlV4FunctionPtrForeign
QML_EXTENDED(QQmlV4FunctionPtrForeign)
};
+struct QQmlQJsonObjectForeign
+{
+ Q_GADGET
+ QML_ANONYMOUS
+ QML_FOREIGN(QJsonObject)
+ QML_EXTENDED_JAVASCRIPT(Object)
+};
+
+struct QQmlQJsonValueForeign
+{
+ Q_GADGET
+ QML_ANONYMOUS
+ QML_FOREIGN(QJsonValue)
+ QML_EXTENDED_JAVASCRIPT(Object)
+};
+
+struct QQmlQJsonArrayForeign
+{
+ Q_GADGET
+ QML_ANONYMOUS
+ QML_FOREIGN(QJsonArray)
+ QML_SEQUENTIAL_CONTAINER(QJsonValue)
+};
+
QT_END_NAMESPACE
#endif // QQMLBUILTINS_H