aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKevin Ottens <kevin.ottens@kdab.com>2016-05-03 09:57:24 +0200
committerKevin Ottens <kevin.ottens@kdab.com>2016-05-03 08:00:30 +0000
commit373c621bf4dc2ab07bb9c4f19c783fd36debb0dc (patch)
tree24e30fb67062712d4dae249c56492de712c146e2 /src
parent42fd8ec2495001c1435bbc34017416c18e691bb3 (diff)
Add QVector support to JS sequences
Change-Id: I731355aa1754721236f3711a65af4f96781cebc0 Task-number: QTBUG-51467 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r--src/qml/doc/src/cppintegration/data.qdoc6
-rw-r--r--src/qml/jsruntime/qv4sequenceobject.cpp12
2 files changed, 18 insertions, 0 deletions
diff --git a/src/qml/doc/src/cppintegration/data.qdoc b/src/qml/doc/src/cppintegration/data.qdoc
index e153ca3d8b..23f870741b 100644
--- a/src/qml/doc/src/cppintegration/data.qdoc
+++ b/src/qml/doc/src/cppintegration/data.qdoc
@@ -261,6 +261,9 @@ In particular, QML currently supports:
\li \c {QList<bool>}
\li \c {QList<QString>} and \c{QStringList}
\li \c {QList<QUrl>}
+ \li \c {QVector<int>}
+ \li \c {QVector<qreal>}
+ \li \c {QVector<bool>}
\endlist
These sequence types are implemented directly in terms of the underlying C++
@@ -303,6 +306,9 @@ The default-constructed values for each sequence type are as follows:
\row \li QList<bool> \li boolean value \c {false}
\row \li QList<QString> and QStringList \li empty QString
\row \li QList<QUrl> \li empty QUrl
+\row \li QVector<int> \li integer value 0
+\row \li QVector<qreal> \li real value 0.0
+\row \li QVector<bool> \li boolean value \c {false}
\endtable
If you wish to remove elements from a sequence rather than simply replace
diff --git a/src/qml/jsruntime/qv4sequenceobject.cpp b/src/qml/jsruntime/qv4sequenceobject.cpp
index b97310c5b9..fa2409a85c 100644
--- a/src/qml/jsruntime/qv4sequenceobject.cpp
+++ b/src/qml/jsruntime/qv4sequenceobject.cpp
@@ -75,6 +75,9 @@ static void generateWarning(QV4::ExecutionEngine *v4, const QString& description
// F(elementType, elementTypeName, sequenceType, defaultValue)
#define FOREACH_QML_SEQUENCE_TYPE(F) \
+ F(int, IntVector, QVector<int>, 0) \
+ F(qreal, RealVector, QVector<qreal>, 0.0) \
+ F(bool, BoolVector, QVector<bool>, false) \
F(int, Int, QList<int>, 0) \
F(qreal, Real, QList<qreal>, 0.0) \
F(bool, Bool, QList<bool>, false) \
@@ -578,6 +581,15 @@ Heap::QQmlSequence<Container>::QQmlSequence(QObject *object, int propertyIndex)
namespace QV4 {
+typedef QQmlSequence<QVector<int> > QQmlIntVectorList;
+template<>
+DEFINE_OBJECT_VTABLE(QQmlIntVectorList);
+typedef QQmlSequence<QVector<qreal> > QQmlRealVectorList;
+template<>
+DEFINE_OBJECT_VTABLE(QQmlRealVectorList);
+typedef QQmlSequence<QVector<bool> > QQmlBoolVectorList;
+template<>
+DEFINE_OBJECT_VTABLE(QQmlBoolVectorList);
typedef QQmlSequence<QStringList> QQmlQStringList;
template<>
DEFINE_OBJECT_VTABLE(QQmlQStringList);