diff options
Diffstat (limited to 'src/qml/qqmlbuiltins_p.h')
-rw-r--r-- | src/qml/qqmlbuiltins_p.h | 237 |
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 |