summaryrefslogtreecommitdiffstats
path: root/src/declarative
diff options
context:
space:
mode:
authorWarwick Allison <warwick.allison@nokia.com>2009-09-04 01:04:39 (GMT)
committerWarwick Allison <warwick.allison@nokia.com>2009-09-04 01:04:39 (GMT)
commit89ce8d3b2a389a405f97d42bafa47ef244324822 (patch)
tree4b2bb84bb51af405417ab6583267983b1bfcc0f0 /src/declarative
parent3d209a098d9abf5f8ffe9b64b27adbe622e84497 (diff)
parentf0844f9da7a834c282f6f04b2676f28de444e9dc (diff)
downloadQt-89ce8d3b2a389a405f97d42bafa47ef244324822.zip
Qt-89ce8d3b2a389a405f97d42bafa47ef244324822.tar.gz
Qt-89ce8d3b2a389a405f97d42bafa47ef244324822.tar.bz2
Merge branch 'kinetic-declarativeui' of git@scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
Conflicts: src/declarative/fx/qfxflickable.cpp
Diffstat (limited to 'src/declarative')
-rw-r--r--src/declarative/QmlChanges.txt5
-rw-r--r--src/declarative/fx/qfxflickable.cpp365
-rw-r--r--src/declarative/fx/qfxflickable.h20
-rw-r--r--src/declarative/fx/qfxflickable_p.h58
-rw-r--r--src/declarative/fx/qfxlistview.cpp18
-rw-r--r--src/declarative/qml/parser/qmljs.g30
-rw-r--r--src/declarative/qml/parser/qmljsast_p.h8
-rw-r--r--src/declarative/qml/parser/qmljsgrammar.cpp1539
-rw-r--r--src/declarative/qml/parser/qmljsgrammar_p.h97
-rw-r--r--src/declarative/qml/parser/qmljslexer.cpp5
-rw-r--r--src/declarative/qml/parser/qmljsparser.cpp399
-rw-r--r--src/declarative/qml/parser/qmljsparser_p.h4
-rw-r--r--src/declarative/qml/qmlcompiler.cpp11
-rw-r--r--src/declarative/qml/qmlcompiler_p.h1
-rw-r--r--src/declarative/qml/qmlcomponent.cpp1
-rw-r--r--src/declarative/qml/qmlcontext_p.h2
-rw-r--r--src/declarative/qml/qmlengine.cpp302
-rw-r--r--src/declarative/qml/qmlengine_p.h52
-rw-r--r--src/declarative/qml/qmlinstruction_p.h1
-rw-r--r--src/declarative/qml/qmlscriptparser.cpp9
-rw-r--r--src/declarative/qml/qmlvme.cpp9
-rw-r--r--src/declarative/util/qmlanimation.h10
-rw-r--r--src/declarative/util/qmlstate.cpp3
-rw-r--r--src/declarative/util/qmlstate.h1
-rw-r--r--src/declarative/util/qmlstateoperations.cpp99
-rw-r--r--src/declarative/util/qmlstateoperations.h13
26 files changed, 1688 insertions, 1374 deletions
diff --git a/src/declarative/QmlChanges.txt b/src/declarative/QmlChanges.txt
index a401a70..b24f6fe 100644
--- a/src/declarative/QmlChanges.txt
+++ b/src/declarative/QmlChanges.txt
@@ -48,6 +48,10 @@ Flickable: xVelocity -> horizontalVelocity
Flickable: yVelocity -> verticalVelocity
Flickable: velocityDecay -> reportedVelocitySmoothing
Flickable: locked -> interactive (note reversal of meaning)
+Flickable: pageXPosition -> visibleArea.xPosition
+Flickable: pageYPosition -> visibleArea.yPosition
+Flickable: pageWidth -> visibleArea.widthRatio
+Flickable: pageHeight -> visibleArea.heightRatio
WebView: idealWidth -> preferredWidth
WebView: idealHeight -> preferredHeight
WebView: status -> statusText
@@ -67,6 +71,7 @@ Column/VerticalPositioner: lost "margins" property
Row/HorizontalPositioner: lost "margins" property
Grid/Positioner/Layout: lost "margins" property
WebView: lost "interactive" property (always true now)
+Flickable: removed "dragMode" property
Other Changes:
Drag: axis becomes an enum with values "XAxis", "YAxis", "XandYAxis"
diff --git a/src/declarative/fx/qfxflickable.cpp b/src/declarative/fx/qfxflickable.cpp
index cd15ac9..007fa0e 100644
--- a/src/declarative/fx/qfxflickable.cpp
+++ b/src/declarative/fx/qfxflickable.cpp
@@ -48,57 +48,107 @@
QT_BEGIN_NAMESPACE
-ElasticValue::ElasticValue(QmlTimeLineValue &val)
- : _value(val)
+class QFxFlickableVisibleArea : public QObject
+{
+ Q_OBJECT
+
+ Q_PROPERTY(qreal xPosition READ xPosition NOTIFY pageChanged)
+ Q_PROPERTY(qreal yPosition READ yPosition NOTIFY pageChanged)
+ Q_PROPERTY(qreal widthRatio READ widthRatio NOTIFY pageChanged)
+ Q_PROPERTY(qreal heightRatio READ heightRatio NOTIFY pageChanged)
+
+public:
+ QFxFlickableVisibleArea(QFxFlickable *parent=0);
+
+ qreal xPosition() const;
+ qreal widthRatio() const;
+ qreal yPosition() const;
+ qreal heightRatio() const;
+
+ void updateVisible();
+
+signals:
+ void pageChanged();
+
+private:
+ QFxFlickable *flickable;
+ qreal m_xPosition;
+ qreal m_widthRatio;
+ qreal m_yPosition;
+ qreal m_heightRatio;
+};
+
+QFxFlickableVisibleArea::QFxFlickableVisibleArea(QFxFlickable *parent)
+ : QObject(parent), flickable(parent), m_xPosition(0.), m_widthRatio(0.)
+ , m_yPosition(0.), m_heightRatio(0.)
{
- _to = _value.value();
- _myValue = _to;
- _velocity = 0;
}
-void ElasticValue::setValue(qreal to)
+qreal QFxFlickableVisibleArea::widthRatio() const
{
- if (_to != to) {
- _to = to;
- _startTime.start();
- if (state() != Running)
- start();
- }
+ return m_widthRatio;
}
-void ElasticValue::clear()
+qreal QFxFlickableVisibleArea::xPosition() const
{
- stop();
- _velocity = 0.0;
- _myValue = _value.value();
+ return m_xPosition;
}
-void ElasticValue::updateCurrentTime(int)
+qreal QFxFlickableVisibleArea::heightRatio() const
{
- const qreal Tension = 0.1;
- int elapsed = _startTime.restart();
- if (!elapsed)
- return;
- qreal dist = _to - _value.value();
- qreal move = Tension * dist * qAbs(dist);
- if (elapsed < 100 && _velocity != 0.0)
- move = (elapsed * move + (100 - elapsed) * _velocity) / 100;
- _myValue += move * elapsed / 1000;
- _value.setValue(qRound(_myValue)); // moving sub-pixel can be ugly.
-// _value.setValue(_myValue);
- _velocity = move;
- if (qAbs(_velocity) < 5.0)
- clear();
- emit updated();
+ return m_heightRatio;
+}
+
+qreal QFxFlickableVisibleArea::yPosition() const
+{
+ return m_yPosition;
}
+void QFxFlickableVisibleArea::updateVisible()
+{
+ QFxFlickablePrivate *p = static_cast<QFxFlickablePrivate *>(QGraphicsItemPrivate::get(flickable));
+ bool pageChange = false;
+
+ // Vertical
+ const qreal viewheight = flickable->height();
+ const qreal maxyextent = -flickable->maxYExtent();
+ qreal pagePos = -p->_moveY.value() / (maxyextent + viewheight);
+ qreal pageSize = viewheight / (maxyextent + viewheight);
+
+ if (pageSize != m_heightRatio) {
+ m_heightRatio = pageSize;
+ pageChange = true;
+ }
+ if (pagePos != m_yPosition) {
+ m_yPosition = pagePos;
+ pageChange = true;
+ }
+
+ // Horizontal
+ const qreal viewwidth = flickable->width();
+ const qreal maxxextent = -flickable->maxXExtent();
+ pagePos = -p->_moveX.value() / (maxxextent + viewwidth);
+ pageSize = viewwidth / (maxxextent + viewwidth);
+
+ if (pageSize != m_widthRatio) {
+ m_widthRatio = pageSize;
+ pageChange = true;
+ }
+ if (pagePos != m_xPosition) {
+ m_xPosition = pagePos;
+ pageChange = true;
+ }
+ if (pageChange)
+ emit pageChanged();
+}
+
+
QFxFlickablePrivate::QFxFlickablePrivate()
- : _flick(new QFxItem), _moveX(_flick, &QFxItem::setX), _moveY(_flick, &QFxItem::setY)
+ : viewport(new QFxItem), _moveX(viewport, &QFxItem::setX), _moveY(viewport, &QFxItem::setY)
, vWidth(-1), vHeight(-1), overShoot(true), flicked(false), moving(false), stealMouse(false)
- , pressed(false), maxVelocity(-1), interactive(true), dragMode(QFxFlickable::Hard)
- , elasticY(_moveY), elasticX(_moveX), reportedVelocitySmoothing(100), horizontalVelocity(this), verticalVelocity(this)
- , vTime(0), atXEnd(false), atXBeginning(true), pageXPosition(0.), pageWidth(0.)
- , atYEnd(false), atYBeginning(true), pageYPosition(0.), pageHeight(0.)
+ , pressed(false), atXEnd(false), atXBeginning(true), atYEnd(false), atYBeginning(true)
+ , interactive(true), maxVelocity(-1), reportedVelocitySmoothing(100)
+ , horizontalVelocity(this), verticalVelocity(this), vTime(0), visibleArea(0)
{
fixupXEvent = QmlTimeLineEvent::timeLineEvent<QFxFlickablePrivate, &QFxFlickablePrivate::fixupX>(&_moveX, this);
fixupYEvent = QmlTimeLineEvent::timeLineEvent<QFxFlickablePrivate, &QFxFlickablePrivate::fixupY>(&_moveY, this);
@@ -107,15 +157,13 @@ QFxFlickablePrivate::QFxFlickablePrivate()
void QFxFlickablePrivate::init()
{
Q_Q(QFxFlickable);
- _flick->setParent(q);
- QObject::connect(&_tl, SIGNAL(updated()), q, SLOT(ticked()));
- QObject::connect(&_tl, SIGNAL(completed()), q, SLOT(movementEnding()));
+ viewport->setParent(q);
+ QObject::connect(&timeline, SIGNAL(updated()), q, SLOT(ticked()));
+ QObject::connect(&timeline, SIGNAL(completed()), q, SLOT(movementEnding()));
q->setAcceptedMouseButtons(Qt::LeftButton);
q->setFiltersChildEvents(true);
- QObject::connect(_flick, SIGNAL(xChanged()), q, SIGNAL(positionXChanged()));
- QObject::connect(_flick, SIGNAL(yChanged()), q, SIGNAL(positionYChanged()));
- QObject::connect(&elasticX, SIGNAL(updated()), q, SLOT(ticked()));
- QObject::connect(&elasticY, SIGNAL(updated()), q, SLOT(ticked()));
+ QObject::connect(viewport, SIGNAL(xChanged()), q, SIGNAL(positionXChanged()));
+ QObject::connect(viewport, SIGNAL(yChanged()), q, SIGNAL(positionYChanged()));
QObject::connect(q, SIGNAL(heightChanged()), q, SLOT(heightChange()));
QObject::connect(q, SIGNAL(widthChanged()), q, SLOT(widthChange()));
}
@@ -142,16 +190,16 @@ void QFxFlickablePrivate::flickX(qreal velocity)
else
v = maxVelocity;
}
- _tl.reset(_moveX);
- _tl.accel(_moveX, v, 500, maxDistance);
- _tl.execute(fixupXEvent);
+ timeline.reset(_moveX);
+ timeline.accel(_moveX, v, 500, maxDistance);
+ timeline.execute(fixupXEvent);
if (!flicked) {
flicked = true;
emit q->flickingChanged();
emit q->flickStarted();
}
} else {
- _tl.reset(_moveX);
+ timeline.reset(_moveX);
fixupX();
}
}
@@ -178,16 +226,16 @@ void QFxFlickablePrivate::flickY(qreal velocity)
else
v = maxVelocity;
}
- _tl.reset(_moveY);
- _tl.accel(_moveY, v, 500, maxDistance);
- _tl.execute(fixupYEvent);
+ timeline.reset(_moveY);
+ timeline.accel(_moveY, v, 500, maxDistance);
+ timeline.execute(fixupYEvent);
if (!flicked) {
flicked = true;
emit q->flickingChanged();
emit q->flickStarted();
}
} else {
- _tl.reset(_moveY);
+ timeline.reset(_moveY);
fixupY();
}
}
@@ -198,16 +246,16 @@ void QFxFlickablePrivate::fixupX()
if (!q->xflick() || _moveX.timeLine())
return;
- vTime = _tl.time();
+ vTime = timeline.time();
- if (_moveX.value() > q->minXExtent() || (q->maxXExtent() > q->maxXExtent())) {
- _tl.reset(_moveY);
+ if (_moveX.value() > q->minXExtent() || (q->maxXExtent() > q->minXExtent())) {
+ timeline.reset(_moveX);
if (_moveX.value() != q->minXExtent())
- _tl.move(_moveX, q->minXExtent(), QEasingCurve(QEasingCurve::InOutQuad), 200);
+ timeline.move(_moveX, q->minXExtent(), QEasingCurve(QEasingCurve::InOutQuad), 200);
//emit flickingChanged();
} else if (_moveX.value() < q->maxXExtent()) {
- _tl.reset(_moveY);
- _tl.move(_moveX, q->maxXExtent(), QEasingCurve(QEasingCurve::InOutQuad), 200);
+ timeline.reset(_moveX);
+ timeline.move(_moveX, q->maxXExtent(), QEasingCurve(QEasingCurve::InOutQuad), 200);
//emit flickingChanged();
} else {
flicked = false;
@@ -220,16 +268,16 @@ void QFxFlickablePrivate::fixupY()
if (!q->yflick() || _moveY.timeLine())
return;
- vTime = _tl.time();
+ vTime = timeline.time();
if (_moveY.value() > q->minYExtent() || (q->maxYExtent() > q->minYExtent())) {
- _tl.reset(_moveY);
+ timeline.reset(_moveY);
if (_moveY.value() != q->minYExtent())
- _tl.move(_moveY, q->minYExtent(), QEasingCurve(QEasingCurve::InOutQuad), 200);
+ timeline.move(_moveY, q->minYExtent(), QEasingCurve(QEasingCurve::InOutQuad), 200);
//emit flickingChanged();
} else if (_moveY.value() < q->maxYExtent()) {
- _tl.reset(_moveY);
- _tl.move(_moveY, q->maxYExtent(), QEasingCurve(QEasingCurve::InOutQuad), 200);
+ timeline.reset(_moveY);
+ timeline.move(_moveY, q->maxYExtent(), QEasingCurve(QEasingCurve::InOutQuad), 200);
//emit flickingChanged();
} else {
flicked = false;
@@ -239,26 +287,14 @@ void QFxFlickablePrivate::fixupY()
void QFxFlickablePrivate::updateBeginningEnd()
{
Q_Q(QFxFlickable);
- bool pageChange = false;
bool atBoundaryChange = false;
// Vertical
- const int viewheight = q->height();
const int maxyextent = int(-q->maxYExtent());
const qreal ypos = -_moveY.value();
- qreal pagePos = ((ypos * 100.0) / (maxyextent + viewheight)) / 100.0;
- qreal pageSize = ((viewheight * 100.0) / (maxyextent + viewheight)) / 100.0;
bool atBeginning = (ypos <= 0.0);
bool atEnd = (maxyextent <= ypos);
- if (pageSize != pageHeight) {
- pageHeight = pageSize;
- pageChange = true;
- }
- if (pagePos != pageYPosition) {
- pageYPosition = pagePos;
- pageChange = true;
- }
if (atBeginning != atYBeginning) {
atYBeginning = atBeginning;
atBoundaryChange = true;
@@ -269,22 +305,11 @@ void QFxFlickablePrivate::updateBeginningEnd()
}
// Horizontal
- const int viewwidth = q->width();
const int maxxextent = int(-q->maxXExtent());
const qreal xpos = -_moveX.value();
- pagePos = ((xpos * 100.0) / (maxxextent + viewwidth)) / 100.0;
- pageSize = ((viewwidth * 100.0) / (maxxextent + viewwidth)) / 100.0;
atBeginning = (xpos <= 0.0);
atEnd = (maxxextent <= xpos);
- if (pageSize != pageWidth) {
- pageWidth = pageSize;
- pageChange = true;
- }
- if (pagePos != pageXPosition) {
- pageXPosition = pagePos;
- pageChange = true;
- }
if (atBeginning != atXBeginning) {
atXBeginning = atBeginning;
atBoundaryChange = true;
@@ -294,10 +319,11 @@ void QFxFlickablePrivate::updateBeginningEnd()
atBoundaryChange = true;
}
- if (pageChange)
- emit q->pageChanged();
if (atBoundaryChange)
emit q->isAtBoundaryChanged();
+
+ if (visibleArea)
+ visibleArea->updateVisible();
}
static const int FlickThreshold = 5;
@@ -350,6 +376,27 @@ Flickable {
*/
+/*!
+ \qmlproperty real Flickable::visibleArea.xPosition
+ \qmlproperty real Flickable::visibleArea.widthRatio
+ \qmlproperty real Flickable::visibleArea.yPosition
+ \qmlproperty real Flickable::visibleArea.heightRatio
+
+ These properties describe the position and size of the currently viewed area.
+ The size is defined as the percentage of the full view currently visible,
+ scaled to 0.0 - 1.0. The page position is in the range 0.0 (beginning) to
+ size ratio (end), i.e. yPosition is in the range 0.0 - heightRatio.
+
+ These properties are typically used to draw a scrollbar, for example:
+ \code
+ Rectangle {
+ opacity: 0.5; anchors.right: MyListView.right-2; width: 6
+ y: MyListView.visibleArea.yPosition * MyListView.height
+ height: MyListView.visibleArea.heightRatio * MyListView.height
+ }
+ \endcode
+*/
+
QFxFlickable::QFxFlickable(QFxItem *parent)
: QFxItem(*(new QFxFlickablePrivate), parent)
{
@@ -386,7 +433,7 @@ void QFxFlickable::setViewportX(qreal pos)
{
Q_D(QFxFlickable);
pos = qRound(pos);
- d->_tl.reset(d->_moveX);
+ d->timeline.reset(d->_moveX);
if (-pos != d->_moveX.value()) {
d->_moveX.setValue(-pos);
viewportMoved();
@@ -403,7 +450,7 @@ void QFxFlickable::setViewportY(qreal pos)
{
Q_D(QFxFlickable);
pos = qRound(pos);
- d->_tl.reset(d->_moveY);
+ d->timeline.reset(d->_moveY);
if (-pos != d->_moveY.value()) {
d->_moveY.setValue(-pos);
viewportMoved();
@@ -430,7 +477,7 @@ void QFxFlickable::setInteractive(bool interactive)
Q_D(QFxFlickable);
d->interactive = interactive;
if (!interactive && d->flicked) {
- d->_tl.clear();
+ d->timeline.clear();
d->flicked = false;
emit flickingChanged();
emit flickEnded();
@@ -438,28 +485,6 @@ void QFxFlickable::setInteractive(bool interactive)
}
/*!
- \qmlproperty enumeration Flickable::dragMode
- This property contains the kind of 'physics' applied when dragging the surface.
-
- Two modes are supported:
- \list
- \i Hard - the view follows the user's input exactly.
- \i Elastic - the view moves elastically in response to the user's input.
- \endlist
-*/
-QFxFlickable::DragMode QFxFlickable::dragMode() const
-{
- Q_D(const QFxFlickable);
- return d->dragMode;
-}
-
-void QFxFlickable::setDragMode(DragMode mode)
-{
- Q_D(QFxFlickable);
- d->dragMode = mode;
-}
-
-/*!
\qmlproperty real Flickable::horizontalVelocity
\qmlproperty real Flickable::verticalVelocity
\qmlproperty real Flickable::reportedVelocitySmoothing
@@ -514,50 +539,6 @@ bool QFxFlickable::isAtYBeginning() const
return d->atYBeginning;
}
-/*!
- \qmlproperty real Flickable::pageXPosition
- \qmlproperty real Flickable::pageWidth
- \qmlproperty real Flickable::pageYPosition
- \qmlproperty real Flickable::pageHeight
-
- These properties describe the position and size of the currently viewed page.
- The page size is defined as the percentage of the full view currently visible,
- scaled to 0.0 - 1.0. The page position is also in the range 0.0 (beginning) to
- 1.0 (end).
-
- These properties are typically used to draw a scrollbar, for example:
- \code
- Rectangle {
- opacity: 0.5; anchors.right: MyListView.right-2; width: 6
- y: MyListView.pageYPosition * MyListView.height
- height: MyListView.pageHeight * MyListView.height
- }
- \endcode
-*/
-qreal QFxFlickable::pageWidth() const
-{
- Q_D(const QFxFlickable);
- return d->pageWidth;
-}
-
-qreal QFxFlickable::pageXPosition() const
-{
- Q_D(const QFxFlickable);
- return d->pageXPosition;
-}
-
-qreal QFxFlickable::pageHeight() const
-{
- Q_D(const QFxFlickable);
- return d->pageHeight;
-}
-
-qreal QFxFlickable::pageYPosition() const
-{
- Q_D(const QFxFlickable);
- return d->pageYPosition;
-}
-
void QFxFlickable::ticked()
{
viewportMoved();
@@ -566,7 +547,7 @@ void QFxFlickable::ticked()
QFxItem *QFxFlickable::viewport()
{
Q_D(QFxFlickable);
- return d->_flick;
+ return d->viewport;
}
qreal QFxFlickable::visibleX() const
@@ -581,14 +562,22 @@ qreal QFxFlickable::visibleY() const
return -d->_moveY.value();
}
+QFxFlickableVisibleArea *QFxFlickable::visibleArea()
+{
+ Q_D(QFxFlickable);
+ if (!d->visibleArea)
+ d->visibleArea = new QFxFlickableVisibleArea(this);
+ return d->visibleArea;
+}
+
void QFxFlickablePrivate::handleMousePressEvent(QGraphicsSceneMouseEvent *event)
{
- if (interactive && _tl.isActive() && (qAbs(velocityX) > 10 || qAbs(velocityY) > 10))
+ if (interactive && timeline.isActive() && (qAbs(velocityX) > 10 || qAbs(velocityY) > 10))
stealMouse = true; // If we've been flicked then steal the click.
else
stealMouse = false;
pressed = true;
- _tl.clear();
+ timeline.clear();
velocityX = -1;
velocityY = -1;
lastPos = QPoint();
@@ -598,10 +587,6 @@ void QFxFlickablePrivate::handleMousePressEvent(QGraphicsSceneMouseEvent *event)
pressY = _moveY.value();
flicked = false;
pressTime.start();
- if (dragMode == QFxFlickable::Elastic) {
- elasticX.clear();
- elasticY.clear();
- }
velocityTime.start();
}
@@ -625,10 +610,7 @@ void QFxFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent *event)
if (newY < maxY && maxY - minY < 0)
newY = maxY + (newY - maxY) / 2;
if (q->overShoot() || (newY <= minY && newY >= maxY)) {
- if (dragMode == QFxFlickable::Hard)
- _moveY.setValue(newY);
- else
- elasticY.setValue(newY);
+ _moveY.setValue(newY);
moved = true;
} else if (!q->overShoot())
rejectY = true;
@@ -648,10 +630,7 @@ void QFxFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent *event)
if (newX < maxX && maxX - minX < 0)
newX = maxX + (newX - maxX) / 2;
if (q->overShoot() || (newX <= minX && newX >= maxX)) {
- if (dragMode == QFxFlickable::Hard)
- _moveX.setValue(newX);
- else
- elasticX.setValue(newX);
+ _moveX.setValue(newX);
moved = true;
} else if (!q->overShoot())
rejectX = true;
@@ -693,12 +672,7 @@ void QFxFlickablePrivate::handleMouseReleaseEvent(QGraphicsSceneMouseEvent *)
if (lastPosTime.isNull())
return;
- if (dragMode == QFxFlickable::Elastic) {
- elasticY.clear();
- elasticX.clear();
- }
-
- vTime = _tl.time();
+ vTime = timeline.time();
if (qAbs(velocityY) > 10)
flickY(velocityY);
else
@@ -712,7 +686,7 @@ void QFxFlickablePrivate::handleMouseReleaseEvent(QGraphicsSceneMouseEvent *)
stealMouse = false;
lastPosTime = QTime();
- if (!_tl.isActive())
+ if (!timeline.isActive())
q->movementEnding();
}
@@ -777,13 +751,13 @@ void QFxFlickable::viewportMoved()
d->velocityTimeline.move(d->verticalVelocity, verticalVelocity, d->reportedVelocitySmoothing);
d->velocityTimeline.move(d->verticalVelocity, 0, d->reportedVelocitySmoothing);
} else {
- if (d->_tl.time() != d->vTime) {
- qreal horizontalVelocity = (prevX - d->_moveX.value()) * 1000 / (d->_tl.time() - d->vTime);
- qreal verticalVelocity = (prevY - d->_moveY.value()) * 1000 / (d->_tl.time() - d->vTime);
+ if (d->timeline.time() != d->vTime) {
+ qreal horizontalVelocity = (prevX - d->_moveX.value()) * 1000 / (d->timeline.time() - d->vTime);
+ qreal verticalVelocity = (prevY - d->_moveY.value()) * 1000 / (d->timeline.time() - d->vTime);
d->horizontalVelocity.setValue(horizontalVelocity);
d->verticalVelocity.setValue(verticalVelocity);
}
- d->vTime = d->_tl.time();
+ d->vTime = d->timeline.time();
}
}
@@ -832,7 +806,7 @@ void QFxFlickablePrivate::data_append(QObject *o)
Q_Q(QFxFlickable);
QFxItem *i = qobject_cast<QFxItem *>(o);
if (i)
- _flick->children()->append(i);
+ viewport->children()->append(i);
else
o->setParent(q);
}
@@ -863,7 +837,7 @@ QmlList<QObject *> *QFxFlickable::flickableData()
QmlList<QFxItem *> *QFxFlickable::flickableChildren()
{
Q_D(QFxFlickable);
- return d->_flick->children();
+ return d->viewport->children();
}
/*!
@@ -915,9 +889,9 @@ void QFxFlickable::setViewportWidth(qreal w)
return;
d->vWidth = w;
if (w < 0)
- d->_flick->setWidth(width());
+ d->viewport->setWidth(width());
else
- d->_flick->setWidth(w);
+ d->viewport->setWidth(w);
// Make sure that we're entirely in view.
if (!d->pressed)
d->fixupX();
@@ -929,20 +903,20 @@ void QFxFlickable::widthChange()
{
Q_D(QFxFlickable);
if (d->vWidth < 0) {
- d->_flick->setWidth(width());
+ d->viewport->setWidth(width());
emit viewportWidthChanged();
- d->updateBeginningEnd();
}
+ d->updateBeginningEnd();
}
void QFxFlickable::heightChange()
{
Q_D(QFxFlickable);
if (d->vHeight < 0) {
- d->_flick->setHeight(height());
+ d->viewport->setHeight(height());
emit viewportHeightChanged();
- d->updateBeginningEnd();
}
+ d->updateBeginningEnd();
}
qreal QFxFlickable::viewportHeight() const
@@ -958,9 +932,9 @@ void QFxFlickable::setViewportHeight(qreal h)
return;
d->vHeight = h;
if (h < 0)
- d->_flick->setHeight(height());
+ d->viewport->setHeight(height());
else
- d->_flick->setHeight(h);
+ d->viewport->setHeight(h);
// Make sure that we're entirely in view.
if (!d->pressed)
d->fixupY();
@@ -1136,3 +1110,8 @@ void QFxFlickablePrivate::updateVelocity()
}
QT_END_NAMESPACE
+
+QML_DECLARE_TYPE(QFxFlickableVisibleArea)
+QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,VisibleArea,QFxFlickableVisibleArea)
+
+#include "qfxflickable.moc"
diff --git a/src/declarative/fx/qfxflickable.h b/src/declarative/fx/qfxflickable.h
index 57a01d7..4905101 100644
--- a/src/declarative/fx/qfxflickable.h
+++ b/src/declarative/fx/qfxflickable.h
@@ -51,6 +51,7 @@ QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
class QFxFlickablePrivate;
+class QFxFlickableVisibleArea;
class Q_DECLARATIVE_EXPORT QFxFlickable : public QFxItem
{
Q_OBJECT
@@ -70,17 +71,13 @@ class Q_DECLARATIVE_EXPORT QFxFlickable : public QFxItem
Q_PROPERTY(bool flicking READ isFlicking NOTIFY flickingChanged)
Q_PROPERTY(bool interactive READ isInteractive WRITE setInteractive)
- Q_PROPERTY(DragMode dragMode READ dragMode WRITE setDragMode) //### remove. Consider a better way to implement different drag behavior
Q_PROPERTY(bool atXEnd READ isAtXEnd NOTIFY isAtBoundaryChanged)
Q_PROPERTY(bool atYEnd READ isAtYEnd NOTIFY isAtBoundaryChanged)
Q_PROPERTY(bool atXBeginning READ isAtXBeginning NOTIFY isAtBoundaryChanged)
Q_PROPERTY(bool atYBeginning READ isAtYBeginning NOTIFY isAtBoundaryChanged)
- Q_PROPERTY(qreal pageXPosition READ pageXPosition NOTIFY pageChanged) //### visibleArea.xPosition
- Q_PROPERTY(qreal pageYPosition READ pageYPosition NOTIFY pageChanged) //### visibleArea.yPosition
- Q_PROPERTY(qreal pageWidth READ pageWidth NOTIFY pageChanged) //### visibleArea.widthRatio
- Q_PROPERTY(qreal pageHeight READ pageHeight NOTIFY pageChanged) //### visibleArea.heightRatio
+ Q_PROPERTY(QFxFlickableVisibleArea *visibleArea READ visibleArea CONSTANT)
Q_PROPERTY(QmlList<QObject *>* flickableData READ flickableData)
Q_PROPERTY(QmlList<QFxItem *>* flickableChildren READ flickableChildren)
@@ -120,23 +117,13 @@ public:
bool isInteractive() const;
void setInteractive(bool);
- Q_ENUMS(DragMode)
- enum DragMode { Hard, Elastic };
- DragMode dragMode() const;
- void setDragMode(DragMode mode);
-
qreal horizontalVelocity() const;
qreal verticalVelocity() const;
bool isAtXEnd() const;
bool isAtXBeginning() const;
- qreal pageXPosition() const;
- qreal pageWidth() const;
-
bool isAtYEnd() const;
bool isAtYBeginning() const;
- qreal pageYPosition() const;
- qreal pageHeight() const;
QFxItem *viewport();
@@ -165,6 +152,8 @@ protected:
qreal visibleX() const;
qreal visibleY() const;
+ QFxFlickableVisibleArea *visibleArea();
+
protected Q_SLOTS:
virtual void ticked();
void movementStarting();
@@ -191,6 +180,7 @@ protected:
private:
Q_DISABLE_COPY(QFxFlickable)
Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QFxFlickable)
+ friend class QFxFlickableVisibleArea;
};
QT_END_NAMESPACE
diff --git a/src/declarative/fx/qfxflickable_p.h b/src/declarative/fx/qfxflickable_p.h
index ad9484f..a506027 100644
--- a/src/declarative/fx/qfxflickable_p.h
+++ b/src/declarative/fx/qfxflickable_p.h
@@ -62,29 +62,7 @@
QT_BEGIN_NAMESPACE
-class ElasticValue : public QAbstractAnimation {
- Q_OBJECT
-public:
- ElasticValue(QmlTimeLineValue &);
- void setValue(qreal to);
- void clear();
-
- virtual int duration() const { return 10000; }
-
-protected:
- virtual void updateCurrentTime(int);
-
-Q_SIGNALS:
- void updated();
-
-private:
- qreal _to;
- qreal _myValue;
- qreal _velocity;
- QmlTimeLineValue &_value;
- QTime _startTime;
-};
-
+class QFxFlickableVisibleArea;
class QFxFlickablePrivate : public QFxItemPrivate
{
Q_DECLARE_PUBLIC(QFxFlickable)
@@ -99,17 +77,22 @@ public:
void updateBeginningEnd();
public:
- QFxItem *_flick;
+ QFxItem *viewport;
QmlTimeLineValueProxy<QFxItem> _moveX;
QmlTimeLineValueProxy<QFxItem> _moveY;
- QmlTimeLine _tl;
+ QmlTimeLine timeline;
qreal vWidth;
qreal vHeight;
- bool overShoot;
- bool flicked;
- bool moving;
- bool stealMouse;
- bool pressed;
+ bool overShoot : 1;
+ bool flicked : 1;
+ bool moving : 1;
+ bool stealMouse : 1;
+ bool pressed : 1;
+ bool atXEnd : 1;
+ bool atXBeginning : 1;
+ bool atYEnd : 1;
+ bool atYBeginning : 1;
+ bool interactive : 1;
QTime lastPosTime;
QPointF lastPos;
QPointF pressPos;
@@ -121,10 +104,6 @@ public:
QmlTimeLineEvent fixupXEvent;
QmlTimeLineEvent fixupYEvent;
qreal maxVelocity;
- bool interactive;
- QFxFlickable::DragMode dragMode;
- ElasticValue elasticY;
- ElasticValue elasticX;
QTime velocityTime;
QPointF lastFlickablePosition;
qreal reportedVelocitySmoothing;
@@ -146,14 +125,7 @@ public:
Velocity verticalVelocity;
int vTime;
QmlTimeLine velocityTimeline;
- bool atXEnd;
- bool atXBeginning;
- qreal pageXPosition;
- qreal pageWidth;
- bool atYEnd;
- bool atYBeginning;
- qreal pageYPosition;
- qreal pageHeight;
+ QFxFlickableVisibleArea *visibleArea;
void handleMousePressEvent(QGraphicsSceneMouseEvent *);
void handleMouseMoveEvent(QGraphicsSceneMouseEvent *);
@@ -166,6 +138,8 @@ public:
void data_insert(int, QObject *);
QObject *data_at(int) const;
void data_clear();
+
+ friend class QFxFlickableVisibleArea;
QML_DECLARE_LIST_PROXY(QFxFlickablePrivate, QObject *, data)
};
diff --git a/src/declarative/fx/qfxlistview.cpp b/src/declarative/fx/qfxlistview.cpp
index 34fe827..523786f 100644
--- a/src/declarative/fx/qfxlistview.cpp
+++ b/src/declarative/fx/qfxlistview.cpp
@@ -801,8 +801,8 @@ void QFxListViewPrivate::fixupY()
if (currItemMode == QFxListView::SnapAuto) {
if (currentItem) {
moveReason = Mouse;
- _tl.clear();
- _tl.move(_moveY, -(currentItem->position() - snapPos), QEasingCurve(QEasingCurve::InOutQuad), 200);
+ timeline.clear();
+ timeline.move(_moveY, -(currentItem->position() - snapPos), QEasingCurve(QEasingCurve::InOutQuad), 200);
}
} else if (currItemMode == QFxListView::Snap) {
moveReason = Mouse;
@@ -813,8 +813,8 @@ void QFxListViewPrivate::fixupY()
pos = -q->maxYExtent();
else if (pos < -q->minYExtent())
pos = -q->minYExtent();
- _tl.clear();
- _tl.move(_moveY, -(pos), QEasingCurve(QEasingCurve::InOutQuad), 200);
+ timeline.clear();
+ timeline.move(_moveY, -(pos), QEasingCurve(QEasingCurve::InOutQuad), 200);
}
}
}
@@ -828,8 +828,8 @@ void QFxListViewPrivate::fixupX()
if (currItemMode == QFxListView::SnapAuto) {
if (currentItem) {
moveReason = Mouse;
- _tl.clear();
- _tl.move(_moveX, -(currentItem->position() - snapPos), QEasingCurve(QEasingCurve::InOutQuad), 200);
+ timeline.clear();
+ timeline.move(_moveX, -(currentItem->position() - snapPos), QEasingCurve(QEasingCurve::InOutQuad), 200);
}
} else if (currItemMode == QFxListView::Snap) {
moveReason = Mouse;
@@ -840,8 +840,8 @@ void QFxListViewPrivate::fixupX()
pos = -q->maxXExtent();
else if (pos < -q->minXExtent())
pos = -q->minXExtent();
- _tl.clear();
- _tl.move(_moveX, -(pos), QEasingCurve(QEasingCurve::InOutQuad), 200);
+ timeline.clear();
+ timeline.move(_moveX, -(pos), QEasingCurve(QEasingCurve::InOutQuad), 200);
}
}
}
@@ -1600,7 +1600,7 @@ void QFxListView::itemsRemoved(int modelIndex, int count)
if (d->visibleItems.isEmpty()) {
d->visibleIndex = 0;
d->visiblePos = 0;
- d->_tl.clear();
+ d->timeline.clear();
d->setPosition(0);
if (d->model->count() == 0)
update();
diff --git a/src/declarative/qml/parser/qmljs.g b/src/declarative/qml/parser/qmljs.g
index 0dffa99..b0ef866 100644
--- a/src/declarative/qml/parser/qmljs.g
+++ b/src/declarative/qml/parser/qmljs.g
@@ -70,7 +70,7 @@
%token T_REMAINDER_EQ "%=" T_RETURN "return" T_RPAREN ")"
%token T_SEMICOLON ";" T_AUTOMATIC_SEMICOLON T_STAR "*"
%token T_STAR_EQ "*=" T_STRING_LITERAL "string literal"
-%token T_PROPERTY "property" T_SIGNAL "signal"
+%token T_PROPERTY "property" T_SIGNAL "signal" T_READONLY "readonly"
%token T_SWITCH "switch" T_THIS "this" T_THROW "throw"
%token T_TILDE "~" T_TRY "try" T_TYPEOF "typeof"
%token T_VAR "var" T_VOID "void" T_WHILE "while"
@@ -92,7 +92,7 @@
%token T_FEED_JS_EXPRESSION
%nonassoc SHIFT_THERE
-%nonassoc T_IDENTIFIER T_COLON T_SIGNAL T_PROPERTY
+%nonassoc T_IDENTIFIER T_COLON T_SIGNAL T_PROPERTY T_READONLY
%nonassoc REDUCE_HERE
%start TopLevel
@@ -892,6 +892,23 @@ case $rule_number: {
} break;
./
+UiObjectMember: T_READONLY T_PROPERTY UiPropertyType T_IDENTIFIER T_COLON Expression T_AUTOMATIC_SEMICOLON ;
+UiObjectMember: T_READONLY T_PROPERTY UiPropertyType T_IDENTIFIER T_COLON Expression T_SEMICOLON ;
+/.
+case $rule_number: {
+ AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval,
+ sym(6).Expression);
+ node->isReadonlyMember = true;
+ node->readonlyToken = loc(1);
+ node->propertyToken = loc(2);
+ node->typeToken = loc(3);
+ node->identifierToken = loc(4);
+ node->colonToken = loc(5);
+ node->semicolonToken = loc(7);
+ sym(1).Node = node;
+} break;
+./
+
UiObjectMember: T_DEFAULT T_PROPERTY UiPropertyType T_IDENTIFIER T_COLON Expression T_AUTOMATIC_SEMICOLON ;
UiObjectMember: T_DEFAULT T_PROPERTY UiPropertyType T_IDENTIFIER T_COLON Expression T_SEMICOLON ;
/.
@@ -943,6 +960,15 @@ case $rule_number: {
}
./
+JsIdentifier: T_READONLY ;
+/.
+case $rule_number: {
+ QString s = QLatin1String(QmlJSGrammar::spell[T_READONLY]);
+ sym(1).sval = driver->intern(s.constData(), s.length());
+ break;
+}
+./
+
--------------------------------------------------------------------------------------------------------
-- Expressions
--------------------------------------------------------------------------------------------------------
diff --git a/src/declarative/qml/parser/qmljsast_p.h b/src/declarative/qml/parser/qmljsast_p.h
index 3967742..2c08877 100644
--- a/src/declarative/qml/parser/qmljsast_p.h
+++ b/src/declarative/qml/parser/qmljsast_p.h
@@ -2480,19 +2480,21 @@ public:
UiPublicMember(NameId *memberType,
NameId *name)
- : type(Property), memberType(memberType), name(name), expression(0), isDefaultMember(false), parameters(0)
+ : type(Property), memberType(memberType), name(name), expression(0), isDefaultMember(false), isReadonlyMember(false), parameters(0)
{ kind = K; }
UiPublicMember(NameId *memberType,
NameId *name,
ExpressionNode *expression)
- : type(Property), memberType(memberType), name(name), expression(expression), isDefaultMember(false), parameters(0)
+ : type(Property), memberType(memberType), name(name), expression(expression), isDefaultMember(false), isReadonlyMember(false), parameters(0)
{ kind = K; }
virtual SourceLocation firstSourceLocation() const
{
if (defaultToken.isValid())
return defaultToken;
+ else if (readonlyToken.isValid())
+ return readonlyToken;
return propertyToken;
}
@@ -2510,8 +2512,10 @@ public:
NameId *name;
ExpressionNode *expression;
bool isDefaultMember;
+ bool isReadonlyMember;
UiParameterList *parameters;
SourceLocation defaultToken;
+ SourceLocation readonlyToken;
SourceLocation propertyToken;
SourceLocation typeToken;
SourceLocation identifierToken;
diff --git a/src/declarative/qml/parser/qmljsgrammar.cpp b/src/declarative/qml/parser/qmljsgrammar.cpp
index f980aa4..60edb0a 100644
--- a/src/declarative/qml/parser/qmljsgrammar.cpp
+++ b/src/declarative/qml/parser/qmljsgrammar.cpp
@@ -10,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** contained in the Technology Preview License Agreement accompanying
+** this package.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
@@ -22,20 +22,20 @@
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this
** package.
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,46 +49,46 @@ const char *const QmlJSGrammar::spell [] = {
"if", "in", "instanceof", "{", "[", "<=", "(", "<", "<<", "<<=",
"-", "-=", "--", "new", "!", "!=", "!==", "numeric literal", "|", "|=",
"||", "+", "+=", "++", "?", "}", "]", "%", "%=", "return",
- ")", ";", 0, "*", "*=", "string literal", "property", "signal", "switch", "this",
- "throw", "~", "try", "typeof", "var", "void", "while", "with", "^", "^=",
- "null", "true", "false", "const", "debugger", "reserved word", "multiline string literal", "public", "import", "as",
- 0, 0, 0, 0, 0};
+ ")", ";", 0, "*", "*=", "string literal", "property", "signal", "readonly", "switch",
+ "this", "throw", "~", "try", "typeof", "var", "void", "while", "with", "^",
+ "^=", "null", "true", "false", "const", "debugger", "reserved word", "multiline string literal", "public", "import",
+ "as", 0, 0, 0, 0, 0};
const int QmlJSGrammar::lhs [] = {
- 95, 95, 95, 96, 99, 99, 102, 102, 104, 103,
- 103, 103, 103, 103, 103, 103, 103, 106, 101, 100,
- 109, 109, 111, 111, 112, 112, 108, 110, 110, 110,
- 110, 110, 110, 110, 118, 118, 118, 119, 119, 120,
- 120, 110, 110, 110, 110, 110, 110, 110, 110, 110,
- 110, 110, 110, 110, 110, 107, 107, 107, 123, 123,
- 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
- 123, 123, 123, 123, 123, 123, 113, 125, 125, 125,
- 125, 124, 124, 127, 127, 129, 129, 129, 129, 129,
- 129, 130, 130, 130, 130, 130, 130, 130, 130, 130,
- 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
- 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
- 130, 130, 131, 131, 105, 105, 105, 105, 105, 134,
- 134, 135, 135, 135, 135, 133, 133, 136, 136, 137,
- 137, 138, 138, 138, 139, 139, 139, 139, 139, 139,
- 139, 139, 139, 139, 140, 140, 140, 140, 141, 141,
- 141, 142, 142, 142, 142, 143, 143, 143, 143, 143,
- 143, 143, 144, 144, 144, 144, 144, 144, 145, 145,
- 145, 145, 145, 146, 146, 146, 146, 146, 147, 147,
- 148, 148, 149, 149, 150, 150, 151, 151, 152, 152,
- 153, 153, 154, 154, 155, 155, 156, 156, 157, 157,
- 158, 158, 128, 128, 159, 159, 160, 160, 160, 160,
- 160, 160, 160, 160, 160, 160, 160, 160, 98, 98,
- 161, 161, 162, 162, 163, 163, 97, 97, 97, 97,
- 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
- 97, 114, 175, 175, 174, 174, 122, 122, 176, 176,
- 177, 177, 179, 179, 178, 180, 183, 181, 181, 184,
- 182, 182, 115, 116, 116, 117, 117, 164, 164, 164,
- 164, 164, 164, 164, 165, 165, 165, 165, 166, 166,
- 166, 166, 167, 167, 168, 170, 185, 185, 188, 188,
- 186, 186, 189, 187, 169, 169, 169, 171, 171, 172,
- 172, 172, 190, 191, 173, 173, 121, 132, 195, 195,
- 192, 192, 193, 193, 196, 197, 197, 198, 198, 194,
- 194, 126, 126, 199};
+ 96, 96, 96, 97, 100, 100, 103, 103, 105, 104,
+ 104, 104, 104, 104, 104, 104, 104, 107, 102, 101,
+ 110, 110, 112, 112, 113, 113, 109, 111, 111, 111,
+ 111, 111, 111, 111, 119, 119, 119, 120, 120, 121,
+ 121, 111, 111, 111, 111, 111, 111, 111, 111, 111,
+ 111, 111, 111, 111, 111, 111, 111, 108, 108, 108,
+ 108, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 114,
+ 126, 126, 126, 126, 125, 125, 128, 128, 130, 130,
+ 130, 130, 130, 130, 131, 131, 131, 131, 131, 131,
+ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
+ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
+ 131, 131, 131, 131, 131, 132, 132, 106, 106, 106,
+ 106, 106, 135, 135, 136, 136, 136, 136, 134, 134,
+ 137, 137, 138, 138, 139, 139, 139, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 141, 141, 141,
+ 141, 142, 142, 142, 143, 143, 143, 143, 144, 144,
+ 144, 144, 144, 144, 144, 145, 145, 145, 145, 145,
+ 145, 146, 146, 146, 146, 146, 147, 147, 147, 147,
+ 147, 148, 148, 149, 149, 150, 150, 151, 151, 152,
+ 152, 153, 153, 154, 154, 155, 155, 156, 156, 157,
+ 157, 158, 158, 159, 159, 129, 129, 160, 160, 161,
+ 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
+ 161, 99, 99, 162, 162, 163, 163, 164, 164, 98,
+ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
+ 98, 98, 98, 98, 115, 176, 176, 175, 175, 123,
+ 123, 177, 177, 178, 178, 180, 180, 179, 181, 184,
+ 182, 182, 185, 183, 183, 116, 117, 117, 118, 118,
+ 165, 165, 165, 165, 165, 165, 165, 166, 166, 166,
+ 166, 167, 167, 167, 167, 168, 168, 169, 171, 186,
+ 186, 189, 189, 187, 187, 190, 188, 170, 170, 170,
+ 172, 172, 173, 173, 173, 191, 192, 174, 174, 122,
+ 133, 196, 196, 193, 193, 194, 194, 197, 198, 198,
+ 199, 199, 195, 195, 127, 127, 200};
const int QmlJSGrammar:: rhs[] = {
2, 2, 2, 2, 1, 1, 1, 2, 1, 2,
@@ -96,734 +96,740 @@ const int QmlJSGrammar:: rhs[] = {
1, 2, 1, 3, 2, 3, 2, 1, 5, 4,
3, 3, 3, 3, 1, 1, 1, 0, 1, 2,
4, 6, 6, 3, 3, 4, 4, 5, 5, 6,
- 6, 7, 7, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
- 3, 4, 5, 3, 4, 3, 1, 1, 2, 3,
- 4, 1, 2, 3, 5, 1, 1, 1, 1, 1,
+ 6, 7, 7, 7, 7, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 3, 3, 4, 5, 3, 4, 3, 1,
+ 1, 2, 3, 4, 1, 2, 3, 5, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 4, 3, 5, 1,
- 2, 4, 4, 4, 3, 0, 1, 1, 3, 1,
- 1, 1, 2, 2, 1, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 1, 3, 3, 3, 1, 3,
- 3, 1, 3, 3, 3, 1, 3, 3, 3, 3,
- 3, 3, 1, 3, 3, 3, 3, 3, 1, 3,
- 3, 3, 3, 1, 3, 3, 3, 3, 1, 3,
- 1, 3, 1, 3, 1, 3, 1, 3, 1, 3,
- 1, 3, 1, 3, 1, 3, 1, 3, 1, 5,
- 1, 5, 1, 3, 1, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
- 0, 1, 1, 3, 0, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 1, 2, 0, 1, 3, 3, 1, 1,
- 1, 3, 1, 3, 2, 2, 2, 0, 1, 2,
- 0, 1, 1, 2, 2, 7, 5, 7, 7, 5,
- 9, 10, 7, 8, 2, 2, 3, 3, 2, 2,
- 3, 3, 3, 3, 5, 5, 3, 5, 1, 2,
- 0, 1, 4, 3, 3, 3, 3, 3, 3, 3,
- 3, 4, 5, 2, 2, 2, 8, 8, 1, 3,
- 0, 1, 0, 1, 1, 1, 2, 1, 1, 0,
- 1, 0, 1, 2};
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
+ 3, 5, 1, 2, 4, 4, 4, 3, 0, 1,
+ 1, 3, 1, 1, 1, 2, 2, 1, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 1, 3, 3,
+ 3, 1, 3, 3, 1, 3, 3, 3, 1, 3,
+ 3, 3, 3, 3, 3, 1, 3, 3, 3, 3,
+ 3, 1, 3, 3, 3, 3, 1, 3, 3, 3,
+ 3, 1, 3, 1, 3, 1, 3, 1, 3, 1,
+ 3, 1, 3, 1, 3, 1, 3, 1, 3, 1,
+ 3, 1, 5, 1, 5, 1, 3, 1, 3, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 3, 0, 1, 1, 3, 0, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 3, 1, 2, 0, 1, 3,
+ 3, 1, 1, 1, 3, 1, 3, 2, 2, 2,
+ 0, 1, 2, 0, 1, 1, 2, 2, 7, 5,
+ 7, 7, 5, 9, 10, 7, 8, 2, 2, 3,
+ 3, 2, 2, 3, 3, 3, 3, 5, 5, 3,
+ 5, 1, 2, 0, 1, 4, 3, 3, 3, 3,
+ 3, 3, 3, 3, 4, 5, 2, 2, 2, 8,
+ 8, 1, 3, 0, 1, 0, 1, 1, 1, 2,
+ 1, 1, 0, 1, 0, 1, 2};
const int QmlJSGrammar::action_default [] = {
- 0, 0, 0, 19, 0, 162, 229, 193, 201, 197,
- 141, 213, 189, 3, 126, 60, 142, 205, 209, 130,
- 159, 140, 145, 125, 179, 166, 0, 67, 68, 63,
- 330, 56, 332, 0, 0, 0, 0, 65, 0, 0,
- 61, 64, 0, 0, 57, 58, 66, 59, 0, 62,
- 0, 0, 155, 0, 0, 142, 161, 144, 143, 0,
- 0, 0, 157, 158, 156, 160, 0, 190, 0, 0,
- 0, 0, 180, 0, 0, 0, 0, 0, 0, 170,
- 0, 0, 0, 164, 165, 163, 168, 172, 171, 169,
- 167, 182, 181, 183, 0, 198, 0, 194, 0, 0,
- 136, 123, 135, 124, 92, 93, 94, 119, 95, 120,
- 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- 106, 107, 108, 121, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 122, 0, 0, 134, 230, 137,
- 0, 138, 0, 139, 133, 0, 226, 219, 217, 224,
- 225, 223, 222, 228, 221, 220, 218, 227, 214, 0,
- 202, 0, 0, 206, 0, 0, 210, 0, 0, 136,
- 128, 0, 127, 0, 132, 146, 0, 331, 321, 322,
- 0, 319, 0, 320, 0, 323, 237, 244, 243, 251,
- 239, 0, 240, 324, 0, 329, 241, 242, 247, 245,
- 326, 325, 328, 248, 0, 259, 0, 0, 0, 0,
- 330, 56, 0, 332, 57, 231, 273, 58, 0, 0,
- 0, 260, 0, 0, 249, 250, 0, 238, 246, 274,
- 275, 318, 327, 0, 289, 290, 291, 292, 0, 285,
- 286, 287, 288, 315, 316, 0, 0, 0, 0, 0,
- 278, 279, 235, 233, 195, 203, 199, 215, 191, 236,
- 0, 142, 207, 211, 184, 173, 0, 0, 192, 0,
- 0, 0, 0, 185, 0, 0, 0, 0, 0, 177,
- 175, 178, 176, 174, 187, 186, 188, 0, 200, 0,
- 196, 0, 234, 142, 0, 216, 231, 232, 0, 231,
- 0, 0, 281, 0, 0, 0, 283, 0, 204, 0,
- 0, 208, 0, 0, 212, 271, 0, 263, 272, 266,
- 0, 270, 0, 231, 264, 0, 231, 0, 0, 282,
- 0, 0, 0, 284, 331, 321, 0, 0, 323, 0,
- 317, 0, 307, 0, 0, 0, 277, 0, 276, 0,
- 333, 0, 91, 253, 256, 0, 92, 259, 95, 120,
- 97, 98, 63, 102, 103, 56, 104, 107, 61, 64,
- 57, 231, 58, 66, 110, 59, 112, 62, 114, 115,
- 260, 117, 118, 122, 0, 84, 0, 0, 86, 90,
- 88, 75, 87, 89, 0, 85, 74, 254, 252, 130,
- 131, 136, 0, 129, 0, 306, 0, 293, 294, 0,
- 305, 0, 0, 0, 296, 301, 299, 302, 0, 0,
- 300, 301, 0, 297, 0, 298, 255, 304, 0, 255,
- 303, 0, 308, 309, 0, 255, 310, 311, 0, 0,
- 312, 0, 0, 0, 313, 314, 148, 147, 0, 0,
- 0, 280, 0, 0, 0, 295, 268, 261, 0, 269,
- 265, 0, 267, 257, 0, 258, 262, 78, 0, 0,
- 82, 69, 0, 71, 80, 0, 72, 81, 83, 73,
- 79, 70, 0, 76, 152, 150, 154, 151, 149, 153,
- 2, 5, 0, 7, 0, 6, 0, 1, 18, 9,
- 0, 0, 0, 10, 0, 11, 0, 16, 17, 0,
- 12, 13, 0, 14, 15, 8, 77, 20, 0, 4,
- 0, 27, 54, 0, 57, 25, 58, 28, 21, 0,
- 0, 55, 0, 37, 36, 35, 0, 0, 48, 0,
- 49, 0, 52, 53, 0, 0, 46, 0, 47, 0,
- 50, 51, 0, 44, 38, 45, 39, 0, 0, 0,
- 0, 41, 0, 42, 43, 40, 26, 22, 0, 31,
- 32, 33, 34, 130, 255, 0, 0, 92, 259, 95,
- 120, 97, 98, 63, 102, 103, 56, 104, 107, 61,
- 64, 57, 231, 58, 66, 110, 59, 112, 62, 114,
- 115, 260, 117, 118, 122, 130, 0, 23, 0, 29,
- 24, 30, 334};
+ 0, 0, 0, 19, 0, 165, 232, 196, 204, 200,
+ 144, 216, 192, 3, 129, 63, 145, 208, 212, 133,
+ 162, 143, 148, 128, 182, 169, 0, 70, 71, 66,
+ 333, 58, 335, 0, 0, 0, 0, 68, 0, 0,
+ 64, 67, 0, 0, 59, 61, 60, 69, 62, 0,
+ 65, 0, 0, 158, 0, 0, 145, 164, 147, 146,
+ 0, 0, 0, 160, 161, 159, 163, 0, 193, 0,
+ 0, 0, 0, 183, 0, 0, 0, 0, 0, 0,
+ 173, 0, 0, 0, 167, 168, 166, 171, 175, 174,
+ 172, 170, 185, 184, 186, 0, 201, 0, 197, 0,
+ 0, 139, 126, 138, 127, 95, 96, 97, 122, 98,
+ 123, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 124, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 125, 0, 0, 137, 233,
+ 140, 0, 141, 0, 142, 136, 0, 229, 222, 220,
+ 227, 228, 226, 225, 231, 224, 223, 221, 230, 217,
+ 0, 205, 0, 0, 209, 0, 0, 213, 0, 0,
+ 139, 131, 0, 130, 0, 135, 149, 0, 334, 324,
+ 325, 0, 322, 0, 323, 0, 326, 240, 247, 246,
+ 254, 242, 0, 243, 327, 0, 332, 244, 245, 250,
+ 248, 329, 328, 331, 251, 0, 262, 0, 0, 0,
+ 0, 333, 58, 0, 335, 59, 234, 276, 60, 0,
+ 0, 0, 263, 0, 0, 252, 253, 0, 241, 249,
+ 277, 278, 321, 330, 0, 292, 293, 294, 295, 0,
+ 288, 289, 290, 291, 318, 319, 0, 0, 0, 0,
+ 0, 281, 282, 238, 236, 198, 206, 202, 218, 194,
+ 239, 0, 145, 210, 214, 187, 176, 0, 0, 195,
+ 0, 0, 0, 0, 188, 0, 0, 0, 0, 0,
+ 180, 178, 181, 179, 177, 190, 189, 191, 0, 203,
+ 0, 199, 0, 237, 145, 0, 219, 234, 235, 0,
+ 234, 0, 0, 284, 0, 0, 0, 286, 0, 207,
+ 0, 0, 211, 0, 0, 215, 274, 0, 266, 275,
+ 269, 0, 273, 0, 234, 267, 0, 234, 0, 0,
+ 285, 0, 0, 0, 287, 334, 324, 0, 0, 326,
+ 0, 320, 0, 310, 0, 0, 0, 280, 0, 279,
+ 0, 336, 0, 94, 256, 259, 0, 95, 262, 98,
+ 123, 100, 101, 66, 105, 106, 58, 107, 110, 64,
+ 67, 59, 234, 60, 69, 113, 62, 115, 65, 117,
+ 118, 263, 120, 121, 125, 0, 87, 0, 0, 89,
+ 93, 91, 78, 90, 92, 0, 88, 77, 257, 255,
+ 133, 134, 139, 0, 132, 0, 309, 0, 296, 297,
+ 0, 308, 0, 0, 0, 299, 304, 302, 305, 0,
+ 0, 303, 304, 0, 300, 0, 301, 258, 307, 0,
+ 258, 306, 0, 311, 312, 0, 258, 313, 314, 0,
+ 0, 315, 0, 0, 0, 316, 317, 151, 150, 0,
+ 0, 0, 283, 0, 0, 0, 298, 271, 264, 0,
+ 272, 268, 0, 270, 260, 0, 261, 265, 81, 0,
+ 0, 85, 72, 0, 74, 83, 0, 75, 84, 86,
+ 76, 82, 73, 0, 79, 155, 153, 157, 154, 152,
+ 156, 2, 5, 0, 7, 0, 6, 0, 1, 18,
+ 9, 0, 0, 0, 10, 0, 11, 0, 16, 17,
+ 0, 12, 13, 0, 14, 15, 8, 80, 20, 0,
+ 4, 0, 27, 56, 0, 59, 25, 61, 60, 28,
+ 21, 0, 0, 57, 0, 37, 36, 35, 0, 0,
+ 48, 0, 49, 0, 54, 55, 0, 0, 46, 0,
+ 47, 0, 50, 51, 0, 0, 0, 0, 0, 52,
+ 53, 0, 44, 38, 45, 39, 0, 0, 0, 0,
+ 41, 0, 42, 43, 40, 26, 22, 0, 31, 32,
+ 33, 34, 133, 258, 0, 0, 95, 262, 98, 123,
+ 100, 101, 66, 105, 106, 58, 107, 110, 64, 67,
+ 59, 234, 60, 69, 113, 62, 115, 65, 117, 118,
+ 263, 120, 121, 125, 133, 0, 23, 0, 29, 24,
+ 30, 337};
const int QmlJSGrammar::goto_default [] = {
- 4, 497, 353, 191, 496, 519, 491, 495, 493, 498,
- 19, 494, 15, 527, 529, 528, 606, 521, 518, 186,
- 190, 192, 196, 544, 557, 556, 195, 227, 23, 469,
- 468, 351, 350, 6, 349, 352, 102, 14, 140, 21,
- 10, 139, 16, 22, 52, 20, 5, 25, 24, 264,
- 12, 258, 7, 254, 9, 256, 8, 255, 17, 262,
- 18, 263, 11, 257, 253, 294, 406, 259, 260, 197,
- 188, 187, 199, 228, 198, 203, 224, 225, 189, 355,
- 354, 226, 458, 457, 316, 317, 460, 319, 459, 318,
- 414, 418, 421, 417, 416, 436, 437, 180, 194, 176,
- 179, 193, 201, 200, 0};
+ 4, 498, 354, 192, 497, 520, 492, 496, 494, 499,
+ 19, 495, 15, 529, 531, 530, 615, 522, 519, 187,
+ 191, 193, 197, 546, 566, 565, 196, 228, 23, 470,
+ 469, 352, 351, 6, 350, 353, 103, 14, 141, 21,
+ 10, 140, 16, 22, 53, 20, 5, 25, 24, 265,
+ 12, 259, 7, 255, 9, 257, 8, 256, 17, 263,
+ 18, 264, 11, 258, 254, 295, 407, 260, 261, 198,
+ 189, 188, 200, 229, 199, 204, 225, 226, 190, 356,
+ 355, 227, 459, 458, 317, 318, 461, 320, 460, 319,
+ 415, 419, 422, 418, 417, 437, 438, 181, 195, 177,
+ 180, 194, 202, 201, 0};
const int QmlJSGrammar::action_index [] = {
- 214, 1098, 2066, -87, 48, 194, -95, 46, -8, -37,
- 208, -95, 317, 34, -95, -95, 502, 42, 90, 188,
- 197, -95, -95, -95, 475, 269, 1098, -95, -95, -95,
- 226, -95, 1884, 1615, 1098, 1098, 1098, -95, 761, 1098,
- -95, -95, 1098, 1098, -95, -95, -95, -95, 1098, -95,
- 1098, 1098, -95, 1098, 1098, 78, 141, -95, -95, 1098,
- 1098, 1098, -95, -95, -95, 176, 1098, 313, 1098, 1098,
- 1098, 1098, 485, 1098, 1098, 1098, 1098, 1098, 1098, 181,
- 1098, 1098, 1098, 76, 123, 194, 270, 351, 351, 351,
- 351, 455, 465, 445, 1098, -70, 1098, 10, 1793, 1098,
- 1098, -95, -95, -95, -95, -95, -95, -95, -95, -95,
- -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
- -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
- -95, -95, -95, -95, -95, 113, 1098, -95, -95, 82,
- 6, -95, 1098, -95, -95, 1098, -95, -95, -95, -95,
- -95, -95, -95, -95, -95, -95, -95, -95, -95, 1098,
- 23, 1098, 1098, 65, 67, 1098, -95, 1793, 1098, 1098,
- -95, 133, -95, -58, -95, -95, 7, -95, 209, 139,
- 20, -95, 232, -95, 39, 2157, -95, -95, -95, -95,
- -95, 281, -95, -95, 0, -95, -95, -95, -95, -95,
- -95, 2157, -95, -95, 361, -95, 342, 114, 2066, -18,
- 280, 15, -11, 2339, 87, 1098, -95, 72, 56, 1098,
- 58, -95, 62, 59, -95, -95, 211, -95, -95, -95,
- -95, -95, -95, 84, -95, -95, -95, -95, 99, -95,
- -95, -95, -95, -95, -95, 74, 69, 1098, 121, 116,
- -95, -95, 1182, -95, 88, 80, 55, -95, 305, 73,
- 57, 536, 81, 118, 503, 210, 186, 1098, 315, 1098,
- 1098, 1098, 1098, 426, 1098, 1098, 1098, 1098, 1098, 244,
- 174, 175, 180, 155, 375, 382, 407, 1098, 61, 1098,
- 85, 1098, -95, 595, 1098, -95, 1098, 79, 63, 1098,
- 66, 2066, -95, 1098, 91, 2066, -95, 1098, 64, 1098,
- 1098, 86, 77, 1098, -95, 60, 109, 54, -95, -95,
- 1098, -95, 271, 1098, -95, 75, 1098, 70, 2066, -95,
- 1098, 111, 2066, -95, 71, 261, 5, -12, 2157, -32,
- -95, 2066, -95, 1098, 134, 2066, 13, 2066, -95, 12,
- 9, -35, -95, -95, 2066, -28, 386, 17, 371, 124,
- 1098, 2066, 25, -2, 316, 29, -1, 678, 26, 24,
- -95, 1270, -95, 19, -6, 21, 1098, 8, -20, 1098,
- 52, 1098, -33, -31, 1098, -95, 1975, -3, -95, -95,
- -95, -95, -95, -95, 1098, -95, -95, -95, -95, 286,
- -95, 1098, -48, -95, 2066, -95, 103, -95, -95, 2066,
- -95, 1098, 102, -23, -95, 4, -95, 1, 83, 1098,
- -95, 11, 30, -95, 51, -95, 2066, -95, 93, 2066,
- -95, 251, -95, -95, 117, 2066, 40, -95, 37, 35,
- -95, 144, 18, 28, -95, -95, -95, -95, 1098, 127,
- 2066, -95, 1098, 94, 2066, -95, 36, -95, 135, -95,
- -95, 1098, -95, -95, 150, -95, -95, -95, 96, 1702,
- -95, -95, 1528, -95, -95, 1441, -95, -95, -95, -95,
- -95, -95, 95, -95, -95, -95, -95, -95, -95, -95,
- -95, -95, 753, -95, 292, -24, 844, -95, -95, 100,
- 650, 228, 221, -95, 195, -95, 105, -95, -95, 163,
- -95, -95, 97, -95, -95, -95, 98, -95, 43, -95,
- 929, -95, -95, 3, 217, -95, 53, -95, -95, 1014,
- 89, -95, 229, -95, -95, -95, 41, 256, -95, 1098,
- -95, 218, -95, -95, 33, 224, -95, 1098, -95, 206,
- -95, -95, 159, -95, 196, -95, 38, -15, 199, 198,
- 207, -95, 122, -95, -95, -95, -95, -95, 1354, -95,
- -95, -95, -95, 431, 2248, 1615, 16, 326, 47, 335,
- 129, 1098, 2066, 50, 27, 290, 49, 14, 678, 44,
- 31, -95, 1270, -95, 45, 22, 32, 1098, 68, -19,
- 1098, 52, 1098, -29, -36, 333, 101, -95, 844, -95,
- -95, -95, -95,
+ 111, 1025, 2004, -36, 50, 73, -96, 57, -6, -69,
+ 231, -96, 307, 1, -96, -96, 485, 29, 71, 232,
+ 212, -96, -96, -96, 473, 286, 1025, -96, -96, -96,
+ 280, -96, 1820, 1460, 1025, 1025, 1025, -96, 684, 1025,
+ -96, -96, 1025, 1025, -96, -96, -96, -96, -96, 1025,
+ -96, 1025, 1025, -96, 1025, 1025, 98, 219, -96, -96,
+ 1025, 1025, 1025, -96, -96, -96, 200, 1025, 255, 1025,
+ 1025, 1025, 1025, 434, 1025, 1025, 1025, 1025, 1025, 1025,
+ 286, 1025, 1025, 1025, 129, 102, 103, 286, 207, 286,
+ 286, 213, 408, 418, 398, 1025, 30, 1025, 63, 1728,
+ 1025, 1025, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, 114, 1025, -96, -96,
+ 18, -38, -96, 1025, -96, -96, 1025, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ 1025, -47, 1025, 1025, 35, 125, 1025, -96, 1728, 1025,
+ 1025, -96, 118, -96, -46, -96, -96, 56, -96, 294,
+ 87, 51, -96, 301, -96, 38, 2096, -96, -96, -96,
+ -96, -96, 199, -96, -96, 11, -96, -96, -96, -96,
+ -96, -96, 2096, -96, -96, 348, -96, 507, 97, 2004,
+ 31, 275, 92, 67, 2280, 90, 1025, -96, 79, 64,
+ 1025, 61, -96, 55, 65, -96, -96, 270, -96, -96,
+ -96, -96, -96, -96, 85, -96, -96, -96, -96, 101,
+ -96, -96, -96, -96, -96, -96, 43, 49, 1025, 104,
+ 83, -96, -96, 1199, -96, 77, 41, -7, -96, 338,
+ 68, 32, 600, 78, 134, 440, 286, 283, 1025, 260,
+ 1025, 1025, 1025, 1025, 440, 1025, 1025, 1025, 1025, 1025,
+ 286, 286, 286, 286, 286, 341, 356, 362, 1025, -10,
+ 1025, 80, 1025, -96, 503, 1025, -96, 1025, 62, 16,
+ 1025, 14, 2004, -96, 1025, 121, 2004, -96, 1025, 58,
+ 1025, 1025, 82, 81, 1025, -96, 66, 131, 59, -96,
+ -96, 1025, -96, 251, 1025, -96, -41, 1025, -42, 2004,
+ -96, 1025, 140, 2004, -96, -17, 227, -37, -8, 2096,
+ -28, -96, 2004, -96, 1025, 108, 2004, 5, 2004, -96,
+ -5, -4, -55, -96, -96, 2004, -22, 433, 47, 425,
+ 116, 1025, 2004, 40, 20, 360, 52, 26, 760, 48,
+ 42, -96, 1114, -96, 27, 2, 23, 1025, 22, 6,
+ 1025, 37, 1025, 9, 7, 1025, -96, 1912, 28, -96,
+ -96, -96, -96, -96, -96, 1025, -96, -96, -96, -96,
+ 228, -96, 1025, -3, -96, 2004, -96, 99, -96, -96,
+ 2004, -96, 1025, 96, -25, -96, 36, -96, 36, 95,
+ 1025, -96, 36, -2, -96, 10, -96, 2004, -96, 107,
+ 2004, -96, 188, -96, -96, 215, 2004, 12, -96, 25,
+ 15, -96, 261, -9, 19, -96, -96, -96, -96, 1025,
+ 123, 2004, -96, 1025, 133, 2004, -96, -1, -96, 144,
+ -96, -96, 1025, -96, -96, 248, -96, -96, -96, 120,
+ 1372, -96, -96, 1636, -96, -96, 1548, -96, -96, -96,
+ -96, -96, -96, 127, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, 768, -96, 241, 45, 656, -96, -96,
+ 115, 768, 179, 204, -96, 128, -96, 105, -96, -96,
+ 304, -96, -96, 76, -96, -96, -96, 93, -96, 54,
+ -96, 854, -96, -96, 44, 150, -96, 70, 34, -96,
+ -96, 940, 100, -96, 153, -96, -96, -96, -26, 168,
+ -96, 1025, -96, 147, -96, -96, 46, 192, -96, 1025,
+ -96, 149, -96, -96, 162, 53, 72, 1025, 165, -96,
+ -96, 161, -96, 169, -96, 60, 13, 230, 166, 254,
+ -96, 110, -96, -96, -96, -96, -96, 1284, -96, -96,
+ -96, -96, 274, 2188, 1460, 69, 417, 91, 507, 124,
+ 1025, 2004, 89, -19, 345, 8, -24, 684, 21, 17,
+ -96, 1114, -96, 4, -30, 0, 1025, 39, 3, 1025,
+ 33, 1025, -23, 24, 367, 109, -96, 578, -96, -96,
+ -96, -96,
- -105, 34, 32, -105, -105, -105, -105, -105, -105, -105,
- -105, -105, -105, -105, -105, -105, -27, -105, -105, -105,
- -105, -105, -105, -105, -105, -105, 82, -105, -105, -105,
- 20, -105, -105, 13, 28, 94, 78, -105, 67, 63,
- -105, -105, 57, 56, -105, -105, -105, -105, 144, -105,
- 150, 147, -105, 142, 128, -105, -105, -105, -105, 135,
- 123, 157, -105, -105, -105, -105, 166, -105, 165, 154,
- 164, 161, -105, 134, 117, 104, 108, 110, 107, -105,
- 102, 99, 101, -105, -105, -105, -105, -105, -105, -105,
- -105, -105, -105, -105, 114, -105, 119, -105, 148, 75,
- 55, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, 8, 11, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -50, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, 104, -105, -105, -105,
+ 35, -105, -105, -4, 34, 85, 75, -105, 164, 167,
+ -105, -105, 171, 170, -105, -105, -105, -105, -105, 160,
+ -105, 166, 163, -105, 154, 177, -105, -105, -105, -105,
+ 174, 108, 116, -105, -105, -105, -105, 122, -105, 121,
+ 114, 109, 111, -105, 123, 124, 143, 147, 153, 151,
+ -105, 146, 138, 131, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, 137, -105, 126, -105, 90,
+ 52, 41, -105, -105, -105, -105, -105, -105, -105, -105,
-105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
-105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
- -105, -105, -105, -105, -105, -105, 22, -105, -105, -105,
- -105, -105, 24, -105, -105, 27, -105, -105, -105, -105,
- -105, -105, -105, -105, -105, -105, -105, -105, -105, 162,
- -105, 216, -29, -105, -105, -3, -105, 199, 33, 152,
- -105, -105, -105, -105, -105, -105, -105, -105, 7, -105,
- -105, -105, 52, -105, -105, 66, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, 58, -105, -105,
+ -105, -105, -105, 59, -105, -105, 38, -105, -105, -105,
-105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
- -105, 95, -105, -105, 29, -105, 72, -105, 65, -105,
- 61, -105, -105, -105, -105, 80, -105, -105, -105, 4,
- -9, -105, -105, -105, -105, -105, 23, -105, -105, -105,
+ 175, -105, 139, -26, -105, -105, 37, -105, 227, 29,
+ 76, -105, -105, -105, -105, -105, -105, -105, -105, -10,
+ -105, -105, -105, 30, -105, -105, 4, -105, -105, -105,
-105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
- -105, -105, -105, -105, -105, -105, -105, 53, -105, -105,
- -105, -105, 116, -105, -105, -105, -105, -105, -105, -105,
- -105, -105, -105, -105, -105, -105, 68, 203, -105, 218,
- 215, 214, 175, -105, 86, 92, 83, 85, 69, -105,
- -105, -105, -105, -105, -105, -105, -105, 196, -105, 186,
- -105, 185, -105, -105, 195, -105, 159, -105, -105, 163,
- -105, 26, -105, 90, -105, 9, -105, 173, -105, 279,
- 206, -105, -105, 205, -105, -105, -105, -105, -105, -105,
- 172, -105, 84, 106, -105, -105, 109, -105, 73, -105,
- 79, -105, 74, -105, -105, 96, -105, -105, 112, -105,
- -105, 37, -105, 39, -105, 49, -105, 60, -105, -105,
- -105, -105, -105, -105, 50, -105, 46, -105, 38, -105,
- 153, 77, -105, -105, 59, -105, -105, 143, -105, -105,
- -105, -2, -105, -105, -105, -105, 17, -105, 8, 98,
- -105, 136, -105, -105, -7, -105, -18, -105, -105, -105,
- -105, -105, -105, -105, -19, -105, -105, -105, -105, -105,
- -105, 167, -105, -105, 64, -105, -105, -105, -105, 70,
- -105, 62, -105, -105, -105, -105, -105, -54, -105, 40,
- -105, -28, -105, -105, -105, -105, -73, -105, -105, -25,
- -105, -105, -105, -105, -105, -105, -37, -105, -105, 42,
- -105, 41, -105, 25, -105, -105, -105, -105, 44, -105,
- 47, -105, 45, -105, 43, -105, -105, -105, -105, -105,
- -105, 54, -105, -105, 91, -105, -105, -105, -105, 36,
- -105, -105, 88, -105, -105, 48, -105, -105, -105, -105,
+ -105, -105, 83, -105, -105, 39, -105, 54, -105, 60,
+ -105, 49, -105, -105, -105, -105, 46, -105, -105, -105,
+ 65, 68, -105, -105, -105, -105, -105, 9, -105, -105,
-105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
- -105, -105, -5, -105, -105, 5, 100, -105, -105, -105,
- -1, -105, -12, -105, -105, -105, -105, -105, -105, 3,
+ -105, -105, -105, -105, -105, -105, -105, -105, 24, -105,
+ -105, -105, -105, 107, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, 21, 223, -105,
+ 219, 211, 230, 234, -105, 96, 93, 74, 95, 97,
+ -105, -105, -105, -105, -105, -105, -105, -105, 179, -105,
+ 183, -105, 195, -105, -105, 209, -105, 184, -105, -105,
+ 101, -105, 7, -105, 16, -105, 15, -105, 191, -105,
+ 193, 185, -105, -105, 182, -105, -105, -105, -105, -105,
+ -105, 233, -105, 91, 203, -105, -105, 198, -105, 62,
+ -105, 57, -105, 173, -105, -105, 86, -105, -105, 84,
+ -105, -105, 56, -105, 45, -105, 55, -105, 80, -105,
+ -105, -105, -105, -105, -105, 77, -105, 12, -105, 63,
+ -105, 82, 61, -105, -105, 47, -105, -105, 102, -105,
+ -105, -105, 13, -105, -105, -105, -105, 36, -105, 22,
+ 71, -105, 92, -105, -105, -33, -105, -24, -105, -105,
+ -105, -105, -105, -105, -105, -19, -105, -105, -105, -105,
+ -105, -105, 73, -105, -105, 3, -105, -105, -105, -105,
+ 70, -105, 42, -105, -105, -105, -105, -105, -58, -105,
+ 64, -105, -56, -105, -105, -105, -105, -45, -105, -105,
+ -41, -105, -105, -105, -105, -105, -105, -31, -105, -105,
+ 50, -105, 66, -105, 69, -105, -105, -105, -105, 81,
+ -105, 44, -105, 53, -105, 51, -105, -105, -105, -105,
+ -105, -105, 48, -105, -105, 78, -105, -105, -105, -105,
+ 40, -105, -105, 249, -105, -105, 43, -105, -105, -105,
-105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
- 258, -105, -105, -105, -105, -105, -105, -105, -105, 262,
- -105, -105, -6, -105, -105, -105, -105, -105, -105, 19,
- -105, -105, -105, -105, -105, -105, -105, 18, -105, -105,
- -105, -105, -105, -105, 2, -105, -105, -105, 6, 10,
- 11, -105, -105, -105, -105, -105, -105, -105, 272, -105,
- -105, -105, -105, -105, -105, 213, 12, 0, -105, -10,
- -105, 153, 1, -105, -105, -4, -105, -105, 76, -105,
- -105, -105, 21, -105, -105, -105, -105, 71, -105, 51,
- 87, -105, 93, -105, -105, -105, -105, -105, 81, -105,
- -105, -105, -105};
+ -105, -105, -105, 67, -105, -105, 72, 110, -105, -105,
+ -105, 2, -105, 6, -105, -105, -105, -105, -105, -105,
+ 10, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, 344, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, 274, -105, -105, -22, -105, -105, -105, -105, -105,
+ -105, 1, -105, -105, -105, -105, -105, -105, -105, 5,
+ -105, -105, -105, -105, -20, -105, -105, 17, -105, -105,
+ -105, -105, -105, 31, -105, -105, -105, 28, 27, 32,
+ -105, -105, -105, -105, -105, -105, -105, 284, -105, -105,
+ -105, -105, -105, -105, 210, 26, 14, -105, 18, -105,
+ 88, 23, -105, -105, 19, -105, -105, 79, -105, -105,
+ -105, 25, -105, -105, -105, -105, 20, -105, 33, 103,
+ -105, 89, -105, -105, -105, -105, -105, 87, -105, -105,
+ -105, -105};
const int QmlJSGrammar::action_info [] = {
- 452, 492, 174, 448, 394, 452, 419, 448, 96, 419,
- 415, 66, 403, 435, 435, -113, 419, 386, 252, 384,
- 396, 338, 341, 340, -119, 343, -89, 398, -111, 347,
- 411, -90, -100, -108, 252, 343, -86, 426, -90, -111,
- 94, 96, 136, 178, 159, 562, 559, 66, 612, 520,
- 343, -108, -89, 461, -119, 231, -86, -100, 411, -116,
- 439, 435, 545, 252, 492, 337, 144, 159, 435, 532,
- 537, 94, 185, 441, 165, -113, 520, 320, 443, 409,
- 184, 291, 552, 307, 313, 330, 267, 136, 307, 267,
- 142, 435, 411, 422, 404, 452, 568, 0, 448, 136,
- 429, 136, 136, 136, 472, 247, 425, 335, 0, 608,
- 136, 0, 287, 167, 0, 167, 53, 322, 296, 136,
- 57, 136, 520, 438, 299, 0, 301, 54, 287, 136,
- 328, 58, 168, 289, 168, 136, 326, 439, 423, 289,
- 161, 136, 136, 464, 162, 237, 236, 182, 0, 0,
- 246, 305, 473, 59, 454, 483, 0, 609, 514, 513,
- 242, 241, 413, 53, 408, 407, 508, 507, 309, 137,
- 323, 332, 310, 31, 54, 244, 243, 251, 250, 31,
- 80, 249, 81, 564, 563, 244, 243, 450, 59, 172,
- 244, 243, 31, 82, 345, 554, 465, 463, 60, 80,
- 80, 81, 81, 167, 61, 80, 80, 81, 81, 59,
- 44, 45, 82, 82, 136, 31, 44, 45, 82, 82,
- 555, 553, 168, 98, 169, 533, 136, 533, 31, 44,
- 45, 547, 0, 60, 53, 80, 31, 81, 31, 61,
- 31, 0, 99, 167, 100, 54, 533, 0, 82, 0,
- 31, 0, 44, 45, 60, 31, 511, 510, 533, 136,
- 61, 31, 168, 539, 401, 44, 45, 551, 550, 80,
- 535, 81, 535, 44, 45, 44, 45, 44, 45, 543,
- 542, 534, 82, 534, 509, 548, 546, 44, 45, 136,
- 31, 535, 44, 45, 80, 80, 81, 81, 44, 45,
- 31, 167, 534, 535, 3, 2, 1, 82, 82, 31,
- 0, 0, 433, 432, 534, 0, 0, 540, 538, 31,
- 168, 0, 401, 269, 270, 0, -330, 44, 45, 0,
- 0, 68, 69, 269, 270, 68, 69, 44, 45, 504,
- 0, 0, 230, 229, 0, 31, 44, 45, 167, 0,
- 271, 272, -330, 505, 503, 31, 44, 45, 70, 71,
- 271, 272, 70, 71, 31, 0, -77, 168, 0, 169,
- 0, 31, 0, 0, 0, 0, 80, 0, 81, 0,
- 0, 502, 44, 45, 0, 0, 0, 235, 234, 82,
- 31, 0, 44, 45, 0, 0, 240, 239, 274, 275,
- 31, 44, 45, 240, 239, 274, 275, 276, 44, 45,
- 277, 0, 278, 0, 276, 31, 0, 277, 0, 278,
- 0, 0, 235, 234, 0, 0, 0, 44, 45, 0,
- 274, 275, 240, 239, 0, 0, 0, 44, 45, 276,
- 0, 0, 277, 0, 278, 0, 167, 235, 234, 274,
- 275, 0, 44, 45, 0, 0, 0, 0, 276, 0,
- 0, 277, 0, 278, -77, 168, 0, 169, 73, 74,
- 0, 0, 0, 0, 0, 0, 75, 76, 73, 74,
- 77, 0, 78, 0, 0, 0, 75, 76, 73, 74,
- 77, 0, 78, 0, 0, 0, 75, 76, 73, 74,
- 77, 0, 78, 0, 0, 146, 75, 76, 73, 74,
- 77, 0, 78, 0, 0, 147, 75, 76, 0, 148,
- 77, 0, 78, 0, 0, 0, 274, 275, 149, 0,
- 150, 0, 0, 0, 0, 276, 0, 0, 277, 146,
- 278, 151, 0, 152, 57, 0, 0, 0, 0, 147,
- 0, 153, 0, 148, 154, 58, 0, 0, 0, 0,
- 155, 0, 149, 0, 150, 0, 156, 303, 0, 0,
- 0, 0, 0, 0, 0, 151, 0, 152, 57, 0,
- 0, 157, 0, 0, 0, 153, 0, 0, 154, 58,
- 0, 0, 0, 0, 155, 0, 0, 0, 146, 0,
- 156, 0, 0, 0, 0, 0, 0, 0, 147, 0,
- 0, 0, 148, 0, 0, 157, 0, 0, 0, 0,
- 0, 149, 0, 150, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 151, 0, 152, 57, 0, 0,
- 0, 0, 0, 0, 153, 0, 0, 154, 58, 0,
- 0, 0, 0, 155, 0, 0, 0, 0, 0, 156,
- 0, 0, 27, 28, 0, 0, 0, 0, 0, 0,
- 0, 0, 30, 0, 157, 0, 0, 0, 0, 31,
+ 397, 95, 385, 539, 387, 427, 412, -114, 416, 137,
+ 97, -92, 344, 449, 175, -89, 462, 253, 329, 336,
+ 327, 348, 145, 338, -93, 339, 143, 341, -111, -116,
+ -114, 160, 440, 399, -92, 395, 436, 160, 412, 436,
+ -119, 420, 95, 453, -119, 449, -116, -103, 436, -93,
+ 621, 444, 436, 493, -122, -111, 253, 404, 67, -89,
+ 453, 442, 344, 561, 67, 426, 232, 253, 568, 290,
+ 137, 186, 290, 571, 302, 547, 292, 300, 268, 557,
+ 308, 268, 556, 321, 308, 248, 410, 521, 314, 288,
+ 331, 449, 179, 297, 436, 183, -103, 405, -122, 342,
+ 412, 453, 521, 344, 137, 423, 288, 577, 168, 97,
+ 534, 185, 137, 54, 430, 137, 137, 617, 0, 0,
+ 247, 162, 137, 0, 55, 163, 137, 169, 473, 137,
+ 168, 137, 166, 521, 493, 137, 554, 515, 514, 323,
+ 58, 137, 54, 54, 252, 251, 238, 237, 137, 169,
+ 424, 59, 465, 55, 55, 137, 414, 137, 245, 244,
+ 409, 408, 243, 242, 250, 618, 509, 508, 346, 54,
+ 138, 573, 572, 137, 173, 541, 474, 245, 244, 535,
+ 55, 306, 535, 451, 310, 245, 244, 484, 311, 512,
+ 511, 535, 324, 455, 168, 535, 137, 563, 535, 549,
+ 333, 0, 3, 2, 1, 466, 464, 137, 545, 544,
+ 553, 552, 60, 169, 0, 402, 0, 0, 510, 0,
+ 0, 439, 564, 562, 60, 537, 560, 559, 537, 542,
+ 540, 60, 81, 31, 82, 440, 536, 537, 81, 536,
+ 82, 537, 0, 168, 537, 83, 99, 168, 536, 434,
+ 433, 83, 536, 550, 548, 536, 31, 61, 0, 31,
+ 231, 230, 169, 62, 402, 100, 169, 101, 170, 61,
+ 44, 46, 45, 69, 70, 62, 61, 31, 270, 271,
+ 31, 0, 62, 31, 0, 0, 0, 0, 505, 168,
+ 31, 0, 0, 44, 46, 45, 44, 46, 45, 31,
+ 71, 72, 506, 504, 31, 272, 273, -80, 169, 31,
+ 170, 81, 31, 82, 44, 46, 45, 44, 46, 45,
+ 44, 46, 45, 31, 83, 69, 70, 44, 46, 45,
+ 31, 503, 0, 31, 0, 0, 44, 46, 45, 0,
+ 0, 44, 46, 45, 0, 0, 44, 46, 45, 44,
+ 46, 45, 71, 72, 0, 0, 270, 271, 0, 0,
+ 44, 46, 45, 0, 275, 276, 0, 44, 46, 45,
+ 44, 46, 45, 277, 31, 0, 278, 31, 279, 275,
+ 276, -333, 168, 272, 273, 275, 276, 0, 277, 31,
+ 0, 278, 0, 279, 277, 0, -333, 278, 0, 279,
+ -80, 169, 0, 170, 0, 0, 0, 0, 0, 236,
+ 235, 44, 46, 45, 44, 46, 45, 0, 0, 0,
+ 0, 74, 75, 0, 0, 0, 44, 46, 45, 76,
+ 77, 74, 75, 78, 0, 79, 0, 0, 0, 76,
+ 77, 74, 75, 78, 0, 79, 31, 0, 0, 76,
+ 77, 0, 0, 78, 31, 79, 0, 74, 75, 0,
+ 0, 0, 31, 275, 276, 76, 77, 0, 0, 78,
+ 0, 79, 277, 0, 0, 278, 0, 279, 236, 235,
+ 0, 0, 0, 44, 46, 45, 241, 240, 147, 0,
+ 0, 44, 46, 45, 236, 235, 74, 75, 148, 44,
+ 46, 45, 149, 0, 76, 77, 147, 0, 78, 0,
+ 79, 150, 0, 151, 0, 0, 148, 0, 0, 0,
+ 149, 0, 0, 0, 152, 0, 153, 58, 0, 150,
+ 0, 151, 0, 0, 154, 0, 31, 155, 59, 0,
+ 0, 0, 152, 156, 153, 58, 0, 0, 0, 157,
+ 0, 0, 154, 0, 0, 155, 59, 0, 0, 0,
+ 0, 156, 0, 0, 0, 158, 0, 157, 241, 240,
+ 0, 0, 0, 44, 46, 45, 0, 0, 0, 0,
+ 0, 0, 0, 158, 0, 0, 0, 0, 0, 0,
+ 27, 28, 0, 0, 0, 0, 0, 0, 0, 0,
+ 30, 0, 0, 147, 0, 0, 0, 31, 0, 0,
+ 0, 32, 33, 148, 34, 0, 0, 149, 0, 0,
+ 0, 501, 0, 0, 0, 41, 150, 0, 151, 0,
+ 0, 304, 0, 0, 0, 0, 0, 0, 0, 152,
+ 0, 153, 58, 47, 44, 46, 45, 0, 48, 154,
+ 0, 0, 155, 59, 0, 0, 0, 0, 156, 40,
+ 50, 29, 0, 0, 157, 37, 0, 0, 27, 28,
+ 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,
+ 158, 0, 0, 0, 0, 31, 0, 0, 0, 32,
+ 33, 0, 34, 0, 0, 0, 27, 28, 0, 501,
+ 0, 0, 0, 41, 0, 0, 30, 0, 0, 0,
+ 0, 0, 0, 31, 0, 0, 0, 32, 33, 0,
+ 34, 47, 44, 46, 45, 0, 48, 38, 0, 0,
+ 0, 41, 0, 0, 0, 0, 0, 40, 50, 29,
+ 0, 0, 0, 37, 0, 0, 0, 0, 0, 47,
+ 44, 46, 45, 0, 48, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 40, 50, 29, 0, 0,
+ 0, 37, 27, 28, 0, 0, 0, 0, 0, 0,
+ 27, 28, 30, 0, 0, 0, 0, 0, 0, 31,
+ 30, 0, 0, 32, 33, 0, 34, 31, 0, 0,
+ 0, 32, 33, 38, 34, 0, 0, 41, 0, 0,
+ 0, 501, 0, 0, 0, 41, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 47, 44, 46, 45, 0,
+ 48, 0, 0, 47, 44, 46, 45, 0, 48, 0,
+ 0, 40, 50, 29, 0, 0, 0, 37, 0, 40,
+ 50, 29, 0, 0, 0, 37, 0, 0, 0, 0,
+ 0, 0, 0, 0, 524, 0, 27, 28, 0, 0,
+ 0, 0, 0, 0, 0, 0, 211, 0, 0, 0,
+ 0, 0, 0, 31, 0, 0, 0, 32, 33, 0,
+ 34, 0, 0, 0, 0, 0, 0, 501, 0, 0,
+ 0, 41, 0, 0, 0, 0, 0, 0, 0, 526,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
+ 525, 528, 527, 0, 48, 0, 0, 0, 0, 222,
+ 0, 0, 0, 0, 0, 40, 50, 29, 206, 0,
+ 0, 37, 0, 0, 0, 0, 0, 0, 0, 0,
+ 524, 0, 27, 28, 0, 0, 0, 0, 0, 0,
+ 0, 0, 211, 0, 0, 0, 0, 0, 0, 31,
0, 0, 0, 32, 33, 0, 34, 0, 0, 0,
- 27, 28, 0, 500, 0, 0, 0, 41, 0, 0,
- 30, 0, 0, 0, 0, 0, 0, 31, 0, 0,
- 0, 32, 33, 0, 34, 46, 44, 45, 0, 47,
- 0, 38, 0, 0, 0, 41, 0, 0, 0, 0,
- 40, 49, 29, 0, 0, 0, 37, 0, 0, 0,
- 0, 0, 0, 46, 44, 45, 0, 47, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 40, 49,
- 29, 0, 0, 0, 37, 27, 28, 0, 0, 0,
- 0, 0, 0, 27, 28, 30, 0, 0, 0, 0,
- 0, 0, 31, 30, 0, 0, 32, 33, 0, 34,
- 31, 0, 0, 0, 32, 33, 500, 34, 0, 0,
- 41, 0, 0, 0, 38, 0, 0, 0, 41, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 46, 44,
- 45, 0, 47, 0, 0, 0, 46, 44, 45, 0,
- 47, 0, 0, 40, 49, 29, 0, 0, 0, 37,
- 0, 40, 49, 29, 0, 0, 0, 37, 0, 0,
- 0, 0, 0, 0, 0, 0, 27, 28, 0, 0,
+ 0, 0, 0, 501, 0, 0, 0, 41, 0, 0,
+ 0, 0, 0, 0, 0, 575, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 47, 525, 528, 527, 0,
+ 48, 0, 0, 0, 0, 222, 0, 0, 0, 0,
+ 0, 40, 50, 29, 206, 0, 0, 37, 0, 0,
+ 0, 0, 0, 0, 0, 0, 26, 27, 28, 0,
+ 0, 0, 0, 0, 0, 0, 0, 30, 0, 0,
+ 0, 0, 0, 0, 31, 0, 0, 0, 32, 33,
+ 0, 34, 0, 0, 0, 35, 0, 36, 38, 39,
+ 0, 0, 41, 0, 0, 0, 42, 0, 43, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 47, 44, 46, 45, 0, 48, 0, 49, 0, 51,
+ 0, 52, 0, 0, 0, 0, 40, 50, 29, 0,
+ 0, 0, 37, 0, 0, 0, 0, 0, 0, 0,
+ 0, -112, 0, 0, 0, 26, 27, 28, 0, 0,
0, 0, 0, 0, 0, 0, 30, 0, 0, 0,
0, 0, 0, 31, 0, 0, 0, 32, 33, 0,
- 34, 0, 0, 0, 0, 0, 0, 500, 0, 0,
- 0, 41, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 46,
- 44, 45, 0, 47, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 40, 49, 29, 0, 0, 0,
- 37, 0, 0, 0, 0, 0, 0, 0, 0, 523,
- 0, 27, 28, 0, 0, 0, 0, 0, 0, 0,
- 0, 210, 0, 0, 0, 0, 0, 0, 31, 0,
- 0, 0, 32, 33, 0, 34, 0, 0, 0, 0,
- 0, 0, 500, 0, 0, 0, 41, 0, 0, 0,
- 0, 0, 0, 0, 525, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 46, 524, 526, 0, 47, 0,
- 0, 0, 0, 221, 0, 0, 0, 0, 0, 40,
- 49, 29, 205, 0, 0, 37, 0, 0, 0, 0,
- 0, 0, 0, 0, 523, 0, 27, 28, 0, 0,
- 0, 0, 0, 0, 0, 0, 210, 0, 0, 0,
- 0, 0, 0, 31, 0, 0, 0, 32, 33, 0,
- 34, 0, 0, 0, 0, 0, 0, 500, 0, 0,
- 0, 41, 0, 0, 0, 0, 0, 0, 0, 566,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 46,
- 524, 526, 0, 47, 0, 0, 0, 0, 221, 0,
- 0, 0, 0, 0, 40, 49, 29, 205, 0, 0,
- 37, 0, 0, 0, 0, 0, 0, 0, 0, 26,
- 27, 28, 0, 0, 0, 0, 0, 0, 0, 0,
- 30, 0, 0, 0, 0, 0, 0, 31, 0, 0,
- 0, 32, 33, 0, 34, 0, 0, 0, 35, 0,
- 36, 38, 39, 0, 0, 41, 0, 0, 0, 42,
- 0, 43, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 46, 44, 45, 0, 47, 0, 48,
- 0, 50, 0, 51, 0, 0, 0, 0, 40, 49,
- 29, 0, 0, 0, 37, 0, 0, 0, 0, 0,
- 0, 0, 0, 26, 27, 28, 0, 0, 0, 0,
+ 34, 0, 0, 0, 35, 0, 36, 38, 39, 0,
+ 0, 41, 0, 0, 0, 42, 0, 43, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
+ 44, 46, 45, 0, 48, 0, 49, 0, 51, 0,
+ 52, 0, 0, 0, 0, 40, 50, 29, 0, 0,
+ 0, 37, 0, 0, 0, 0, 0, 0, 0, 0,
+ 26, 27, 28, 0, 0, 0, 0, 0, 0, 0,
+ 0, 30, 0, 0, 0, 0, 0, 0, 31, 0,
+ 0, 0, 32, 33, 0, 34, 0, 0, 0, 35,
+ 0, 36, 38, 39, 0, 0, 41, 0, 0, 0,
+ 42, 0, 43, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 47, 44, 46, 45, 0, 48,
+ 0, 49, 0, 51, 267, 52, 0, 0, 0, 0,
+ 40, 50, 29, 0, 0, 0, 37, 0, 0, 0,
+ 0, 0, 0, 0, 0, 26, 27, 28, 0, 0,
+ 0, 0, 0, 0, 0, 0, 30, 0, 0, 0,
+ 0, 0, 0, 31, 213, 0, 0, 583, 584, 0,
+ 34, 0, 0, 0, 35, 0, 36, 38, 39, 0,
+ 0, 41, 0, 0, 0, 42, 0, 43, 0, 0,
+ 0, 0, 0, 0, 0, 217, 0, 0, 0, 47,
+ 44, 46, 45, 0, 48, 0, 49, 0, 51, 0,
+ 52, 0, 0, 0, 0, 40, 50, 29, 0, 0,
+ 0, 37, 0, 0, 0, 0, 0, 0, 0, 0,
+ 479, 0, 0, 26, 27, 28, 0, 0, 0, 0,
0, 0, 0, 0, 30, 0, 0, 0, 0, 0,
0, 31, 0, 0, 0, 32, 33, 0, 34, 0,
0, 0, 35, 0, 36, 38, 39, 0, 0, 41,
- 0, 0, 0, 42, 0, 43, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 46, 44, 45,
- 0, 47, 0, 48, 0, 50, 266, 51, 0, 0,
- 0, 0, 40, 49, 29, 0, 0, 0, 37, 0,
- 0, 0, 0, 0, 0, 0, 0, -109, 0, 0,
+ 0, 0, 0, 42, 0, 43, 0, 0, 482, 0,
+ 0, 0, 0, 0, 0, 0, 0, 47, 44, 46,
+ 45, 0, 48, 0, 49, 0, 51, 0, 52, 0,
+ 0, 0, 0, 40, 50, 29, 0, 0, 0, 37,
+ 0, 0, 0, 0, 0, 0, 0, 0, 471, 0,
0, 26, 27, 28, 0, 0, 0, 0, 0, 0,
0, 0, 30, 0, 0, 0, 0, 0, 0, 31,
0, 0, 0, 32, 33, 0, 34, 0, 0, 0,
35, 0, 36, 38, 39, 0, 0, 41, 0, 0,
- 0, 42, 0, 43, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 46, 44, 45, 0, 47,
- 0, 48, 0, 50, 0, 51, 0, 0, 0, 0,
- 40, 49, 29, 0, 0, 0, 37, 0, 0, 0,
- 0, 0, 0, 0, 0, 26, 27, 28, 0, 0,
- 0, 0, 0, 0, 0, 0, 30, 0, 0, 0,
- 0, 0, 0, 31, 212, 0, 0, 574, 575, 0,
- 34, 0, 0, 0, 35, 0, 36, 38, 39, 0,
- 0, 41, 0, 0, 0, 42, 0, 43, 0, 0,
- 0, 0, 0, 0, 0, 216, 0, 0, 0, 46,
- 44, 45, 0, 47, 0, 48, 0, 50, 0, 51,
- 0, 0, 0, 0, 40, 49, 29, 0, 0, 0,
- 37, 0, 0, 0, 0, 0, 0, 0, 0, 478,
- 0, 0, 26, 27, 28, 0, 0, 0, 0, 0,
- 0, 0, 0, 30, 0, 0, 0, 0, 0, 0,
- 31, 0, 0, 0, 32, 33, 0, 34, 0, 0,
- 0, 35, 0, 36, 38, 39, 0, 0, 41, 0,
- 0, 0, 42, 0, 43, 0, 0, 479, 0, 0,
- 0, 0, 0, 0, 0, 0, 46, 44, 45, 0,
- 47, 0, 48, 0, 50, 0, 51, 0, 0, 0,
- 0, 40, 49, 29, 0, 0, 0, 37, 0, 0,
- 0, 0, 0, 0, 0, 0, 470, 0, 0, 26,
+ 0, 42, 0, 43, 0, 0, 472, 0, 0, 0,
+ 0, 0, 0, 0, 0, 47, 44, 46, 45, 0,
+ 48, 0, 49, 0, 51, 0, 52, 0, 0, 0,
+ 0, 40, 50, 29, 0, 0, 0, 37, 0, 0,
+ 0, 0, 0, 0, 0, 0, 479, 0, 0, 26,
27, 28, 0, 0, 0, 0, 0, 0, 0, 0,
30, 0, 0, 0, 0, 0, 0, 31, 0, 0,
0, 32, 33, 0, 34, 0, 0, 0, 35, 0,
36, 38, 39, 0, 0, 41, 0, 0, 0, 42,
- 0, 43, 0, 0, 476, 0, 0, 0, 0, 0,
- 0, 0, 0, 46, 44, 45, 0, 47, 0, 48,
- 0, 50, 0, 51, 0, 0, 0, 0, 40, 49,
- 29, 0, 0, 0, 37, 0, 0, 0, 0, 0,
- 0, 0, 0, 470, 0, 0, 26, 27, 28, 0,
- 0, 0, 0, 0, 0, 0, 0, 30, 0, 0,
- 0, 0, 0, 0, 31, 0, 0, 0, 32, 33,
- 0, 34, 0, 0, 0, 35, 0, 36, 38, 39,
- 0, 0, 41, 0, 0, 0, 42, 0, 43, 0,
- 0, 471, 0, 0, 0, 0, 0, 0, 0, 0,
- 46, 44, 45, 0, 47, 0, 48, 0, 50, 0,
- 51, 0, 0, 0, 0, 40, 49, 29, 0, 0,
+ 0, 43, 0, 0, 480, 0, 0, 0, 0, 0,
+ 0, 0, 0, 47, 44, 46, 45, 0, 48, 0,
+ 49, 0, 51, 0, 52, 0, 0, 0, 0, 40,
+ 50, 29, 0, 0, 0, 37, 0, 0, 0, 0,
+ 0, 0, 0, 0, 471, 0, 0, 26, 27, 28,
+ 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,
+ 0, 0, 0, 0, 0, 31, 0, 0, 0, 32,
+ 33, 0, 34, 0, 0, 0, 35, 0, 36, 38,
+ 39, 0, 0, 41, 0, 0, 0, 42, 0, 43,
+ 0, 0, 477, 0, 0, 0, 0, 0, 0, 0,
+ 0, 47, 44, 46, 45, 0, 48, 0, 49, 0,
+ 51, 0, 52, 0, 0, 0, 0, 40, 50, 29,
+ 0, 0, 0, 37, 0, 0, 0, 0, 0, 0,
+ 0, 0, 105, 106, 107, 0, 0, 109, 111, 112,
+ 0, 0, 113, 0, 114, 0, 0, 0, 116, 117,
+ 118, 0, 0, 0, 0, 0, 0, 31, 119, 120,
+ 121, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 122, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 125, 0, 0,
+ 0, 0, 0, 0, 44, 46, 45, 126, 127, 128,
+ 0, 130, 131, 132, 133, 134, 135, 0, 0, 123,
+ 129, 115, 108, 110, 124, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 105, 106, 107, 0, 0, 109,
+ 111, 112, 0, 0, 113, 0, 114, 0, 0, 0,
+ 116, 117, 118, 0, 0, 0, 0, 0, 0, 389,
+ 119, 120, 121, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 122, 0, 0, 0, 390, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 125,
+ 0, 0, 0, 0, 0, 394, 391, 393, 0, 126,
+ 127, 128, 0, 130, 131, 132, 133, 134, 135, 0,
+ 0, 123, 129, 115, 108, 110, 124, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 105, 106, 107, 0,
+ 0, 109, 111, 112, 0, 0, 113, 0, 114, 0,
+ 0, 0, 116, 117, 118, 0, 0, 0, 0, 0,
+ 0, 389, 119, 120, 121, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 122, 0, 0, 0, 390,
+ 0, 0, 0, 0, 0, 0, 0, 392, 0, 0,
+ 0, 125, 0, 0, 0, 0, 0, 394, 391, 393,
+ 0, 126, 127, 128, 0, 130, 131, 132, 133, 134,
+ 135, 0, 0, 123, 129, 115, 108, 110, 124, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 205, 0,
+ 0, 0, 0, 207, 0, 26, 27, 28, 209, 0,
+ 0, 0, 0, 0, 0, 210, 30, 0, 0, 0,
+ 0, 0, 0, 212, 213, 0, 0, 214, 33, 0,
+ 34, 0, 0, 0, 35, 0, 36, 38, 39, 0,
+ 0, 41, 0, 0, 0, 42, 0, 43, 0, 0,
+ 0, 0, 0, 216, 0, 217, 0, 0, 0, 47,
+ 215, 218, 45, 219, 48, 220, 49, 221, 51, 222,
+ 52, 223, 224, 0, 0, 40, 50, 29, 206, 208,
0, 37, 0, 0, 0, 0, 0, 0, 0, 0,
- 478, 0, 0, 26, 27, 28, 0, 0, 0, 0,
- 0, 0, 0, 0, 30, 0, 0, 0, 0, 0,
- 0, 31, 0, 0, 0, 32, 33, 0, 34, 0,
- 0, 0, 35, 0, 36, 38, 39, 0, 0, 41,
- 0, 0, 0, 42, 0, 43, 0, 0, 481, 0,
- 0, 0, 0, 0, 0, 0, 0, 46, 44, 45,
- 0, 47, 0, 48, 0, 50, 0, 51, 0, 0,
- 0, 0, 40, 49, 29, 0, 0, 0, 37, 0,
- 0, 0, 0, 0, 0, 0, 0, 104, 105, 106,
- 0, 0, 108, 110, 111, 0, 0, 112, 0, 113,
- 0, 0, 0, 115, 116, 117, 0, 0, 0, 0,
- 0, 0, 31, 118, 119, 120, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 121, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 124, 0, 0, 0, 0, 0, 0, 44,
- 45, 125, 126, 127, 0, 129, 130, 131, 132, 133,
- 134, 0, 0, 122, 128, 114, 107, 109, 123, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 104, 105,
- 106, 0, 0, 108, 110, 111, 0, 0, 112, 0,
- 113, 0, 0, 0, 115, 116, 117, 0, 0, 0,
- 0, 0, 0, 388, 118, 119, 120, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 121, 0, 0,
- 0, 389, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 124, 0, 0, 0, 0, 0, 393,
- 390, 392, 125, 126, 127, 0, 129, 130, 131, 132,
- 133, 134, 0, 0, 122, 128, 114, 107, 109, 123,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 104,
- 105, 106, 0, 0, 108, 110, 111, 0, 0, 112,
- 0, 113, 0, 0, 0, 115, 116, 117, 0, 0,
- 0, 0, 0, 0, 388, 118, 119, 120, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 121, 0,
- 0, 0, 389, 0, 0, 0, 0, 0, 0, 0,
- 391, 0, 0, 0, 124, 0, 0, 0, 0, 0,
- 393, 390, 392, 125, 126, 127, 0, 129, 130, 131,
- 132, 133, 134, 0, 0, 122, 128, 114, 107, 109,
- 123, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 204, 0, 0, 0, 0, 206, 0, 26, 27, 28,
- 208, 0, 0, 0, 0, 0, 0, 209, 30, 0,
- 0, 0, 0, 0, 0, 211, 212, 0, 0, 213,
+ 205, 0, 0, 0, 0, 207, 0, 26, 27, 28,
+ 209, 0, 0, 0, 0, 0, 0, 210, 211, 0,
+ 0, 0, 0, 0, 0, 212, 213, 0, 0, 214,
33, 0, 34, 0, 0, 0, 35, 0, 36, 38,
39, 0, 0, 41, 0, 0, 0, 42, 0, 43,
- 0, 0, 0, 0, 0, 215, 0, 216, 0, 0,
- 0, 46, 214, 217, 218, 47, 219, 48, 220, 50,
- 221, 51, 222, 223, 0, 0, 40, 49, 29, 205,
- 207, 0, 37, 0, 0, 0, 0, 0, 0, 0,
- 0, 204, 0, 0, 0, 0, 206, 0, 26, 27,
- 28, 208, 0, 0, 0, 0, 0, 0, 209, 210,
- 0, 0, 0, 0, 0, 0, 211, 212, 0, 0,
- 213, 33, 0, 34, 0, 0, 0, 35, 0, 36,
- 38, 39, 0, 0, 41, 0, 0, 0, 42, 0,
- 43, 0, 0, 0, 0, 0, 215, 0, 216, 0,
- 0, 0, 46, 214, 217, 218, 47, 219, 48, 220,
- 50, 221, 51, 222, 223, 0, 0, 40, 49, 29,
- 205, 207, 0, 37, 0, 0, 0, 0, 0, 0,
- 0, 0, 577, 105, 106, 0, 0, 579, 110, 581,
- 27, 28, 582, 0, 113, 0, 0, 0, 115, 584,
- 585, 0, 0, 0, 0, 0, 0, 586, 587, 119,
- 120, 213, 33, 0, 34, 0, 0, 0, 35, 0,
- 36, 588, 39, 0, 0, 590, 0, 0, 0, 42,
- 0, 43, 0, 0, 0, 0, 0, 592, 0, 216,
- 0, 0, 0, 594, 591, 593, 595, 596, 597, 48,
- 599, 600, 601, 602, 603, 604, 0, 0, 589, 598,
- 583, 578, 580, 123, 37, 0, 0, 0, 0, 0,
- 0, 0, 0, 356, 105, 106, 0, 0, 358, 110,
- 360, 27, 28, 361, 0, 113, 0, 0, 0, 115,
- 363, 364, 0, 0, 0, 0, 0, 0, 365, 366,
- 119, 120, 213, 33, 0, 34, 0, 0, 0, 35,
- 0, 36, 367, 39, 0, 0, 369, 0, 0, 0,
- 42, 0, 43, 0, -255, 0, 0, 0, 371, 0,
- 216, 0, 0, 0, 373, 370, 372, 374, 375, 376,
- 48, 378, 379, 380, 381, 382, 383, 0, 0, 368,
- 377, 362, 357, 359, 123, 37, 0, 0, 0, 0,
- 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 216, 0, 217, 0, 0,
+ 0, 47, 215, 218, 45, 219, 48, 220, 49, 221,
+ 51, 222, 52, 223, 224, 0, 0, 40, 50, 29,
+ 206, 208, 0, 37, 0, 0, 0, 0, 0, 0,
+ 0, 0, 586, 106, 107, 0, 0, 588, 111, 590,
+ 27, 28, 591, 0, 114, 0, 0, 0, 116, 593,
+ 594, 0, 0, 0, 0, 0, 0, 595, 596, 120,
+ 121, 214, 33, 0, 34, 0, 0, 0, 35, 0,
+ 36, 597, 39, 0, 0, 599, 0, 0, 0, 42,
+ 0, 43, 0, 0, 0, 0, 0, 601, 0, 217,
+ 0, 0, 0, 603, 600, 602, 45, 604, 605, 606,
+ 49, 608, 609, 610, 611, 612, 613, 0, 0, 598,
+ 607, 592, 587, 589, 124, 37, 0, 0, 0, 0,
+ 0, 0, 0, 0, 357, 106, 107, 0, 0, 359,
+ 111, 361, 27, 28, 362, 0, 114, 0, 0, 0,
+ 116, 364, 365, 0, 0, 0, 0, 0, 0, 366,
+ 367, 120, 121, 214, 33, 0, 34, 0, 0, 0,
+ 35, 0, 36, 368, 39, 0, 0, 370, 0, 0,
+ 0, 42, 0, 43, 0, -258, 0, 0, 0, 372,
+ 0, 217, 0, 0, 0, 374, 371, 373, 45, 375,
+ 376, 377, 49, 379, 380, 381, 382, 383, 384, 0,
+ 0, 369, 378, 363, 358, 360, 124, 37, 0, 0,
+ 0, 0, 0, 0, 0, 0,
- 506, 297, 238, 245, 164, 499, 427, 431, 177, 501,
- 434, 306, 233, 515, 395, 512, 387, 536, 565, 181,
- 431, 549, 541, 561, 297, 558, 385, 434, 302, 611,
- 166, 482, 177, 560, 490, 456, 171, 13, 145, 342,
- 420, 233, 344, 428, 444, 455, 467, 449, 453, 451,
- 238, 346, 397, 442, 430, 138, 248, 143, 233, 440,
- 158, 445, 348, 424, 183, 412, 405, 245, 202, 480,
- 434, 177, 410, 334, 431, 329, 333, 399, 135, 245,
- 315, 477, 331, 297, 238, 0, 399, 462, 141, 0,
- 0, 516, 0, 304, 610, 0, 315, 202, 55, 55,
- 488, 487, 0, 456, 0, 55, 400, 486, 181, 297,
- 516, 55, 297, 517, 202, 400, 283, 475, 0, 0,
- 55, 474, 485, 0, 55, 55, 175, 55, 55, 55,
- 281, 446, 282, 279, 55, 55, 55, 447, 484, 280,
- 55, 55, 446, 55, 55, 84, 55, 85, 83, 55,
- 55, 87, 55, 399, 90, 88, 55, 89, 261, 55,
- 101, 55, 297, 265, 86, 55, 297, 63, 95, 324,
- 55, 97, 325, 65, 466, 327, 55, 55, 55, 62,
- 447, 79, 400, 103, 55, 141, 55, 56, 489, 55,
- 173, 447, 55, 336, 446, 55, 55, 175, 232, 55,
- 141, 64, 91, 55, 55, 402, 55, 55, 55, 93,
- 339, 101, 92, 72, 293, 55, 67, 55, 160, 265,
- 265, 0, 265, 605, 286, 298, 607, 293, 55, 300,
- 308, 0, 265, 265, 103, 170, 321, 293, 55, 290,
- 0, 0, 265, 265, 0, 55, 467, 293, 293, 292,
- 265, 288, 265, 265, 268, 0, 55, 55, 55, 295,
- 55, 265, 265, 285, 284, 265, 0, 273, 516, 314,
- 312, 0, 516, 0, 163, 0, 530, 567, 0, 0,
- 530, 0, 573, 0, 522, 531, 0, 0, 522, 531,
- 576, 569, 570, 571, 572, 0, 0, 0, 0, 0,
+ 386, 538, 182, 555, 543, 406, 203, 165, 551, 303,
+ 388, 13, 502, 491, 396, 146, 298, 307, 507, 305,
+ 558, 457, 513, 432, 234, 246, 234, 249, 298, 468,
+ 239, 178, 172, 316, 428, 425, 421, 483, 431, 432,
+ 574, 435, 184, 620, 570, 413, 452, 178, 345, 298,
+ 569, 234, 435, 456, 567, 136, 454, 347, 343, 178,
+ 332, 335, 246, 246, 330, 441, 239, 429, 432, 446,
+ 167, 159, 411, 481, 142, 239, 478, 500, 443, 398,
+ 516, 463, 349, 0, 450, 203, 203, 435, 445, 400,
+ 457, 139, 144, 0, 0, 0, 0, 517, 182, 0,
+ 619, 0, 102, 316, 298, 0, 142, 0, 0, 142,
+ 0, 403, 400, 56, 174, 447, 56, 56, 401, 486,
+ 517, 282, 0, 518, 56, 104, 176, 56, 0, 485,
+ 56, 56, 176, 448, 56, 56, 448, 56, 56, 56,
+ 281, 401, 283, 280, 284, 56, 56, 447, 176, 262,
+ 56, 56, 64, 56, 266, 0, 56, 93, 56, 94,
+ 65, 467, 92, 56, 56, 56, 56, 301, 56, 73,
+ 80, 87, 68, 56, 400, 334, 325, 86, 98, 56,
+ 56, 56, 340, 337, 85, 56, 233, 298, 56, 56,
+ 88, 96, 84, 56, 89, 56, 56, 164, 91, 57,
+ 90, 298, 56, 401, 490, 56, 298, 448, 56, 56,
+ 447, 487, 56, 56, 489, 488, 56, 56, 63, 56,
+ 614, 56, 66, 616, 294, 56, 266, 294, 0, 266,
+ 266, 161, 266, 56, 289, 56, 291, 294, 266, 102,
+ 266, 0, 266, 468, 0, 0, 315, 0, 309, 313,
+ 299, 294, 312, 56, 0, 0, 266, 0, 266, 293,
+ 285, 56, 104, 171, 328, 56, 266, 0, 274, 326,
+ 266, 0, 56, 296, 269, 294, 56, 266, 476, 286,
+ 266, 266, 475, 287, 517, 0, 0, 0, 0, 576,
+ 0, 0, 532, 0, 582, 0, 0, 322, 0, 0,
+ 523, 533, 585, 578, 579, 580, 581, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 517, 0, 0, 0, 0, 0,
+ 0, 0, 532, 0, 0, 0, 0, 0, 0, 0,
+ 523, 533, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 55, 0, 0, 0, 0, 265, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 311, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0};
+ 0, 0, 0, 0, 0, 0, 0, 0, 0};
const int QmlJSGrammar::action_check [] = {
- 36, 88, 60, 36, 7, 36, 5, 36, 78, 5,
- 33, 1, 60, 33, 33, 7, 5, 8, 36, 7,
- 55, 33, 7, 55, 7, 36, 7, 55, 7, 16,
- 36, 7, 7, 7, 36, 36, 7, 7, 7, 7,
- 48, 78, 8, 36, 2, 60, 8, 1, 0, 33,
- 36, 7, 7, 17, 7, 55, 7, 7, 36, 7,
- 20, 33, 29, 36, 88, 60, 60, 2, 33, 66,
- 29, 48, 33, 36, 7, 7, 33, 17, 60, 7,
- 60, 8, 29, 2, 7, 31, 1, 8, 2, 1,
- 8, 33, 36, 10, 7, 36, 7, -1, 36, 8,
- 7, 8, 8, 8, 8, 36, 55, 36, -1, 8,
- 8, -1, 48, 15, -1, 15, 40, 8, 61, 8,
- 42, 8, 33, 6, 61, -1, 60, 51, 48, 8,
- 60, 53, 34, 78, 34, 8, 61, 20, 55, 78,
- 50, 8, 8, 8, 54, 61, 62, 8, -1, -1,
- 76, 60, 56, 12, 60, 60, -1, 56, 61, 62,
- 61, 62, 60, 40, 61, 62, 61, 62, 50, 56,
- 61, 60, 54, 29, 51, 61, 62, 61, 62, 29,
- 25, 60, 27, 61, 62, 61, 62, 60, 12, 56,
- 61, 62, 29, 38, 60, 36, 61, 62, 57, 25,
- 25, 27, 27, 15, 63, 25, 25, 27, 27, 12,
- 66, 67, 38, 38, 8, 29, 66, 67, 38, 38,
- 61, 62, 34, 15, 36, 29, 8, 29, 29, 66,
- 67, 7, -1, 57, 40, 25, 29, 27, 29, 63,
- 29, -1, 34, 15, 36, 51, 29, -1, 38, -1,
- 29, -1, 66, 67, 57, 29, 61, 62, 29, 8,
- 63, 29, 34, 7, 36, 66, 67, 61, 62, 25,
- 74, 27, 74, 66, 67, 66, 67, 66, 67, 61,
- 62, 85, 38, 85, 89, 61, 62, 66, 67, 8,
- 29, 74, 66, 67, 25, 25, 27, 27, 66, 67,
- 29, 15, 85, 74, 90, 91, 92, 38, 38, 29,
- -1, -1, 61, 62, 85, -1, -1, 61, 62, 29,
- 34, -1, 36, 18, 19, -1, 36, 66, 67, -1,
- -1, 18, 19, 18, 19, 18, 19, 66, 67, 47,
- -1, -1, 61, 62, -1, 29, 66, 67, 15, -1,
- 45, 46, 36, 61, 62, 29, 66, 67, 45, 46,
- 45, 46, 45, 46, 29, -1, 33, 34, -1, 36,
- -1, 29, -1, -1, -1, -1, 25, -1, 27, -1,
- -1, 89, 66, 67, -1, -1, -1, 61, 62, 38,
- 29, -1, 66, 67, -1, -1, 61, 62, 23, 24,
- 29, 66, 67, 61, 62, 23, 24, 32, 66, 67,
- 35, -1, 37, -1, 32, 29, -1, 35, -1, 37,
- -1, -1, 61, 62, -1, -1, -1, 66, 67, -1,
- 23, 24, 61, 62, -1, -1, -1, 66, 67, 32,
- -1, -1, 35, -1, 37, -1, 15, 61, 62, 23,
- 24, -1, 66, 67, -1, -1, -1, -1, 32, -1,
- -1, 35, -1, 37, 33, 34, -1, 36, 23, 24,
- -1, -1, -1, -1, -1, -1, 31, 32, 23, 24,
- 35, -1, 37, -1, -1, -1, 31, 32, 23, 24,
- 35, -1, 37, -1, -1, -1, 31, 32, 23, 24,
- 35, -1, 37, -1, -1, 3, 31, 32, 23, 24,
- 35, -1, 37, -1, -1, 13, 31, 32, -1, 17,
- 35, -1, 37, -1, -1, -1, 23, 24, 26, -1,
- 28, -1, -1, -1, -1, 32, -1, -1, 35, 3,
- 37, 39, -1, 41, 42, -1, -1, -1, -1, 13,
- -1, 49, -1, 17, 52, 53, -1, -1, -1, -1,
- 58, -1, 26, -1, 28, -1, 64, 31, -1, -1,
- -1, -1, -1, -1, -1, 39, -1, 41, 42, -1,
- -1, 79, -1, -1, -1, 49, -1, -1, 52, 53,
- -1, -1, -1, -1, 58, -1, -1, -1, 3, -1,
- 64, -1, -1, -1, -1, -1, -1, -1, 13, -1,
- -1, -1, 17, -1, -1, 79, -1, -1, -1, -1,
- -1, 26, -1, 28, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 39, -1, 41, 42, -1, -1,
- -1, -1, -1, -1, 49, -1, -1, 52, 53, -1,
- -1, -1, -1, 58, -1, -1, -1, -1, -1, 64,
- -1, -1, 12, 13, -1, -1, -1, -1, -1, -1,
- -1, -1, 22, -1, 79, -1, -1, -1, -1, 29,
- -1, -1, -1, 33, 34, -1, 36, -1, -1, -1,
- 12, 13, -1, 43, -1, -1, -1, 47, -1, -1,
- 22, -1, -1, -1, -1, -1, -1, 29, -1, -1,
- -1, 33, 34, -1, 36, 65, 66, 67, -1, 69,
+ 55, 48, 7, 29, 8, 7, 36, 7, 33, 8,
+ 79, 7, 36, 36, 60, 7, 17, 36, 60, 36,
+ 61, 16, 60, 60, 7, 33, 8, 55, 7, 7,
+ 7, 2, 20, 55, 7, 7, 33, 2, 36, 33,
+ 7, 5, 48, 36, 7, 36, 7, 7, 33, 7,
+ 0, 60, 33, 89, 7, 7, 36, 60, 1, 7,
+ 36, 36, 36, 29, 1, 55, 55, 36, 8, 79,
+ 8, 33, 79, 60, 60, 29, 8, 61, 1, 7,
+ 2, 1, 29, 17, 2, 36, 7, 33, 7, 48,
+ 31, 36, 36, 61, 33, 8, 7, 7, 7, 7,
+ 36, 36, 33, 36, 8, 10, 48, 7, 15, 79,
+ 66, 60, 8, 40, 7, 8, 8, 8, -1, -1,
+ 77, 50, 8, -1, 51, 54, 8, 34, 8, 8,
+ 15, 8, 7, 33, 89, 8, 66, 61, 62, 8,
+ 42, 8, 40, 40, 61, 62, 61, 62, 8, 34,
+ 55, 53, 8, 51, 51, 8, 60, 8, 61, 62,
+ 61, 62, 61, 62, 60, 56, 61, 62, 60, 40,
+ 56, 61, 62, 8, 56, 7, 56, 61, 62, 29,
+ 51, 60, 29, 60, 50, 61, 62, 60, 54, 61,
+ 62, 29, 61, 60, 15, 29, 8, 36, 29, 7,
+ 60, -1, 91, 92, 93, 61, 62, 8, 61, 62,
+ 61, 62, 12, 34, -1, 36, -1, -1, 90, -1,
+ -1, 6, 61, 62, 12, 75, 61, 62, 75, 61,
+ 62, 12, 25, 29, 27, 20, 86, 75, 25, 86,
+ 27, 75, -1, 15, 75, 38, 15, 15, 86, 61,
+ 62, 38, 86, 61, 62, 86, 29, 57, -1, 29,
+ 61, 62, 34, 63, 36, 34, 34, 36, 36, 57,
+ 66, 67, 68, 18, 19, 63, 57, 29, 18, 19,
+ 29, -1, 63, 29, -1, -1, -1, -1, 47, 15,
+ 29, -1, -1, 66, 67, 68, 66, 67, 68, 29,
+ 45, 46, 61, 62, 29, 45, 46, 33, 34, 29,
+ 36, 25, 29, 27, 66, 67, 68, 66, 67, 68,
+ 66, 67, 68, 29, 38, 18, 19, 66, 67, 68,
+ 29, 90, -1, 29, -1, -1, 66, 67, 68, -1,
+ -1, 66, 67, 68, -1, -1, 66, 67, 68, 66,
+ 67, 68, 45, 46, -1, -1, 18, 19, -1, -1,
+ 66, 67, 68, -1, 23, 24, -1, 66, 67, 68,
+ 66, 67, 68, 32, 29, -1, 35, 29, 37, 23,
+ 24, 36, 15, 45, 46, 23, 24, -1, 32, 29,
+ -1, 35, -1, 37, 32, -1, 36, 35, -1, 37,
+ 33, 34, -1, 36, -1, -1, -1, -1, -1, 61,
+ 62, 66, 67, 68, 66, 67, 68, -1, -1, -1,
+ -1, 23, 24, -1, -1, -1, 66, 67, 68, 31,
+ 32, 23, 24, 35, -1, 37, -1, -1, -1, 31,
+ 32, 23, 24, 35, -1, 37, 29, -1, -1, 31,
+ 32, -1, -1, 35, 29, 37, -1, 23, 24, -1,
+ -1, -1, 29, 23, 24, 31, 32, -1, -1, 35,
+ -1, 37, 32, -1, -1, 35, -1, 37, 61, 62,
+ -1, -1, -1, 66, 67, 68, 61, 62, 3, -1,
+ -1, 66, 67, 68, 61, 62, 23, 24, 13, 66,
+ 67, 68, 17, -1, 31, 32, 3, -1, 35, -1,
+ 37, 26, -1, 28, -1, -1, 13, -1, -1, -1,
+ 17, -1, -1, -1, 39, -1, 41, 42, -1, 26,
+ -1, 28, -1, -1, 49, -1, 29, 52, 53, -1,
+ -1, -1, 39, 58, 41, 42, -1, -1, -1, 64,
+ -1, -1, 49, -1, -1, 52, 53, -1, -1, -1,
+ -1, 58, -1, -1, -1, 80, -1, 64, 61, 62,
+ -1, -1, -1, 66, 67, 68, -1, -1, -1, -1,
+ -1, -1, -1, 80, -1, -1, -1, -1, -1, -1,
+ 12, 13, -1, -1, -1, -1, -1, -1, -1, -1,
+ 22, -1, -1, 3, -1, -1, -1, 29, -1, -1,
+ -1, 33, 34, 13, 36, -1, -1, 17, -1, -1,
+ -1, 43, -1, -1, -1, 47, 26, -1, 28, -1,
+ -1, 31, -1, -1, -1, -1, -1, -1, -1, 39,
+ -1, 41, 42, 65, 66, 67, 68, -1, 70, 49,
+ -1, -1, 52, 53, -1, -1, -1, -1, 58, 81,
+ 82, 83, -1, -1, 64, 87, -1, -1, 12, 13,
+ -1, -1, -1, -1, -1, -1, -1, -1, 22, -1,
+ 80, -1, -1, -1, -1, 29, -1, -1, -1, 33,
+ 34, -1, 36, -1, -1, -1, 12, 13, -1, 43,
+ -1, -1, -1, 47, -1, -1, 22, -1, -1, -1,
+ -1, -1, -1, 29, -1, -1, -1, 33, 34, -1,
+ 36, 65, 66, 67, 68, -1, 70, 43, -1, -1,
+ -1, 47, -1, -1, -1, -1, -1, 81, 82, 83,
+ -1, -1, -1, 87, -1, -1, -1, -1, -1, 65,
+ 66, 67, 68, -1, 70, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 81, 82, 83, -1, -1,
+ -1, 87, 12, 13, -1, -1, -1, -1, -1, -1,
+ 12, 13, 22, -1, -1, -1, -1, -1, -1, 29,
+ 22, -1, -1, 33, 34, -1, 36, 29, -1, -1,
+ -1, 33, 34, 43, 36, -1, -1, 47, -1, -1,
-1, 43, -1, -1, -1, 47, -1, -1, -1, -1,
- 80, 81, 82, -1, -1, -1, 86, -1, -1, -1,
- -1, -1, -1, 65, 66, 67, -1, 69, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 80, 81,
- 82, -1, -1, -1, 86, 12, 13, -1, -1, -1,
- -1, -1, -1, 12, 13, 22, -1, -1, -1, -1,
- -1, -1, 29, 22, -1, -1, 33, 34, -1, 36,
- 29, -1, -1, -1, 33, 34, 43, 36, -1, -1,
- 47, -1, -1, -1, 43, -1, -1, -1, 47, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 65, 66,
- 67, -1, 69, -1, -1, -1, 65, 66, 67, -1,
- 69, -1, -1, 80, 81, 82, -1, -1, -1, 86,
- -1, 80, 81, 82, -1, -1, -1, 86, -1, -1,
- -1, -1, -1, -1, -1, -1, 12, 13, -1, -1,
+ -1, -1, -1, -1, -1, 65, 66, 67, 68, -1,
+ 70, -1, -1, 65, 66, 67, 68, -1, 70, -1,
+ -1, 81, 82, 83, -1, -1, -1, 87, -1, 81,
+ 82, 83, -1, -1, -1, 87, -1, -1, -1, -1,
+ -1, -1, -1, -1, 10, -1, 12, 13, -1, -1,
-1, -1, -1, -1, -1, -1, 22, -1, -1, -1,
-1, -1, -1, 29, -1, -1, -1, 33, 34, -1,
36, -1, -1, -1, -1, -1, -1, 43, -1, -1,
- -1, 47, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 47, -1, -1, -1, -1, -1, -1, -1, 55,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 65,
- 66, 67, -1, 69, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 80, 81, 82, -1, -1, -1,
- 86, -1, -1, -1, -1, -1, -1, -1, -1, 10,
- -1, 12, 13, -1, -1, -1, -1, -1, -1, -1,
- -1, 22, -1, -1, -1, -1, -1, -1, 29, -1,
- -1, -1, 33, 34, -1, 36, -1, -1, -1, -1,
- -1, -1, 43, -1, -1, -1, 47, -1, -1, -1,
- -1, -1, -1, -1, 55, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 65, 66, 67, -1, 69, -1,
- -1, -1, -1, 74, -1, -1, -1, -1, -1, 80,
- 81, 82, 83, -1, -1, 86, -1, -1, -1, -1,
- -1, -1, -1, -1, 10, -1, 12, 13, -1, -1,
+ 66, 67, 68, -1, 70, -1, -1, -1, -1, 75,
+ -1, -1, -1, -1, -1, 81, 82, 83, 84, -1,
+ -1, 87, -1, -1, -1, -1, -1, -1, -1, -1,
+ 10, -1, 12, 13, -1, -1, -1, -1, -1, -1,
+ -1, -1, 22, -1, -1, -1, -1, -1, -1, 29,
+ -1, -1, -1, 33, 34, -1, 36, -1, -1, -1,
+ -1, -1, -1, 43, -1, -1, -1, 47, -1, -1,
+ -1, -1, -1, -1, -1, 55, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 65, 66, 67, 68, -1,
+ 70, -1, -1, -1, -1, 75, -1, -1, -1, -1,
+ -1, 81, 82, 83, 84, -1, -1, 87, -1, -1,
+ -1, -1, -1, -1, -1, -1, 11, 12, 13, -1,
+ -1, -1, -1, -1, -1, -1, -1, 22, -1, -1,
+ -1, -1, -1, -1, 29, -1, -1, -1, 33, 34,
+ -1, 36, -1, -1, -1, 40, -1, 42, 43, 44,
+ -1, -1, 47, -1, -1, -1, 51, -1, 53, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 65, 66, 67, 68, -1, 70, -1, 72, -1, 74,
+ -1, 76, -1, -1, -1, -1, 81, 82, 83, -1,
+ -1, -1, 87, -1, -1, -1, -1, -1, -1, -1,
+ -1, 7, -1, -1, -1, 11, 12, 13, -1, -1,
-1, -1, -1, -1, -1, -1, 22, -1, -1, -1,
-1, -1, -1, 29, -1, -1, -1, 33, 34, -1,
- 36, -1, -1, -1, -1, -1, -1, 43, -1, -1,
- -1, 47, -1, -1, -1, -1, -1, -1, -1, 55,
+ 36, -1, -1, -1, 40, -1, 42, 43, 44, -1,
+ -1, 47, -1, -1, -1, 51, -1, 53, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 65,
- 66, 67, -1, 69, -1, -1, -1, -1, 74, -1,
- -1, -1, -1, -1, 80, 81, 82, 83, -1, -1,
- 86, -1, -1, -1, -1, -1, -1, -1, -1, 11,
- 12, 13, -1, -1, -1, -1, -1, -1, -1, -1,
- 22, -1, -1, -1, -1, -1, -1, 29, -1, -1,
- -1, 33, 34, -1, 36, -1, -1, -1, 40, -1,
- 42, 43, 44, -1, -1, 47, -1, -1, -1, 51,
- -1, 53, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 65, 66, 67, -1, 69, -1, 71,
- -1, 73, -1, 75, -1, -1, -1, -1, 80, 81,
- 82, -1, -1, -1, 86, -1, -1, -1, -1, -1,
- -1, -1, -1, 11, 12, 13, -1, -1, -1, -1,
+ 66, 67, 68, -1, 70, -1, 72, -1, 74, -1,
+ 76, -1, -1, -1, -1, 81, 82, 83, -1, -1,
+ -1, 87, -1, -1, -1, -1, -1, -1, -1, -1,
+ 11, 12, 13, -1, -1, -1, -1, -1, -1, -1,
+ -1, 22, -1, -1, -1, -1, -1, -1, 29, -1,
+ -1, -1, 33, 34, -1, 36, -1, -1, -1, 40,
+ -1, 42, 43, 44, -1, -1, 47, -1, -1, -1,
+ 51, -1, 53, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 65, 66, 67, 68, -1, 70,
+ -1, 72, -1, 74, 75, 76, -1, -1, -1, -1,
+ 81, 82, 83, -1, -1, -1, 87, -1, -1, -1,
+ -1, -1, -1, -1, -1, 11, 12, 13, -1, -1,
+ -1, -1, -1, -1, -1, -1, 22, -1, -1, -1,
+ -1, -1, -1, 29, 30, -1, -1, 33, 34, -1,
+ 36, -1, -1, -1, 40, -1, 42, 43, 44, -1,
+ -1, 47, -1, -1, -1, 51, -1, 53, -1, -1,
+ -1, -1, -1, -1, -1, 61, -1, -1, -1, 65,
+ 66, 67, 68, -1, 70, -1, 72, -1, 74, -1,
+ 76, -1, -1, -1, -1, 81, 82, 83, -1, -1,
+ -1, 87, -1, -1, -1, -1, -1, -1, -1, -1,
+ 8, -1, -1, 11, 12, 13, -1, -1, -1, -1,
-1, -1, -1, -1, 22, -1, -1, -1, -1, -1,
-1, 29, -1, -1, -1, 33, 34, -1, 36, -1,
-1, -1, 40, -1, 42, 43, 44, -1, -1, 47,
- -1, -1, -1, 51, -1, 53, -1, -1, -1, -1,
+ -1, -1, -1, 51, -1, 53, -1, -1, 56, -1,
-1, -1, -1, -1, -1, -1, -1, 65, 66, 67,
- -1, 69, -1, 71, -1, 73, 74, 75, -1, -1,
- -1, -1, 80, 81, 82, -1, -1, -1, 86, -1,
- -1, -1, -1, -1, -1, -1, -1, 7, -1, -1,
+ 68, -1, 70, -1, 72, -1, 74, -1, 76, -1,
+ -1, -1, -1, 81, 82, 83, -1, -1, -1, 87,
+ -1, -1, -1, -1, -1, -1, -1, -1, 8, -1,
-1, 11, 12, 13, -1, -1, -1, -1, -1, -1,
-1, -1, 22, -1, -1, -1, -1, -1, -1, 29,
-1, -1, -1, 33, 34, -1, 36, -1, -1, -1,
40, -1, 42, 43, 44, -1, -1, 47, -1, -1,
- -1, 51, -1, 53, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 65, 66, 67, -1, 69,
- -1, 71, -1, 73, -1, 75, -1, -1, -1, -1,
- 80, 81, 82, -1, -1, -1, 86, -1, -1, -1,
- -1, -1, -1, -1, -1, 11, 12, 13, -1, -1,
- -1, -1, -1, -1, -1, -1, 22, -1, -1, -1,
- -1, -1, -1, 29, 30, -1, -1, 33, 34, -1,
- 36, -1, -1, -1, 40, -1, 42, 43, 44, -1,
- -1, 47, -1, -1, -1, 51, -1, 53, -1, -1,
- -1, -1, -1, -1, -1, 61, -1, -1, -1, 65,
- 66, 67, -1, 69, -1, 71, -1, 73, -1, 75,
- -1, -1, -1, -1, 80, 81, 82, -1, -1, -1,
- 86, -1, -1, -1, -1, -1, -1, -1, -1, 8,
- -1, -1, 11, 12, 13, -1, -1, -1, -1, -1,
- -1, -1, -1, 22, -1, -1, -1, -1, -1, -1,
- 29, -1, -1, -1, 33, 34, -1, 36, -1, -1,
- -1, 40, -1, 42, 43, 44, -1, -1, 47, -1,
- -1, -1, 51, -1, 53, -1, -1, 56, -1, -1,
- -1, -1, -1, -1, -1, -1, 65, 66, 67, -1,
- 69, -1, 71, -1, 73, -1, 75, -1, -1, -1,
- -1, 80, 81, 82, -1, -1, -1, 86, -1, -1,
+ -1, 51, -1, 53, -1, -1, 56, -1, -1, -1,
+ -1, -1, -1, -1, -1, 65, 66, 67, 68, -1,
+ 70, -1, 72, -1, 74, -1, 76, -1, -1, -1,
+ -1, 81, 82, 83, -1, -1, -1, 87, -1, -1,
-1, -1, -1, -1, -1, -1, 8, -1, -1, 11,
12, 13, -1, -1, -1, -1, -1, -1, -1, -1,
22, -1, -1, -1, -1, -1, -1, 29, -1, -1,
-1, 33, 34, -1, 36, -1, -1, -1, 40, -1,
42, 43, 44, -1, -1, 47, -1, -1, -1, 51,
-1, 53, -1, -1, 56, -1, -1, -1, -1, -1,
- -1, -1, -1, 65, 66, 67, -1, 69, -1, 71,
- -1, 73, -1, 75, -1, -1, -1, -1, 80, 81,
- 82, -1, -1, -1, 86, -1, -1, -1, -1, -1,
- -1, -1, -1, 8, -1, -1, 11, 12, 13, -1,
- -1, -1, -1, -1, -1, -1, -1, 22, -1, -1,
- -1, -1, -1, -1, 29, -1, -1, -1, 33, 34,
- -1, 36, -1, -1, -1, 40, -1, 42, 43, 44,
- -1, -1, 47, -1, -1, -1, 51, -1, 53, -1,
- -1, 56, -1, -1, -1, -1, -1, -1, -1, -1,
- 65, 66, 67, -1, 69, -1, 71, -1, 73, -1,
- 75, -1, -1, -1, -1, 80, 81, 82, -1, -1,
- -1, 86, -1, -1, -1, -1, -1, -1, -1, -1,
- 8, -1, -1, 11, 12, 13, -1, -1, -1, -1,
- -1, -1, -1, -1, 22, -1, -1, -1, -1, -1,
- -1, 29, -1, -1, -1, 33, 34, -1, 36, -1,
- -1, -1, 40, -1, 42, 43, 44, -1, -1, 47,
- -1, -1, -1, 51, -1, 53, -1, -1, 56, -1,
- -1, -1, -1, -1, -1, -1, -1, 65, 66, 67,
- -1, 69, -1, 71, -1, 73, -1, 75, -1, -1,
- -1, -1, 80, 81, 82, -1, -1, -1, 86, -1,
- -1, -1, -1, -1, -1, -1, -1, 4, 5, 6,
- -1, -1, 9, 10, 11, -1, -1, 14, -1, 16,
- -1, -1, -1, 20, 21, 22, -1, -1, -1, -1,
- -1, -1, 29, 30, 31, 32, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 43, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 59, -1, -1, -1, -1, -1, -1, 66,
- 67, 68, 69, 70, -1, 72, 73, 74, 75, 76,
- 77, -1, -1, 80, 81, 82, 83, 84, 85, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 4, 5,
- 6, -1, -1, 9, 10, 11, -1, -1, 14, -1,
- 16, -1, -1, -1, 20, 21, 22, -1, -1, -1,
- -1, -1, -1, 29, 30, 31, 32, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 43, -1, -1,
- -1, 47, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 59, -1, -1, -1, -1, -1, 65,
- 66, 67, 68, 69, 70, -1, 72, 73, 74, 75,
- 76, 77, -1, -1, 80, 81, 82, 83, 84, 85,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 4,
- 5, 6, -1, -1, 9, 10, 11, -1, -1, 14,
- -1, 16, -1, -1, -1, 20, 21, 22, -1, -1,
- -1, -1, -1, -1, 29, 30, 31, 32, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 43, -1,
- -1, -1, 47, -1, -1, -1, -1, -1, -1, -1,
- 55, -1, -1, -1, 59, -1, -1, -1, -1, -1,
- 65, 66, 67, 68, 69, 70, -1, 72, 73, 74,
- 75, 76, 77, -1, -1, 80, 81, 82, 83, 84,
- 85, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 65, 66, 67, 68, -1, 70, -1,
+ 72, -1, 74, -1, 76, -1, -1, -1, -1, 81,
+ 82, 83, -1, -1, -1, 87, -1, -1, -1, -1,
+ -1, -1, -1, -1, 8, -1, -1, 11, 12, 13,
+ -1, -1, -1, -1, -1, -1, -1, -1, 22, -1,
+ -1, -1, -1, -1, -1, 29, -1, -1, -1, 33,
+ 34, -1, 36, -1, -1, -1, 40, -1, 42, 43,
+ 44, -1, -1, 47, -1, -1, -1, 51, -1, 53,
+ -1, -1, 56, -1, -1, -1, -1, -1, -1, -1,
+ -1, 65, 66, 67, 68, -1, 70, -1, 72, -1,
+ 74, -1, 76, -1, -1, -1, -1, 81, 82, 83,
+ -1, -1, -1, 87, -1, -1, -1, -1, -1, -1,
+ -1, -1, 4, 5, 6, -1, -1, 9, 10, 11,
+ -1, -1, 14, -1, 16, -1, -1, -1, 20, 21,
+ 22, -1, -1, -1, -1, -1, -1, 29, 30, 31,
+ 32, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 43, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 59, -1, -1,
+ -1, -1, -1, -1, 66, 67, 68, 69, 70, 71,
+ -1, 73, 74, 75, 76, 77, 78, -1, -1, 81,
+ 82, 83, 84, 85, 86, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 4, 5, 6, -1, -1, 9,
+ 10, 11, -1, -1, 14, -1, 16, -1, -1, -1,
+ 20, 21, 22, -1, -1, -1, -1, -1, -1, 29,
+ 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 43, -1, -1, -1, 47, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 59,
+ -1, -1, -1, -1, -1, 65, 66, 67, -1, 69,
+ 70, 71, -1, 73, 74, 75, 76, 77, 78, -1,
+ -1, 81, 82, 83, 84, 85, 86, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 4, 5, 6, -1,
+ -1, 9, 10, 11, -1, -1, 14, -1, 16, -1,
+ -1, -1, 20, 21, 22, -1, -1, -1, -1, -1,
+ -1, 29, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 43, -1, -1, -1, 47,
+ -1, -1, -1, -1, -1, -1, -1, 55, -1, -1,
+ -1, 59, -1, -1, -1, -1, -1, 65, 66, 67,
+ -1, 69, 70, 71, -1, 73, 74, 75, 76, 77,
+ 78, -1, -1, 81, 82, 83, 84, 85, 86, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 4, -1,
+ -1, -1, -1, 9, -1, 11, 12, 13, 14, -1,
+ -1, -1, -1, -1, -1, 21, 22, -1, -1, -1,
+ -1, -1, -1, 29, 30, -1, -1, 33, 34, -1,
+ 36, -1, -1, -1, 40, -1, 42, 43, 44, -1,
+ -1, 47, -1, -1, -1, 51, -1, 53, -1, -1,
+ -1, -1, -1, 59, -1, 61, -1, -1, -1, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, -1, -1, 81, 82, 83, 84, 85,
+ -1, 87, -1, -1, -1, -1, -1, -1, -1, -1,
4, -1, -1, -1, -1, 9, -1, 11, 12, 13,
14, -1, -1, -1, -1, -1, -1, 21, 22, -1,
-1, -1, -1, -1, -1, 29, 30, -1, -1, 33,
@@ -831,17 +837,8 @@ const int QmlJSGrammar::action_check [] = {
44, -1, -1, 47, -1, -1, -1, 51, -1, 53,
-1, -1, -1, -1, -1, 59, -1, 61, -1, -1,
-1, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, -1, -1, 80, 81, 82, 83,
- 84, -1, 86, -1, -1, -1, -1, -1, -1, -1,
- -1, 4, -1, -1, -1, -1, 9, -1, 11, 12,
- 13, 14, -1, -1, -1, -1, -1, -1, 21, 22,
- -1, -1, -1, -1, -1, -1, 29, 30, -1, -1,
- 33, 34, -1, 36, -1, -1, -1, 40, -1, 42,
- 43, 44, -1, -1, 47, -1, -1, -1, 51, -1,
- 53, -1, -1, -1, -1, -1, 59, -1, 61, -1,
- -1, -1, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, -1, -1, 80, 81, 82,
- 83, 84, -1, 86, -1, -1, -1, -1, -1, -1,
+ 74, 75, 76, 77, 78, -1, -1, 81, 82, 83,
+ 84, 85, -1, 87, -1, -1, -1, -1, -1, -1,
-1, -1, 4, 5, 6, -1, -1, 9, 10, 11,
12, 13, 14, -1, 16, -1, -1, -1, 20, 21,
22, -1, -1, -1, -1, -1, -1, 29, 30, 31,
@@ -849,56 +846,62 @@ const int QmlJSGrammar::action_check [] = {
42, 43, 44, -1, -1, 47, -1, -1, -1, 51,
-1, 53, -1, -1, -1, -1, -1, 59, -1, 61,
-1, -1, -1, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, -1, -1, 80, 81,
- 82, 83, 84, 85, 86, -1, -1, -1, -1, -1,
- -1, -1, -1, 4, 5, 6, -1, -1, 9, 10,
- 11, 12, 13, 14, -1, 16, -1, -1, -1, 20,
- 21, 22, -1, -1, -1, -1, -1, -1, 29, 30,
- 31, 32, 33, 34, -1, 36, -1, -1, -1, 40,
- -1, 42, 43, 44, -1, -1, 47, -1, -1, -1,
- 51, -1, 53, -1, 55, -1, -1, -1, 59, -1,
- 61, -1, -1, -1, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, -1, -1, 80,
- 81, 82, 83, 84, 85, 86, -1, -1, -1, -1,
- -1, -1, -1, -1,
+ 72, 73, 74, 75, 76, 77, 78, -1, -1, 81,
+ 82, 83, 84, 85, 86, 87, -1, -1, -1, -1,
+ -1, -1, -1, -1, 4, 5, 6, -1, -1, 9,
+ 10, 11, 12, 13, 14, -1, 16, -1, -1, -1,
+ 20, 21, 22, -1, -1, -1, -1, -1, -1, 29,
+ 30, 31, 32, 33, 34, -1, 36, -1, -1, -1,
+ 40, -1, 42, 43, 44, -1, -1, 47, -1, -1,
+ -1, 51, -1, 53, -1, 55, -1, -1, -1, 59,
+ -1, 61, -1, -1, -1, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, -1,
+ -1, 81, 82, 83, 84, 85, 86, 87, -1, -1,
+ -1, -1, -1, -1, -1, -1,
- 12, 3, 12, 2, 33, 10, 79, 3, 12, 10,
- 19, 2, 12, 8, 33, 12, 34, 23, 12, 12,
- 3, 3, 3, 12, 3, 23, 33, 19, 2, 17,
- 33, 3, 12, 23, 2, 12, 3, 3, 65, 2,
- 94, 12, 3, 3, 19, 2, 33, 3, 3, 2,
- 12, 2, 2, 12, 79, 33, 3, 33, 12, 96,
- 33, 19, 2, 91, 12, 3, 2, 2, 2, 33,
- 19, 12, 2, 12, 3, 2, 2, 10, 3, 2,
- 12, 33, 3, 3, 12, -1, 10, 33, 33, -1,
- -1, 10, -1, 3, 13, -1, 12, 2, 42, 42,
- 44, 44, -1, 12, -1, 42, 39, 44, 12, 3,
- 10, 42, 3, 13, 2, 39, 47, 29, -1, -1,
- 42, 33, 44, -1, 42, 42, 44, 42, 42, 42,
- 47, 44, 47, 47, 42, 42, 42, 44, 44, 47,
- 42, 42, 44, 42, 42, 46, 42, 46, 46, 42,
- 42, 47, 42, 10, 47, 47, 42, 47, 42, 42,
- 12, 42, 3, 47, 47, 42, 3, 44, 54, 85,
- 42, 52, 66, 45, 83, 66, 42, 42, 42, 44,
- 44, 47, 39, 35, 42, 33, 42, 45, 44, 42,
- 38, 44, 42, 97, 44, 42, 42, 44, 103, 42,
- 33, 44, 48, 42, 42, 38, 42, 42, 42, 48,
- 98, 12, 48, 48, 42, 42, 50, 42, 56, 47,
- 47, -1, 47, 10, 49, 66, 13, 42, 42, 66,
- 57, -1, 47, 47, 35, 36, 64, 42, 42, 53,
- -1, -1, 47, 47, -1, 42, 33, 42, 42, 64,
- 47, 55, 47, 47, 51, -1, 42, 42, 42, 64,
- 42, 47, 47, 49, 49, 47, -1, 49, 10, 64,
- 64, -1, 10, -1, 58, -1, 18, 15, -1, -1,
- 18, -1, 10, -1, 26, 27, -1, -1, 26, 27,
- 18, 19, 20, 21, 22, -1, -1, -1, -1, -1,
+ 33, 23, 12, 23, 3, 2, 2, 33, 3, 2,
+ 34, 3, 10, 2, 33, 65, 3, 2, 12, 3,
+ 3, 12, 12, 3, 12, 2, 12, 3, 3, 33,
+ 12, 12, 3, 12, 79, 91, 94, 3, 79, 3,
+ 12, 19, 12, 17, 12, 3, 2, 12, 3, 3,
+ 23, 12, 19, 2, 23, 3, 3, 2, 2, 12,
+ 3, 12, 2, 2, 2, 96, 12, 3, 3, 19,
+ 33, 33, 2, 33, 33, 12, 33, 10, 12, 2,
+ 8, 33, 2, -1, 3, 2, 2, 19, 19, 10,
+ 12, 33, 33, -1, -1, -1, -1, 10, 12, -1,
+ 13, -1, 12, 12, 3, -1, 33, -1, -1, 33,
+ -1, 38, 10, 42, 38, 44, 42, 42, 39, 44,
+ 10, 47, -1, 13, 42, 35, 44, 42, -1, 44,
+ 42, 42, 44, 44, 42, 42, 44, 42, 42, 42,
+ 47, 39, 47, 47, 47, 42, 42, 44, 44, 42,
+ 42, 42, 44, 42, 47, -1, 42, 48, 42, 48,
+ 44, 83, 48, 42, 42, 42, 42, 66, 42, 48,
+ 47, 47, 50, 42, 10, 2, 85, 46, 52, 42,
+ 42, 42, 98, 97, 46, 42, 103, 3, 42, 42,
+ 47, 54, 46, 42, 47, 42, 42, 58, 47, 45,
+ 47, 3, 42, 39, 44, 42, 3, 44, 42, 42,
+ 44, 44, 42, 42, 44, 44, 42, 42, 44, 42,
+ 10, 42, 45, 13, 42, 42, 47, 42, -1, 47,
+ 47, 56, 47, 42, 55, 42, 53, 42, 47, 12,
+ 47, -1, 47, 33, -1, -1, 64, -1, 57, 64,
+ 66, 42, 59, 42, -1, -1, 47, -1, 47, 64,
+ 49, 42, 35, 36, 66, 42, 47, -1, 49, 66,
+ 47, -1, 42, 64, 51, 42, 42, 47, 29, 49,
+ 47, 47, 33, 49, 10, -1, -1, -1, -1, 15,
+ -1, -1, 18, -1, 10, -1, -1, 64, -1, -1,
+ 26, 27, 18, 19, 20, 21, 22, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 10, -1, -1, -1, -1, -1,
+ -1, -1, 18, -1, -1, -1, -1, -1, -1, -1,
+ 26, 27, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 42, -1, -1, -1, -1, 47, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 59, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1};
+ -1, -1, -1, -1, -1, -1, -1, -1, -1};
diff --git a/src/declarative/qml/parser/qmljsgrammar_p.h b/src/declarative/qml/parser/qmljsgrammar_p.h
index 3d48d4f..b597f4f 100644
--- a/src/declarative/qml/parser/qmljsgrammar_p.h
+++ b/src/declarative/qml/parser/qmljsgrammar_p.h
@@ -10,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** contained in the Technology Preview License Agreement accompanying
+** this package.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
@@ -22,20 +22,20 @@
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this
** package.
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,21 +59,21 @@ class QmlJSGrammar
public:
enum {
EOF_SYMBOL = 0,
- REDUCE_HERE = 94,
- SHIFT_THERE = 93,
+ REDUCE_HERE = 95,
+ SHIFT_THERE = 94,
T_AND = 1,
T_AND_AND = 2,
T_AND_EQ = 3,
- T_AS = 89,
+ T_AS = 90,
T_AUTOMATIC_SEMICOLON = 62,
T_BREAK = 4,
T_CASE = 5,
T_CATCH = 6,
T_COLON = 7,
T_COMMA = 8,
- T_CONST = 83,
+ T_CONST = 84,
T_CONTINUE = 9,
- T_DEBUGGER = 84,
+ T_DEBUGGER = 85,
T_DEFAULT = 10,
T_DELETE = 11,
T_DIVIDE_ = 12,
@@ -84,10 +84,10 @@ public:
T_EQ = 17,
T_EQ_EQ = 18,
T_EQ_EQ_EQ = 19,
- T_FALSE = 82,
- T_FEED_JS_EXPRESSION = 92,
- T_FEED_JS_STATEMENT = 91,
- T_FEED_UI_PROGRAM = 90,
+ T_FALSE = 83,
+ T_FEED_JS_EXPRESSION = 93,
+ T_FEED_JS_STATEMENT = 92,
+ T_FEED_UI_PROGRAM = 91,
T_FINALLY = 20,
T_FOR = 21,
T_FUNCTION = 22,
@@ -99,7 +99,7 @@ public:
T_GT_GT_GT_EQ = 28,
T_IDENTIFIER = 29,
T_IF = 30,
- T_IMPORT = 88,
+ T_IMPORT = 89,
T_IN = 31,
T_INSTANCEOF = 32,
T_LBRACE = 33,
@@ -112,12 +112,12 @@ public:
T_MINUS = 40,
T_MINUS_EQ = 41,
T_MINUS_MINUS = 42,
- T_MULTILINE_STRING_LITERAL = 86,
+ T_MULTILINE_STRING_LITERAL = 87,
T_NEW = 43,
T_NOT = 44,
T_NOT_EQ = 45,
T_NOT_EQ_EQ = 46,
- T_NULL = 80,
+ T_NULL = 81,
T_NUMERIC_LITERAL = 47,
T_OR = 48,
T_OR_EQ = 49,
@@ -126,13 +126,14 @@ public:
T_PLUS_EQ = 52,
T_PLUS_PLUS = 53,
T_PROPERTY = 66,
- T_PUBLIC = 87,
+ T_PUBLIC = 88,
T_QUESTION = 54,
T_RBRACE = 55,
T_RBRACKET = 56,
+ T_READONLY = 68,
T_REMAINDER = 57,
T_REMAINDER_EQ = 58,
- T_RESERVED_WORD = 85,
+ T_RESERVED_WORD = 86,
T_RETURN = 59,
T_RPAREN = 60,
T_SEMICOLON = 61,
@@ -140,29 +141,29 @@ public:
T_STAR = 63,
T_STAR_EQ = 64,
T_STRING_LITERAL = 65,
- T_SWITCH = 68,
- T_THIS = 69,
- T_THROW = 70,
- T_TILDE = 71,
- T_TRUE = 81,
- T_TRY = 72,
- T_TYPEOF = 73,
- T_VAR = 74,
- T_VOID = 75,
- T_WHILE = 76,
- T_WITH = 77,
- T_XOR = 78,
- T_XOR_EQ = 79,
-
- ACCEPT_STATE = 612,
- RULE_COUNT = 334,
- STATE_COUNT = 613,
- TERMINAL_COUNT = 95,
+ T_SWITCH = 69,
+ T_THIS = 70,
+ T_THROW = 71,
+ T_TILDE = 72,
+ T_TRUE = 82,
+ T_TRY = 73,
+ T_TYPEOF = 74,
+ T_VAR = 75,
+ T_VOID = 76,
+ T_WHILE = 77,
+ T_WITH = 78,
+ T_XOR = 79,
+ T_XOR_EQ = 80,
+
+ ACCEPT_STATE = 621,
+ RULE_COUNT = 337,
+ STATE_COUNT = 622,
+ TERMINAL_COUNT = 96,
NON_TERMINAL_COUNT = 105,
- GOTO_INDEX_OFFSET = 613,
- GOTO_INFO_OFFSET = 2434,
- GOTO_CHECK_OFFSET = 2434
+ GOTO_INDEX_OFFSET = 622,
+ GOTO_INFO_OFFSET = 2376,
+ GOTO_CHECK_OFFSET = 2376
};
static const char *const spell [];
diff --git a/src/declarative/qml/parser/qmljslexer.cpp b/src/declarative/qml/parser/qmljslexer.cpp
index beb5ebd..9da6ec0 100644
--- a/src/declarative/qml/parser/qmljslexer.cpp
+++ b/src/declarative/qml/parser/qmljslexer.cpp
@@ -381,6 +381,11 @@ int Lexer::findReservedWord(const QChar *c, int size) const
&& c[4] == QLatin1Char('e') && c[5] == QLatin1Char('r')
&& c[6] == QLatin1Char('t') && c[7] == QLatin1Char('y'))
return QmlJSGrammar::T_PROPERTY;
+ else if (c[0] == QLatin1Char('r') && c[1] == QLatin1Char('e')
+ && c[2] == QLatin1Char('a') && c[3] == QLatin1Char('d')
+ && c[4] == QLatin1Char('o') && c[5] == QLatin1Char('n')
+ && c[6] == QLatin1Char('l') && c[7] == QLatin1Char('y'))
+ return QmlJSGrammar::T_READONLY;
else if (check_reserved) {
if (c[0] == QLatin1Char('a') && c[1] == QLatin1Char('b')
&& c[2] == QLatin1Char('s') && c[3] == QLatin1Char('t')
diff --git a/src/declarative/qml/parser/qmljsparser.cpp b/src/declarative/qml/parser/qmljsparser.cpp
index 1386a21..f7d483f 100644
--- a/src/declarative/qml/parser/qmljsparser.cpp
+++ b/src/declarative/qml/parser/qmljsparser.cpp
@@ -433,6 +433,19 @@ case 50: {
case 52: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval,
sym(6).Expression);
+ node->isReadonlyMember = true;
+ node->readonlyToken = loc(1);
+ node->propertyToken = loc(2);
+ node->typeToken = loc(3);
+ node->identifierToken = loc(4);
+ node->colonToken = loc(5);
+ node->semicolonToken = loc(7);
+ sym(1).Node = node;
+} break;
+
+case 54: {
+ AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval,
+ sym(6).Expression);
node->isDefaultMember = true;
node->defaultToken = loc(1);
node->propertyToken = loc(2);
@@ -443,69 +456,75 @@ case 52: {
sym(1).Node = node;
} break;
-case 53: {
+case 55: {
sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Node);
} break;
-case 54: {
+case 56: {
sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Node);
} break;
-case 56: {
+case 58: {
QString s = QLatin1String(QmlJSGrammar::spell[T_PROPERTY]);
sym(1).sval = driver->intern(s.constData(), s.length());
break;
}
-case 57: {
+case 59: {
QString s = QLatin1String(QmlJSGrammar::spell[T_SIGNAL]);
sym(1).sval = driver->intern(s.constData(), s.length());
break;
}
-case 58: {
+case 60: {
+ QString s = QLatin1String(QmlJSGrammar::spell[T_READONLY]);
+ sym(1).sval = driver->intern(s.constData(), s.length());
+ break;
+}
+
+case 61: {
AST::ThisExpression *node = makeAstNode<AST::ThisExpression> (driver->nodePool());
node->thisToken = loc(1);
sym(1).Node = node;
} break;
-case 59: {
+case 62: {
AST::IdentifierExpression *node = makeAstNode<AST::IdentifierExpression> (driver->nodePool(), sym(1).sval);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 60: {
+case 63: {
AST::NullExpression *node = makeAstNode<AST::NullExpression> (driver->nodePool());
node->nullToken = loc(1);
sym(1).Node = node;
} break;
-case 61: {
+case 64: {
AST::TrueLiteral *node = makeAstNode<AST::TrueLiteral> (driver->nodePool());
node->trueToken = loc(1);
sym(1).Node = node;
} break;
-case 62: {
+case 65: {
AST::FalseLiteral *node = makeAstNode<AST::FalseLiteral> (driver->nodePool());
node->falseToken = loc(1);
sym(1).Node = node;
} break;
-case 63: {
+case 66: {
AST::NumericLiteral *node = makeAstNode<AST::NumericLiteral> (driver->nodePool(), sym(1).dval);
node->literalToken = loc(1);
sym(1).Node = node;
} break;
-case 64:
-case 65: {
+case 67:
+case 68: {
AST::StringLiteral *node = makeAstNode<AST::StringLiteral> (driver->nodePool(), sym(1).sval);
node->literalToken = loc(1);
sym(1).Node = node;
} break;
-case 66: {
+case 69: {
bool rx = lexer->scanRegExp(Lexer::NoPrefix);
if (!rx) {
diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, location(lexer), lexer->errorMessage()));
@@ -516,7 +535,7 @@ case 66: {
sym(1).Node = node;
} break;
-case 67: {
+case 70: {
bool rx = lexer->scanRegExp(Lexer::EqualPrefix);
if (!rx) {
diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, location(lexer), lexer->errorMessage()));
@@ -527,28 +546,28 @@ case 67: {
sym(1).Node = node;
} break;
-case 68: {
+case 71: {
AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), (AST::Elision *) 0);
node->lbracketToken = loc(1);
node->rbracketToken = loc(2);
sym(1).Node = node;
} break;
-case 69: {
+case 72: {
AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).Elision->finish());
node->lbracketToken = loc(1);
node->rbracketToken = loc(3);
sym(1).Node = node;
} break;
-case 70: {
+case 73: {
AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish ());
node->lbracketToken = loc(1);
node->rbracketToken = loc(3);
sym(1).Node = node;
} break;
-case 71: {
+case 74: {
AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish (),
(AST::Elision *) 0);
node->lbracketToken = loc(1);
@@ -557,7 +576,7 @@ case 71: {
sym(1).Node = node;
} break;
-case 72: {
+case 75: {
AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish (),
sym(4).Elision->finish());
node->lbracketToken = loc(1);
@@ -566,7 +585,7 @@ case 72: {
sym(1).Node = node;
} break;
-case 73: {
+case 76: {
AST::ObjectLiteral *node = 0;
if (sym(2).Node)
node = makeAstNode<AST::ObjectLiteral> (driver->nodePool(),
@@ -578,7 +597,7 @@ case 73: {
sym(1).Node = node;
} break;
-case 74: {
+case 77: {
AST::ObjectLiteral *node = makeAstNode<AST::ObjectLiteral> (driver->nodePool(),
sym(2).PropertyNameAndValueList->finish ());
node->lbraceToken = loc(1);
@@ -586,14 +605,14 @@ case 74: {
sym(1).Node = node;
} break;
-case 75: {
+case 78: {
AST::NestedExpression *node = makeAstNode<AST::NestedExpression>(driver->nodePool(), sym(2).Expression);
node->lparenToken = loc(1);
node->rparenToken = loc(3);
sym(1).Node = node;
} break;
-case 76: {
+case 79: {
if (AST::ArrayMemberExpression *mem = AST::cast<AST::ArrayMemberExpression *>(sym(1).Expression)) {
diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Warning, mem->lbracketToken,
QLatin1String("Ignored annotation")));
@@ -613,48 +632,48 @@ case 76: {
}
} break;
-case 77: {
+case 80: {
sym(1).Node = makeAstNode<AST::ElementList> (driver->nodePool(), (AST::Elision *) 0, sym(1).Expression);
} break;
-case 78: {
+case 81: {
sym(1).Node = makeAstNode<AST::ElementList> (driver->nodePool(), sym(1).Elision->finish(), sym(2).Expression);
} break;
-case 79: {
+case 82: {
AST::ElementList *node = makeAstNode<AST::ElementList> (driver->nodePool(), sym(1).ElementList,
(AST::Elision *) 0, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 80: {
+case 83: {
AST::ElementList *node = makeAstNode<AST::ElementList> (driver->nodePool(), sym(1).ElementList, sym(3).Elision->finish(),
sym(4).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 81: {
+case 84: {
AST::Elision *node = makeAstNode<AST::Elision> (driver->nodePool());
node->commaToken = loc(1);
sym(1).Node = node;
} break;
-case 82: {
+case 85: {
AST::Elision *node = makeAstNode<AST::Elision> (driver->nodePool(), sym(1).Elision);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 83: {
+case 86: {
AST::PropertyNameAndValueList *node = makeAstNode<AST::PropertyNameAndValueList> (driver->nodePool(),
sym(1).PropertyName, sym(3).Expression);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 84: {
+case 87: {
AST::PropertyNameAndValueList *node = makeAstNode<AST::PropertyNameAndValueList> (driver->nodePool(),
sym(1).PropertyNameAndValueList, sym(3).PropertyName, sym(5).Expression);
node->commaToken = loc(2);
@@ -662,42 +681,36 @@ case 84: {
sym(1).Node = node;
} break;
-case 85: {
+case 88: {
AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), sym(1).sval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 86:
-case 87: {
+case 89:
+case 90: {
AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), driver->intern(lexer->characterBuffer(), lexer->characterCount()));
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 88: {
+case 91: {
AST::StringLiteralPropertyName *node = makeAstNode<AST::StringLiteralPropertyName> (driver->nodePool(), sym(1).sval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 89: {
+case 92: {
AST::NumericLiteralPropertyName *node = makeAstNode<AST::NumericLiteralPropertyName> (driver->nodePool(), sym(1).dval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 90: {
+case 93: {
AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), sym(1).sval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 91:
-
-case 92:
-
-case 93:
-
case 94:
case 95:
@@ -753,25 +766,31 @@ case 119:
case 120:
case 121:
+
+case 122:
+
+case 123:
+
+case 124:
{
sym(1).sval = driver->intern(lexer->characterBuffer(), lexer->characterCount());
} break;
-case 126: {
+case 129: {
AST::ArrayMemberExpression *node = makeAstNode<AST::ArrayMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
node->lbracketToken = loc(2);
node->rbracketToken = loc(4);
sym(1).Node = node;
} break;
-case 127: {
+case 130: {
AST::FieldMemberExpression *node = makeAstNode<AST::FieldMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).sval);
node->dotToken = loc(2);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-case 128: {
+case 131: {
AST::NewMemberExpression *node = makeAstNode<AST::NewMemberExpression> (driver->nodePool(), sym(2).Expression, sym(4).ArgumentList);
node->newToken = loc(1);
node->lparenToken = loc(3);
@@ -779,384 +798,384 @@ case 128: {
sym(1).Node = node;
} break;
-case 130: {
+case 133: {
AST::NewExpression *node = makeAstNode<AST::NewExpression> (driver->nodePool(), sym(2).Expression);
node->newToken = loc(1);
sym(1).Node = node;
} break;
-case 131: {
+case 134: {
AST::CallExpression *node = makeAstNode<AST::CallExpression> (driver->nodePool(), sym(1).Expression, sym(3).ArgumentList);
node->lparenToken = loc(2);
node->rparenToken = loc(4);
sym(1).Node = node;
} break;
-case 132: {
+case 135: {
AST::CallExpression *node = makeAstNode<AST::CallExpression> (driver->nodePool(), sym(1).Expression, sym(3).ArgumentList);
node->lparenToken = loc(2);
node->rparenToken = loc(4);
sym(1).Node = node;
} break;
-case 133: {
+case 136: {
AST::ArrayMemberExpression *node = makeAstNode<AST::ArrayMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
node->lbracketToken = loc(2);
node->rbracketToken = loc(4);
sym(1).Node = node;
} break;
-case 134: {
+case 137: {
AST::FieldMemberExpression *node = makeAstNode<AST::FieldMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).sval);
node->dotToken = loc(2);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-case 135: {
+case 138: {
sym(1).Node = 0;
} break;
-case 136: {
+case 139: {
sym(1).Node = sym(1).ArgumentList->finish();
} break;
-case 137: {
+case 140: {
sym(1).Node = makeAstNode<AST::ArgumentList> (driver->nodePool(), sym(1).Expression);
} break;
-case 138: {
+case 141: {
AST::ArgumentList *node = makeAstNode<AST::ArgumentList> (driver->nodePool(), sym(1).ArgumentList, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 142: {
+case 145: {
AST::PostIncrementExpression *node = makeAstNode<AST::PostIncrementExpression> (driver->nodePool(), sym(1).Expression);
node->incrementToken = loc(2);
sym(1).Node = node;
} break;
-case 143: {
+case 146: {
AST::PostDecrementExpression *node = makeAstNode<AST::PostDecrementExpression> (driver->nodePool(), sym(1).Expression);
node->decrementToken = loc(2);
sym(1).Node = node;
} break;
-case 145: {
+case 148: {
AST::DeleteExpression *node = makeAstNode<AST::DeleteExpression> (driver->nodePool(), sym(2).Expression);
node->deleteToken = loc(1);
sym(1).Node = node;
} break;
-case 146: {
+case 149: {
AST::VoidExpression *node = makeAstNode<AST::VoidExpression> (driver->nodePool(), sym(2).Expression);
node->voidToken = loc(1);
sym(1).Node = node;
} break;
-case 147: {
+case 150: {
AST::TypeOfExpression *node = makeAstNode<AST::TypeOfExpression> (driver->nodePool(), sym(2).Expression);
node->typeofToken = loc(1);
sym(1).Node = node;
} break;
-case 148: {
+case 151: {
AST::PreIncrementExpression *node = makeAstNode<AST::PreIncrementExpression> (driver->nodePool(), sym(2).Expression);
node->incrementToken = loc(1);
sym(1).Node = node;
} break;
-case 149: {
+case 152: {
AST::PreDecrementExpression *node = makeAstNode<AST::PreDecrementExpression> (driver->nodePool(), sym(2).Expression);
node->decrementToken = loc(1);
sym(1).Node = node;
} break;
-case 150: {
+case 153: {
AST::UnaryPlusExpression *node = makeAstNode<AST::UnaryPlusExpression> (driver->nodePool(), sym(2).Expression);
node->plusToken = loc(1);
sym(1).Node = node;
} break;
-case 151: {
+case 154: {
AST::UnaryMinusExpression *node = makeAstNode<AST::UnaryMinusExpression> (driver->nodePool(), sym(2).Expression);
node->minusToken = loc(1);
sym(1).Node = node;
} break;
-case 152: {
+case 155: {
AST::TildeExpression *node = makeAstNode<AST::TildeExpression> (driver->nodePool(), sym(2).Expression);
node->tildeToken = loc(1);
sym(1).Node = node;
} break;
-case 153: {
+case 156: {
AST::NotExpression *node = makeAstNode<AST::NotExpression> (driver->nodePool(), sym(2).Expression);
node->notToken = loc(1);
sym(1).Node = node;
} break;
-case 155: {
+case 158: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Mul, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 156: {
+case 159: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Div, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 157: {
+case 160: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Mod, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 159: {
+case 162: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Add, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 160: {
+case 163: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Sub, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 162: {
+case 165: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::LShift, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 163: {
+case 166: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::RShift, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 164: {
+case 167: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::URShift, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 166: {
+case 169: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Lt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 167: {
+case 170: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Gt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 168: {
+case 171: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Le, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 169: {
+case 172: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Ge, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 170: {
+case 173: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::InstanceOf, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 171: {
+case 174: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::In, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 173: {
+case 176: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Lt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 174: {
+case 177: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Gt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 175: {
+case 178: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Le, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 176: {
+case 179: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Ge, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 177: {
+case 180: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::InstanceOf, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 179: {
+case 182: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Equal, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 180: {
+case 183: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::NotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 181: {
+case 184: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::StrictEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 182: {
+case 185: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::StrictNotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 184: {
+case 187: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Equal, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 185: {
+case 188: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::NotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 186: {
+case 189: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::StrictEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 187: {
+case 190: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::StrictNotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 189: {
+case 192: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::BitAnd, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 191: {
+case 194: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::BitAnd, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 193: {
+case 196: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::BitXor, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 195: {
+case 198: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::BitXor, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 197: {
+case 200: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::BitOr, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 199: {
+case 202: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::BitOr, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 201: {
+case 204: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::And, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 203: {
+case 206: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::And, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 205: {
+case 208: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Or, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 207: {
+case 210: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Or, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 209: {
+case 212: {
AST::ConditionalExpression *node = makeAstNode<AST::ConditionalExpression> (driver->nodePool(), sym(1).Expression,
sym(3).Expression, sym(5).Expression);
node->questionToken = loc(2);
@@ -1164,7 +1183,7 @@ case 209: {
sym(1).Node = node;
} break;
-case 211: {
+case 214: {
AST::ConditionalExpression *node = makeAstNode<AST::ConditionalExpression> (driver->nodePool(), sym(1).Expression,
sym(3).Expression, sym(5).Expression);
node->questionToken = loc(2);
@@ -1172,112 +1191,112 @@ case 211: {
sym(1).Node = node;
} break;
-case 213: {
+case 216: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
sym(2).ival, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 215: {
+case 218: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
sym(2).ival, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 216: {
+case 219: {
sym(1).ival = QSOperator::Assign;
} break;
-case 217: {
+case 220: {
sym(1).ival = QSOperator::InplaceMul;
} break;
-case 218: {
+case 221: {
sym(1).ival = QSOperator::InplaceDiv;
} break;
-case 219: {
+case 222: {
sym(1).ival = QSOperator::InplaceMod;
} break;
-case 220: {
+case 223: {
sym(1).ival = QSOperator::InplaceAdd;
} break;
-case 221: {
+case 224: {
sym(1).ival = QSOperator::InplaceSub;
} break;
-case 222: {
+case 225: {
sym(1).ival = QSOperator::InplaceLeftShift;
} break;
-case 223: {
+case 226: {
sym(1).ival = QSOperator::InplaceRightShift;
} break;
-case 224: {
+case 227: {
sym(1).ival = QSOperator::InplaceURightShift;
} break;
-case 225: {
+case 228: {
sym(1).ival = QSOperator::InplaceAnd;
} break;
-case 226: {
+case 229: {
sym(1).ival = QSOperator::InplaceXor;
} break;
-case 227: {
+case 230: {
sym(1).ival = QSOperator::InplaceOr;
} break;
-case 229: {
+case 232: {
AST::Expression *node = makeAstNode<AST::Expression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 230: {
+case 233: {
sym(1).Node = 0;
} break;
-case 233: {
+case 236: {
AST::Expression *node = makeAstNode<AST::Expression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 234: {
+case 237: {
sym(1).Node = 0;
} break;
-case 251: {
+case 254: {
AST::Block *node = makeAstNode<AST::Block> (driver->nodePool(), sym(2).StatementList);
node->lbraceToken = loc(1);
node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
-case 252: {
+case 255: {
sym(1).Node = makeAstNode<AST::StatementList> (driver->nodePool(), sym(1).Statement);
} break;
-case 253: {
+case 256: {
sym(1).Node = makeAstNode<AST::StatementList> (driver->nodePool(), sym(1).StatementList, sym(2).Statement);
} break;
-case 254: {
+case 257: {
sym(1).Node = 0;
} break;
-case 255: {
+case 258: {
sym(1).Node = sym(1).StatementList->finish ();
} break;
-case 257: {
+case 260: {
AST::VariableStatement *node = makeAstNode<AST::VariableStatement> (driver->nodePool(),
sym(2).VariableDeclarationList->finish (/*readOnly=*/sym(1).ival == T_CONST));
node->declarationKindToken = loc(1);
@@ -1285,76 +1304,76 @@ case 257: {
sym(1).Node = node;
} break;
-case 258: {
+case 261: {
sym(1).ival = T_CONST;
} break;
-case 259: {
+case 262: {
sym(1).ival = T_VAR;
} break;
-case 260: {
+case 263: {
sym(1).Node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclaration);
} break;
-case 261: {
+case 264: {
AST::VariableDeclarationList *node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(),
sym(1).VariableDeclarationList, sym(3).VariableDeclaration);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 262: {
+case 265: {
sym(1).Node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclaration);
} break;
-case 263: {
+case 266: {
sym(1).Node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclarationList, sym(3).VariableDeclaration);
} break;
-case 264: {
+case 267: {
AST::VariableDeclaration *node = makeAstNode<AST::VariableDeclaration> (driver->nodePool(), sym(1).sval, sym(2).Expression);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 265: {
+case 268: {
AST::VariableDeclaration *node = makeAstNode<AST::VariableDeclaration> (driver->nodePool(), sym(1).sval, sym(2).Expression);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 266: {
+case 269: {
// ### TODO: AST for initializer
sym(1) = sym(2);
} break;
-case 267: {
+case 270: {
sym(1).Node = 0;
} break;
-case 269: {
+case 272: {
// ### TODO: AST for initializer
sym(1) = sym(2);
} break;
-case 270: {
+case 273: {
sym(1).Node = 0;
} break;
-case 272: {
+case 275: {
AST::EmptyStatement *node = makeAstNode<AST::EmptyStatement> (driver->nodePool());
node->semicolonToken = loc(1);
sym(1).Node = node;
} break;
-case 274: {
+case 277: {
AST::ExpressionStatement *node = makeAstNode<AST::ExpressionStatement> (driver->nodePool(), sym(1).Expression);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 275: {
+case 278: {
AST::IfStatement *node = makeAstNode<AST::IfStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement, sym(7).Statement);
node->ifToken = loc(1);
node->lparenToken = loc(2);
@@ -1363,7 +1382,7 @@ case 275: {
sym(1).Node = node;
} break;
-case 276: {
+case 279: {
AST::IfStatement *node = makeAstNode<AST::IfStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement);
node->ifToken = loc(1);
node->lparenToken = loc(2);
@@ -1371,7 +1390,7 @@ case 276: {
sym(1).Node = node;
} break;
-case 278: {
+case 281: {
AST::DoWhileStatement *node = makeAstNode<AST::DoWhileStatement> (driver->nodePool(), sym(2).Statement, sym(5).Expression);
node->doToken = loc(1);
node->whileToken = loc(3);
@@ -1381,7 +1400,7 @@ case 278: {
sym(1).Node = node;
} break;
-case 279: {
+case 282: {
AST::WhileStatement *node = makeAstNode<AST::WhileStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement);
node->whileToken = loc(1);
node->lparenToken = loc(2);
@@ -1389,7 +1408,7 @@ case 279: {
sym(1).Node = node;
} break;
-case 280: {
+case 283: {
AST::ForStatement *node = makeAstNode<AST::ForStatement> (driver->nodePool(), sym(3).Expression,
sym(5).Expression, sym(7).Expression, sym(9).Statement);
node->forToken = loc(1);
@@ -1400,7 +1419,7 @@ case 280: {
sym(1).Node = node;
} break;
-case 281: {
+case 284: {
AST::LocalForStatement *node = makeAstNode<AST::LocalForStatement> (driver->nodePool(),
sym(4).VariableDeclarationList->finish (/*readOnly=*/false), sym(6).Expression,
sym(8).Expression, sym(10).Statement);
@@ -1413,7 +1432,7 @@ case 281: {
sym(1).Node = node;
} break;
-case 282: {
+case 285: {
AST:: ForEachStatement *node = makeAstNode<AST::ForEachStatement> (driver->nodePool(), sym(3).Expression,
sym(5).Expression, sym(7).Statement);
node->forToken = loc(1);
@@ -1423,7 +1442,7 @@ case 282: {
sym(1).Node = node;
} break;
-case 283: {
+case 286: {
AST::LocalForEachStatement *node = makeAstNode<AST::LocalForEachStatement> (driver->nodePool(),
sym(4).VariableDeclaration, sym(6).Expression, sym(8).Statement);
node->forToken = loc(1);
@@ -1434,14 +1453,14 @@ case 283: {
sym(1).Node = node;
} break;
-case 285: {
+case 288: {
AST::ContinueStatement *node = makeAstNode<AST::ContinueStatement> (driver->nodePool());
node->continueToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 287: {
+case 290: {
AST::ContinueStatement *node = makeAstNode<AST::ContinueStatement> (driver->nodePool(), sym(2).sval);
node->continueToken = loc(1);
node->identifierToken = loc(2);
@@ -1449,14 +1468,14 @@ case 287: {
sym(1).Node = node;
} break;
-case 289: {
+case 292: {
AST::BreakStatement *node = makeAstNode<AST::BreakStatement> (driver->nodePool());
node->breakToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 291: {
+case 294: {
AST::BreakStatement *node = makeAstNode<AST::BreakStatement> (driver->nodePool(), sym(2).sval);
node->breakToken = loc(1);
node->identifierToken = loc(2);
@@ -1464,14 +1483,14 @@ case 291: {
sym(1).Node = node;
} break;
-case 293: {
+case 296: {
AST::ReturnStatement *node = makeAstNode<AST::ReturnStatement> (driver->nodePool(), sym(2).Expression);
node->returnToken = loc(1);
node->semicolonToken = loc(3);
sym(1).Node = node;
} break;
-case 294: {
+case 297: {
AST::WithStatement *node = makeAstNode<AST::WithStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement);
node->withToken = loc(1);
node->lparenToken = loc(2);
@@ -1479,7 +1498,7 @@ case 294: {
sym(1).Node = node;
} break;
-case 295: {
+case 298: {
AST::SwitchStatement *node = makeAstNode<AST::SwitchStatement> (driver->nodePool(), sym(3).Expression, sym(5).CaseBlock);
node->switchToken = loc(1);
node->lparenToken = loc(2);
@@ -1487,90 +1506,90 @@ case 295: {
sym(1).Node = node;
} break;
-case 296: {
+case 299: {
AST::CaseBlock *node = makeAstNode<AST::CaseBlock> (driver->nodePool(), sym(2).CaseClauses);
node->lbraceToken = loc(1);
node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
-case 297: {
+case 300: {
AST::CaseBlock *node = makeAstNode<AST::CaseBlock> (driver->nodePool(), sym(2).CaseClauses, sym(3).DefaultClause, sym(4).CaseClauses);
node->lbraceToken = loc(1);
node->rbraceToken = loc(5);
sym(1).Node = node;
} break;
-case 298: {
+case 301: {
sym(1).Node = makeAstNode<AST::CaseClauses> (driver->nodePool(), sym(1).CaseClause);
} break;
-case 299: {
+case 302: {
sym(1).Node = makeAstNode<AST::CaseClauses> (driver->nodePool(), sym(1).CaseClauses, sym(2).CaseClause);
} break;
-case 300: {
+case 303: {
sym(1).Node = 0;
} break;
-case 301: {
+case 304: {
sym(1).Node = sym(1).CaseClauses->finish ();
} break;
-case 302: {
+case 305: {
AST::CaseClause *node = makeAstNode<AST::CaseClause> (driver->nodePool(), sym(2).Expression, sym(4).StatementList);
node->caseToken = loc(1);
node->colonToken = loc(3);
sym(1).Node = node;
} break;
-case 303: {
+case 306: {
AST::DefaultClause *node = makeAstNode<AST::DefaultClause> (driver->nodePool(), sym(3).StatementList);
node->defaultToken = loc(1);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 304:
-case 305: {
+case 307:
+case 308: {
AST::LabelledStatement *node = makeAstNode<AST::LabelledStatement> (driver->nodePool(), driver->intern(lexer->characterBuffer(), lexer->characterCount()), sym(3).Statement);
node->identifierToken = loc(1);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 306: {
+case 309: {
AST::LabelledStatement *node = makeAstNode<AST::LabelledStatement> (driver->nodePool(), sym(1).sval, sym(3).Statement);
node->identifierToken = loc(1);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 308: {
+case 311: {
AST::ThrowStatement *node = makeAstNode<AST::ThrowStatement> (driver->nodePool(), sym(2).Expression);
node->throwToken = loc(1);
node->semicolonToken = loc(3);
sym(1).Node = node;
} break;
-case 309: {
+case 312: {
AST::TryStatement *node = makeAstNode<AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Catch);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
-case 310: {
+case 313: {
AST::TryStatement *node = makeAstNode<AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Finally);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
-case 311: {
+case 314: {
AST::TryStatement *node = makeAstNode<AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Catch, sym(4).Finally);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
-case 312: {
+case 315: {
AST::Catch *node = makeAstNode<AST::Catch> (driver->nodePool(), sym(3).sval, sym(5).Block);
node->catchToken = loc(1);
node->lparenToken = loc(2);
@@ -1579,20 +1598,20 @@ case 312: {
sym(1).Node = node;
} break;
-case 313: {
+case 316: {
AST::Finally *node = makeAstNode<AST::Finally> (driver->nodePool(), sym(2).Block);
node->finallyToken = loc(1);
sym(1).Node = node;
} break;
-case 315: {
+case 318: {
AST::DebuggerStatement *node = makeAstNode<AST::DebuggerStatement> (driver->nodePool());
node->debuggerToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 316: {
+case 319: {
AST::FunctionDeclaration *node = makeAstNode<AST::FunctionDeclaration> (driver->nodePool(), sym(2).sval, sym(4).FormalParameterList, sym(7).FunctionBody);
node->functionToken = loc(1);
node->identifierToken = loc(2);
@@ -1603,7 +1622,7 @@ case 316: {
sym(1).Node = node;
} break;
-case 317: {
+case 320: {
AST::FunctionExpression *node = makeAstNode<AST::FunctionExpression> (driver->nodePool(), sym(2).sval, sym(4).FormalParameterList, sym(7).FunctionBody);
node->functionToken = loc(1);
if (sym(2).sval)
@@ -1615,56 +1634,56 @@ case 317: {
sym(1).Node = node;
} break;
-case 318: {
+case 321: {
AST::FormalParameterList *node = makeAstNode<AST::FormalParameterList> (driver->nodePool(), sym(1).sval);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 319: {
+case 322: {
AST::FormalParameterList *node = makeAstNode<AST::FormalParameterList> (driver->nodePool(), sym(1).FormalParameterList, sym(3).sval);
node->commaToken = loc(2);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-case 320: {
+case 323: {
sym(1).Node = 0;
} break;
-case 321: {
+case 324: {
sym(1).Node = sym(1).FormalParameterList->finish ();
} break;
-case 322: {
+case 325: {
sym(1).Node = 0;
} break;
-case 324: {
+case 327: {
sym(1).Node = makeAstNode<AST::FunctionBody> (driver->nodePool(), sym(1).SourceElements->finish ());
} break;
-case 325: {
+case 328: {
sym(1).Node = makeAstNode<AST::SourceElements> (driver->nodePool(), sym(1).SourceElement);
} break;
-case 326: {
+case 329: {
sym(1).Node = makeAstNode<AST::SourceElements> (driver->nodePool(), sym(1).SourceElements, sym(2).SourceElement);
} break;
-case 327: {
+case 330: {
sym(1).Node = makeAstNode<AST::StatementSourceElement> (driver->nodePool(), sym(1).Statement);
} break;
-case 328: {
+case 331: {
sym(1).Node = makeAstNode<AST::FunctionSourceElement> (driver->nodePool(), sym(1).FunctionDeclaration);
} break;
-case 329: {
+case 332: {
sym(1).sval = 0;
} break;
-case 331: {
+case 334: {
sym(1).Node = 0;
} break;
diff --git a/src/declarative/qml/parser/qmljsparser_p.h b/src/declarative/qml/parser/qmljsparser_p.h
index 685e286..1db6086 100644
--- a/src/declarative/qml/parser/qmljsparser_p.h
+++ b/src/declarative/qml/parser/qmljsparser_p.h
@@ -222,9 +222,9 @@ protected:
-#define J_SCRIPT_REGEXPLITERAL_RULE1 66
+#define J_SCRIPT_REGEXPLITERAL_RULE1 69
-#define J_SCRIPT_REGEXPLITERAL_RULE2 67
+#define J_SCRIPT_REGEXPLITERAL_RULE2 70
QT_END_NAMESPACE
diff --git a/src/declarative/qml/qmlcompiler.cpp b/src/declarative/qml/qmlcompiler.cpp
index 070add7..b8e9d47 100644
--- a/src/declarative/qml/qmlcompiler.cpp
+++ b/src/declarative/qml/qmlcompiler.cpp
@@ -642,6 +642,8 @@ void QmlCompiler::compileTree(Object *tree)
def.type = QmlInstruction::SetDefault;
output->bytecode << def;
+ output->imports = unit->imports;
+
if (tree->metatype)
static_cast<QMetaObject &>(output->root) = *tree->metaObject();
else
@@ -781,6 +783,7 @@ void QmlCompiler::genObject(QmlParser::Object *obj)
QmlInstruction create;
create.type = QmlInstruction::CreateObject;
create.line = obj->location.start.line;
+ create.create.column = obj->location.start.column;
create.create.data = -1;
if (!obj->custom.isEmpty())
create.create.data = output->indexForByteArray(obj->custom);
@@ -937,6 +940,7 @@ void QmlCompiler::genComponent(QmlParser::Object *obj)
QmlInstruction create;
create.type = QmlInstruction::CreateComponent;
create.line = root->location.start.line;
+ create.createComponent.column = root->location.start.column;
create.createComponent.endLine = root->location.end.line;
output->bytecode << create;
int count = output->bytecode.count();
@@ -1452,10 +1456,13 @@ bool QmlCompiler::buildIdProperty(QmlParser::Property *prop,
if (!isValidId(val))
COMPILE_EXCEPTION(prop, val << "is not a valid object id");
- // We disallow id's that conflict with import prefixes
+ // We disallow id's that conflict with import prefixes and types
QmlEnginePrivate::ImportedNamespace *ns = 0;
+ QmlType *type = 0;
QmlEnginePrivate::get(engine)->resolveType(unit->imports, val.toUtf8(),
- 0, 0, 0, 0, &ns);
+ &type, 0, 0, 0, &ns);
+ if (type)
+ COMPILE_EXCEPTION(idValue, "id conflicts with type name");
if (ns)
COMPILE_EXCEPTION(idValue, "id conflicts with namespace prefix");
diff --git a/src/declarative/qml/qmlcompiler_p.h b/src/declarative/qml/qmlcompiler_p.h
index c42c2d9..83c415c 100644
--- a/src/declarative/qml/qmlcompiler_p.h
+++ b/src/declarative/qml/qmlcompiler_p.h
@@ -76,6 +76,7 @@ public:
QByteArray name;
QUrl url;
+ QmlEnginePrivate::Imports imports;
struct TypeReference
{
diff --git a/src/declarative/qml/qmlcomponent.cpp b/src/declarative/qml/qmlcomponent.cpp
index c844a32..e897cce 100644
--- a/src/declarative/qml/qmlcomponent.cpp
+++ b/src/declarative/qml/qmlcomponent.cpp
@@ -488,6 +488,7 @@ QObject *QmlComponent::beginCreate(QmlContext *context)
static_cast<QmlContextPrivate *>(QObjectPrivate::get(context));
QmlContext *ctxt = new QmlContext(context, 0, true);
static_cast<QmlContextPrivate*>(ctxt->d_func())->url = d->cc->url;
+ static_cast<QmlContextPrivate*>(ctxt->d_func())->imports = d->cc->imports;
QmlVME vme;
QObject *rv = vme.run(ctxt, d->cc, d->start, d->count);
diff --git a/src/declarative/qml/qmlcontext_p.h b/src/declarative/qml/qmlcontext_p.h
index 84d990c..b305408 100644
--- a/src/declarative/qml/qmlcontext_p.h
+++ b/src/declarative/qml/qmlcontext_p.h
@@ -60,6 +60,7 @@
#include <QtScript/qscriptvalue.h>
#include <QtCore/qset.h>
#include <private/qguard_p.h>
+#include <private/qmlengine_p.h>
QT_BEGIN_NAMESPACE
@@ -91,6 +92,7 @@ public:
QScriptValueList scopeChain;
QUrl url;
+ QmlEnginePrivate::Imports imports;
void init();
diff --git a/src/declarative/qml/qmlengine.cpp b/src/declarative/qml/qmlengine.cpp
index e342d3f..3d8b2c4 100644
--- a/src/declarative/qml/qmlengine.cpp
+++ b/src/declarative/qml/qmlengine.cpp
@@ -181,6 +181,7 @@ void QmlEnginePrivate::init()
contextClass = new QmlContextScriptClass(q);
objectClass = new QmlObjectScriptClass(q);
valueTypeClass = new QmlValueTypeScriptClass(q);
+ typeNameClass = new QmlTypeNameScriptClass(q);
rootContext = new QmlContext(q,true);
#ifdef QT_SCRIPTTOOLS_LIB
if (qmlDebugger()){
@@ -211,40 +212,158 @@ QmlEnginePrivate::CapturedProperty::CapturedProperty(const QmlMetaProperty &p)
{
}
+struct QmlTypeNameBridge
+{
+ QObject *object;
+ QmlType *type;
+ QmlEnginePrivate::ImportedNamespace *ns;
+};
+Q_DECLARE_METATYPE(QmlTypeNameBridge);
+
+struct QmlValueTypeReference {
+ QmlValueType *type;
+ QGuard<QObject> object;
+ int property;
+};
+Q_DECLARE_METATYPE(QmlValueTypeReference);
+
////////////////////////////////////////////////////////////////////
-typedef QHash<QPair<const QMetaObject *, QString>, bool> FunctionCache;
-Q_GLOBAL_STATIC(FunctionCache, functionCache);
+QScriptClass::QueryFlags
+QmlEnginePrivate::queryContext(const QString &propName, uint *id,
+ QmlContext *bindContext)
+{
+ resolveData.safetyCheckId++;
+ *id = resolveData.safetyCheckId;
+ resolveData.clear();
+
+ QHash<QString, int>::Iterator contextProperty =
+ bindContext->d_func()->propertyNames.find(propName);
+
+ if (contextProperty != bindContext->d_func()->propertyNames.end()) {
+
+ resolveData.context = bindContext;
+ resolveData.contextIndex = *contextProperty;
+
+ return QScriptClass::HandlesReadAccess;
+ }
+
+ QmlType *type = 0; ImportedNamespace *ns = 0;
+ if (currentExpression && bindContext == currentExpression->context() &&
+ propName.at(0).isUpper() && resolveType(bindContext->d_func()->imports, propName.toUtf8(), &type, 0, 0, 0, &ns)) {
+
+ if (type || ns) {
+ // Must be either an attached property, or an enum
+ resolveData.object = bindContext->d_func()->defaultObjects.first();
+ resolveData.type = type;
+ resolveData.ns = ns;
+ return QScriptClass::HandlesReadAccess;
+ }
+
+ }
+
+ QScriptClass::QueryFlags rv = 0;
+ for (int ii = 0; !rv && ii < bindContext->d_func()->defaultObjects.count(); ++ii) {
+ rv = queryObject(propName, id,
+ bindContext->d_func()->defaultObjects.at(ii));
+ }
+
+ return rv;
+}
+
+QScriptValue
+QmlEnginePrivate::propertyContext(const QScriptString &name,
+ QmlContext *bindContext,
+ uint id)
+{
+ Q_ASSERT(id == resolveData.safetyCheckId);
+
+
+ if (resolveData.type || resolveData.ns) {
+ QmlTypeNameBridge tnb = {
+ resolveData.object,
+ resolveData.type,
+ resolveData.ns
+ };
+ return scriptEngine.newObject(typeNameClass, scriptEngine.newVariant(qVariantFromValue(tnb)));
+ } else if (resolveData.context) {
+ QmlContext *bindContext = resolveData.context;
+ QmlContextPrivate *contextPrivate = bindContext->d_func();
+ int index = resolveData.contextIndex;
+
+ QScriptValue rv;
+ if (index < contextPrivate->idValueCount) {
+ rv = scriptEngine.newObject(objectClass, scriptEngine.newVariant(QVariant::fromValue(contextPrivate->idValues[index].data())));
+ } else {
+ QVariant value = contextPrivate->propertyValues.at(index);
+ if (QmlMetaType::isObject(value.userType())) {
+ rv = scriptEngine.newObject(objectClass, scriptEngine.newVariant(value));
+ } else {
+ rv = scriptEngine.newVariant(value);
+ }
+ }
+ capturedProperties << QmlEnginePrivate::CapturedProperty(bindContext, -1, index + contextPrivate->notifyIndex);
+ return rv;
+
+ } else {
+
+ return propertyObject(name, resolveData.object, id);
+
+ }
+
+ return QScriptValue();
+}
+
+void QmlEnginePrivate::setPropertyContext(const QScriptValue &value, uint id)
+{
+ // As context properties cannot be written, we can assume that the
+ // write is a object property write
+ setPropertyObject(value, id);
+}
+
+void QmlEnginePrivate::setPropertyObject(const QScriptValue &value, uint id)
+{
+ Q_ASSERT(id == resolveData.safetyCheckId);
+ Q_Q(QmlEngine);
+
+ resolveData.property.write(QmlScriptClass::toVariant(q, value));
+}
QScriptClass::QueryFlags
QmlEnginePrivate::queryObject(const QString &propName,
uint *id, QObject *obj)
{
+ resolveData.safetyCheckId++;
+ *id = resolveData.safetyCheckId;
+ resolveData.clear();
+
QScriptClass::QueryFlags rv = 0;
QmlContext *ctxt = QmlEngine::contextForObject(obj);
if (!ctxt)
ctxt = rootContext;
QmlMetaProperty prop(obj, propName, ctxt);
+
if (prop.type() == QmlMetaProperty::Invalid) {
QPair<const QMetaObject *, QString> key =
qMakePair(obj->metaObject(), propName);
bool isFunction = false;
- if (functionCache()->contains(key)) {
- isFunction = functionCache()->value(key);
+ if (functionCache.contains(key)) {
+ isFunction = functionCache.value(key);
} else {
QScriptValue sobj = scriptEngine.newQObject(obj);
QScriptValue func = sobj.property(propName);
isFunction = func.isFunction();
- functionCache()->insert(key, isFunction);
+ functionCache.insert(key, isFunction);
}
if (isFunction) {
- *id = QmlScriptClass::FunctionId;
+ resolveData.object = obj;
+ resolveData.isFunction = true;
rv |= QScriptClass::HandlesReadAccess;
- }
+ }
} else {
- *id = QmlScriptClass::PropertyId;
- *id |= prop.save();
+ resolveData.object = obj;
+ resolveData.property = prop;
rv |= QScriptClass::HandlesReadAccess;
if (prop.isWritable())
@@ -254,25 +373,19 @@ QmlEnginePrivate::queryObject(const QString &propName,
return rv;
}
-struct QmlValueTypeReference {
- QmlValueType *type;
- QGuard<QObject> object;
- int property;
-};
-Q_DECLARE_METATYPE(QmlValueTypeReference);
-
QScriptValue QmlEnginePrivate::propertyObject(const QScriptString &propName,
QObject *obj, uint id)
{
- if (id == QmlScriptClass::FunctionId) {
+ Q_ASSERT(id == resolveData.safetyCheckId);
+ Q_ASSERT(resolveData.object);
+
+ if (resolveData.isFunction) {
+ // ### Optimize
QScriptValue sobj = scriptEngine.newQObject(obj);
QScriptValue func = sobj.property(propName);
return func;
} else {
- QmlMetaProperty prop;
- prop.restore(id, obj);
- if (!prop.isValid())
- return QScriptValue();
+ const QmlMetaProperty &prop = resolveData.property;
if (prop.needsChangedNotifier())
capturedProperties << CapturedProperty(prop);
@@ -968,23 +1081,11 @@ QmlContextScriptClass::queryProperty(const QScriptValue &object,
Q_UNUSED(flags);
QmlContext *bindContext =
static_cast<QmlContext*>(object.data().toQObject());
- QueryFlags rv = 0;
QString propName = name.toString();
- *id = InvalidId;
- if (bindContext->d_func()->propertyNames.contains(propName)) {
- rv |= HandlesReadAccess;
- *id = VariantPropertyId;
- }
-
- for (int ii = 0; !rv && ii < bindContext->d_func()->defaultObjects.count(); ++ii) {
- rv = QmlEnginePrivate::get(engine)->queryObject(propName, id, bindContext->d_func()->defaultObjects.at(ii));
- if (rv)
- *id |= (ii << 24);
- }
-
- return rv;
+ QmlEnginePrivate *ep = QmlEnginePrivate::get(engine);
+ return ep->queryContext(propName, id, bindContext);
}
QScriptValue QmlContextScriptClass::property(const QScriptValue &object,
@@ -994,46 +1095,8 @@ QScriptValue QmlContextScriptClass::property(const QScriptValue &object,
QmlContext *bindContext =
static_cast<QmlContext*>(object.data().toQObject());
- uint basicId = id & QmlScriptClass::ClassIdMask;
-
- QScriptEngine *scriptEngine = QmlEnginePrivate::getScriptEngine(engine);
QmlEnginePrivate *ep = QmlEnginePrivate::get(engine);
-
- switch (basicId) {
- case VariantPropertyId:
- {
- QmlContextPrivate *contextPrivate = bindContext->d_func();
- QString propName = name.toString();
- int index = contextPrivate->propertyNames.value(propName);
-
- QScriptValue rv;
- if (index < contextPrivate->idValueCount) {
- rv = scriptEngine->newObject(ep->objectClass, scriptEngine->newVariant(QVariant::fromValue(contextPrivate->idValues[index].data())));
- } else {
- QVariant value = contextPrivate->propertyValues.at(index);
- if (QmlMetaType::isObject(value.userType())) {
- rv = scriptEngine->newObject(ep->objectClass, scriptEngine->newVariant(value));
- } else {
- rv = scriptEngine->newVariant(value);
- }
- }
- ep->capturedProperties << QmlEnginePrivate::CapturedProperty(bindContext, -1, index + bindContext->d_func()->notifyIndex);
- return rv;
- }
- default:
- {
- int objId = (id & ClassIdSelectorMask) >> 24;
- QObject *obj = bindContext->d_func()->defaultObjects.at(objId);
- QScriptValue rv = ep->propertyObject(name, obj,
- id & ~QmlScriptClass::ClassIdSelectorMask);
- if (rv.isValid()) {
- return rv;
- }
- break;
- }
- }
-
- return QScriptValue();
+ return ep->propertyContext(name, bindContext, id);
}
void QmlContextScriptClass::setProperty(QScriptValue &object,
@@ -1043,17 +1106,82 @@ void QmlContextScriptClass::setProperty(QScriptValue &object,
{
Q_UNUSED(name);
- QmlContext *bindContext =
- static_cast<QmlContext*>(object.data().toQObject());
+ QmlEnginePrivate::get(engine)->setPropertyContext(value, id);
+}
- int objIdx = (id & QmlScriptClass::ClassIdSelectorMask) >> 24;
- QObject *obj = bindContext->d_func()->defaultObjects.at(objIdx);
+/////////////////////////////////////////////////////////////
+QmlTypeNameScriptClass::QmlTypeNameScriptClass(QmlEngine *engine)
+: QmlScriptClass(engine), object(0), type(0)
+{
+}
- QmlMetaProperty prop;
- prop.restore(id, obj);
+QmlTypeNameScriptClass::~QmlTypeNameScriptClass()
+{
+}
- QVariant v = QmlScriptClass::toVariant(engine, value);
- prop.write(v);
+QmlTypeNameScriptClass::QueryFlags
+QmlTypeNameScriptClass::queryProperty(const QScriptValue &scriptObject,
+ const QScriptString &name,
+ QueryFlags flags, uint *id)
+{
+ QmlTypeNameBridge bridge =
+ qvariant_cast<QmlTypeNameBridge>(scriptObject.data().toVariant());
+
+ object = 0;
+ type = 0;
+ QmlEnginePrivate *ep = QmlEnginePrivate::get(engine);
+
+ if (bridge.ns) {
+ QmlType *type = 0;
+ ep->resolveTypeInNamespace(bridge.ns, name.toString().toUtf8(),
+ &type, 0, 0, 0);
+ if (type) {
+ object = bridge.object;
+ this->type = type;
+ return HandlesReadAccess;
+ } else {
+ return 0;
+ }
+
+ } else {
+ Q_ASSERT(bridge.type);
+ QString strName = name.toString();
+ if (strName.at(0).isUpper()) {
+ // Must be an enum
+ // ### Optimize
+ const char *enumName = strName.toUtf8().constData();
+ const QMetaObject *metaObject = bridge.type->baseMetaObject();
+ for (int ii = metaObject->enumeratorCount() - 1; ii >= 0; --ii) {
+ QMetaEnum e = metaObject->enumerator(ii);
+ int value = e.keyToValue(enumName);
+ if (value != -1) {
+ enumValue = value;
+ return HandlesReadAccess;
+ }
+ }
+ return 0;
+ } else {
+ // Must be an attached property
+ this->object = qmlAttachedPropertiesObjectById(bridge.type->index(), bridge.object);
+ Q_ASSERT(this->object);
+ return ep->queryObject(strName, id, this->object);
+ }
+ }
+}
+
+QScriptValue QmlTypeNameScriptClass::property(const QScriptValue &,
+ const QScriptString &propName,
+ uint id)
+{
+ QmlEnginePrivate *ep = QmlEnginePrivate::get(engine);
+ if (type) {
+ QmlTypeNameBridge tnb = { object, type, 0 };
+ return ep->scriptEngine.newObject(ep->typeNameClass, ep->scriptEngine.newVariant(qVariantFromValue(tnb)));
+ } else if (object) {
+ return ep->propertyObject(propName, object, id);
+ } else {
+ return QScriptValue(enumValue);
+ }
}
/////////////////////////////////////////////////////////////
@@ -1231,14 +1359,8 @@ void QmlObjectScriptClass::setProperty(QScriptValue &object,
const QScriptValue &value)
{
Q_UNUSED(name);
-
- QObject *obj = object.data().toQObject();
-
- QmlMetaProperty prop;
- prop.restore(id, obj);
-
- QVariant v = QmlScriptClass::toVariant(engine, value);
- prop.write(v);
+ Q_UNUSED(object);
+ QmlEnginePrivate::get(engine)->setPropertyObject(value, id);
}
diff --git a/src/declarative/qml/qmlengine_p.h b/src/declarative/qml/qmlengine_p.h
index a33add3..f492ccb 100644
--- a/src/declarative/qml/qmlengine_p.h
+++ b/src/declarative/qml/qmlengine_p.h
@@ -82,6 +82,7 @@ class QmlExpression;
class QmlBasicScriptNodeCache;
class QmlContextScriptClass;
class QmlObjectScriptClass;
+class QmlTypeNameScriptClass;
class QmlValueTypeScriptClass;
class QScriptEngineDebugger;
class QNetworkReply;
@@ -97,10 +98,17 @@ public:
void init();
+ QScriptClass::QueryFlags queryContext(const QString &name, uint *id,
+ QmlContext *);
+ QScriptValue propertyContext(const QScriptString &propName, QmlContext *,
+ uint id);
+ void setPropertyContext(const QScriptValue &, uint id);
QScriptClass::QueryFlags queryObject(const QString &name, uint *id,
QObject *);
QScriptValue propertyObject(const QScriptString &propName, QObject *,
uint id = 0);
+ void setPropertyObject(const QScriptValue &, uint id);
+
struct CapturedProperty {
CapturedProperty(QObject *o, int c, int n)
@@ -120,9 +128,30 @@ public:
QScriptEngineDebugger *debugger;
#endif
+ struct ImportedNamespace;
+ struct ResolveData {
+ ResolveData() : safetyCheckId(0) {}
+ int safetyCheckId;
+
+ void clear() {
+ object = 0; context = 0;
+ type = 0; ns = 0;
+ contextIndex = -1; isFunction = false;
+ }
+ QObject *object;
+ QmlContext *context;
+
+ QmlType *type;
+ QmlEnginePrivate::ImportedNamespace *ns;
+
+ int contextIndex;
+ bool isFunction;
+ QmlMetaProperty property;
+ } resolveData;
QmlContextScriptClass *contextClass;
QmlObjectScriptClass *objectClass;
QmlValueTypeScriptClass *valueTypeClass;
+ QmlTypeNameScriptClass *typeNameClass;
// Used by DOM Core 3 API
QScriptClass *nodeListClass;
QScriptClass *namedNodeMapClass;
@@ -178,6 +207,9 @@ public:
}
QmlValueTypeFactory valueTypes;
+ // ### Fixme
+ typedef QHash<QPair<const QMetaObject *, QString>, bool> FunctionCache;
+ FunctionCache functionCache;
QHash<const QMetaObject *, QmlMetaObjectCache> propertyCache;
static QmlMetaObjectCache *cache(QmlEnginePrivate *priv, QObject *obj) {
if (!priv || !obj || QObjectPrivate::get(obj)->metaObject) return 0;
@@ -198,7 +230,6 @@ public:
QmlImportsPrivate *d;
};
- struct ImportedNamespace;
bool addToImport(Imports*, const QString& uri, const QString& prefix, int vmaj, int vmin, QmlScriptParser::Import::Type importType) const;
bool resolveType(const Imports&, const QByteArray& type,
QmlType** type_return, QUrl* url_return,
@@ -292,6 +323,25 @@ public:
const QScriptValue &value);
};
+class QmlTypeNameScriptClass : public QmlScriptClass
+{
+public:
+ QmlTypeNameScriptClass(QmlEngine *);
+ ~QmlTypeNameScriptClass();
+
+ virtual QueryFlags queryProperty(const QScriptValue &object,
+ const QScriptString &name,
+ QueryFlags flags, uint *id);
+ virtual QScriptValue property(const QScriptValue &object,
+ const QScriptString &name,
+ uint id);
+
+private:
+ QObject *object;
+ QmlType *type;
+ quint32 enumValue;
+};
+
class QmlValueTypeScriptClass : public QmlScriptClass
{
public:
diff --git a/src/declarative/qml/qmlinstruction_p.h b/src/declarative/qml/qmlinstruction_p.h
index ede06a2..3c6af1b 100644
--- a/src/declarative/qml/qmlinstruction_p.h
+++ b/src/declarative/qml/qmlinstruction_p.h
@@ -284,6 +284,7 @@ public:
} assignSignalObject;
struct {
int count;
+ ushort column;
int endLine;
int metaObject;
} createComponent;
diff --git a/src/declarative/qml/qmlscriptparser.cpp b/src/declarative/qml/qmlscriptparser.cpp
index ca2d295..136b247 100644
--- a/src/declarative/qml/qmlscriptparser.cpp
+++ b/src/declarative/qml/qmlscriptparser.cpp
@@ -533,6 +533,15 @@ bool ProcessAST::visit(AST::UiPublicMember *node)
return false;
}
+ if (node->isReadonlyMember) {
+ QmlError error;
+ error.setDescription(QCoreApplication::translate("QmlParser","Readonly not yet supported"));
+ error.setLine(node->readonlyToken.startLine);
+ error.setColumn(node->readonlyToken.startColumn);
+ _parser->_errors << error;
+ return false;
+
+ }
Object::DynamicProperty property;
property.isDefaultProperty = node->isDefaultMember;
property.type = type;
diff --git a/src/declarative/qml/qmlvme.cpp b/src/declarative/qml/qmlvme.cpp
index 7907195..4d133e3 100644
--- a/src/declarative/qml/qmlvme.cpp
+++ b/src/declarative/qml/qmlvme.cpp
@@ -175,6 +175,7 @@ QObject *QmlVME::run(QStack<QObject *> &stack, QmlContext *ctxt, QmlCompiledData
}
QmlDeclarativeData *ddata = QmlDeclarativeData::get(o);
+ Q_ASSERT(ddata);
ddata->outerContext = ctxt;
ddata->lineNumber = instr.line;
ddata->columnNumber = instr.create.column;
@@ -221,6 +222,14 @@ QObject *QmlVME::run(QStack<QObject *> &stack, QmlContext *ctxt, QmlCompiledData
case QmlInstruction::CreateComponent:
{
QObject *qcomp = new QmlComponent(ctxt->engine(), comp, ii + 1, instr.createComponent.count, stack.isEmpty() ? 0 : stack.top());
+
+ QmlEngine::setContextForObject(qcomp, ctxt);
+ QmlDeclarativeData *ddata = QmlDeclarativeData::get(qcomp);
+ Q_ASSERT(ddata);
+ ddata->outerContext = ctxt;
+ ddata->lineNumber = instr.line;
+ ddata->columnNumber = instr.create.column;
+
stack.push(qcomp);
ii += instr.createComponent.count;
}
diff --git a/src/declarative/util/qmlanimation.h b/src/declarative/util/qmlanimation.h
index a898be8..7104f60 100644
--- a/src/declarative/util/qmlanimation.h
+++ b/src/declarative/util/qmlanimation.h
@@ -58,7 +58,7 @@ QT_MODULE(Declarative)
class QmlAbstractAnimationPrivate;
class QmlAnimationGroup;
-class QmlAbstractAnimation : public QObject, public QmlPropertyValueSource, public QmlParserStatus
+class Q_AUTOTEST_EXPORT QmlAbstractAnimation : public QObject, public QmlPropertyValueSource, public QmlParserStatus
{
Q_OBJECT
Q_DECLARE_PRIVATE(QmlAbstractAnimation)
@@ -68,8 +68,6 @@ class QmlAbstractAnimation : public QObject, public QmlPropertyValueSource, publ
Q_PROPERTY(bool paused READ isPaused WRITE setPaused NOTIFY pausedChanged)
Q_PROPERTY(bool alwaysRunToEnd READ alwaysRunToEnd WRITE setAlwaysRunToEnd NOTIFY alwaysRunToEndChanged())
Q_PROPERTY(bool repeat READ repeat WRITE setRepeat NOTIFY repeatChanged)
- //Q_PROPERTY(QObject *target READ target WRITE setTarget NOTIFY targetChanged)
- //Q_PROPERTY(QString property READ property WRITE setProperty NOTIFY targetChanged)
Q_CLASSINFO("DefaultMethod", "start()")
Q_INTERFACES(QmlParserStatus)
@@ -252,7 +250,7 @@ protected:
};
class QmlPropertyAnimationPrivate;
-class QmlPropertyAnimation : public QmlAbstractAnimation
+class Q_AUTOTEST_EXPORT QmlPropertyAnimation : public QmlAbstractAnimation
{
Q_OBJECT
Q_DECLARE_PRIVATE(QmlPropertyAnimation)
@@ -304,7 +302,7 @@ Q_SIGNALS:
void propertiesChanged(const QString &);
};
-class QmlColorAnimation : public QmlPropertyAnimation
+class Q_AUTOTEST_EXPORT QmlColorAnimation : public QmlPropertyAnimation
{
Q_OBJECT
Q_DECLARE_PRIVATE(QmlPropertyAnimation)
@@ -322,7 +320,7 @@ public:
void setTo(const QColor &);
};
-class QmlNumberAnimation : public QmlPropertyAnimation
+class Q_AUTOTEST_EXPORT QmlNumberAnimation : public QmlPropertyAnimation
{
Q_OBJECT
Q_DECLARE_PRIVATE(QmlPropertyAnimation)
diff --git a/src/declarative/util/qmlstate.cpp b/src/declarative/util/qmlstate.cpp
index 508ef43..da7d429 100644
--- a/src/declarative/util/qmlstate.cpp
+++ b/src/declarative/util/qmlstate.cpp
@@ -359,6 +359,9 @@ void QmlState::apply(QmlStateGroup *group, QmlTransition *trans, QmlState *rever
}
}
}
+ if (!found)
+ action.event->saveForwardBindings();
+ //### do we ever need to do saveForwardBindings when found == true?
} else {
action.fromBinding = action.property.binding();
diff --git a/src/declarative/util/qmlstate.h b/src/declarative/util/qmlstate.h
index 0b48449..255051f 100644
--- a/src/declarative/util/qmlstate.h
+++ b/src/declarative/util/qmlstate.h
@@ -95,6 +95,7 @@ public:
virtual QList<Action> extraActions();
virtual bool changesBindings();
+ virtual void saveForwardBindings() {}
virtual void clearForwardBindings();
virtual void clearReverseBindings();
virtual bool override(ActionEvent*other);
diff --git a/src/declarative/util/qmlstateoperations.cpp b/src/declarative/util/qmlstateoperations.cpp
index 858a527..50f80f6 100644
--- a/src/declarative/util/qmlstateoperations.cpp
+++ b/src/declarative/util/qmlstateoperations.cpp
@@ -305,12 +305,19 @@ public:
QStringList resetList;
QFxAnchorLine left;
QFxAnchorLine right;
+ QFxAnchorLine horizontalCenter;
QFxAnchorLine top;
QFxAnchorLine bottom;
+ QFxAnchorLine verticalCenter;
+ QFxAnchorLine baseline;
+
QFxAnchorLine origLeft;
QFxAnchorLine origRight;
+ QFxAnchorLine origHCenter;
QFxAnchorLine origTop;
QFxAnchorLine origBottom;
+ QFxAnchorLine origVCenter;
+ QFxAnchorLine origBaseline;
qreal origX;
qreal origY;
qreal origWidth;
@@ -364,11 +371,15 @@ void QmlAnchorChanges::setReset(const QString &reset)
}
/*!
- \qmlproperty AnchorLine AnchorChanges::top
- \qmlproperty AnchorLine AnchorChanges::bottom
\qmlproperty AnchorLine AnchorChanges::left
\qmlproperty AnchorLine AnchorChanges::right
- These properties change the \e left, \e top, \e right and \e bottom anchors of the item
+ \qmlproperty AnchorLine AnchorChanges::horizontalCenter
+ \qmlproperty AnchorLine AnchorChanges::top
+ \qmlproperty AnchorLine AnchorChanges::bottom
+ \qmlproperty AnchorLine AnchorChanges::verticalCenter
+ \qmlproperty AnchorLine AnchorChanges::baseline
+
+ These properties change the respective anchors of the item.
*/
QFxAnchorLine QmlAnchorChanges::left() const
@@ -395,6 +406,18 @@ void QmlAnchorChanges::setRight(const QFxAnchorLine &edge)
d->right = edge;
}
+QFxAnchorLine QmlAnchorChanges::horizontalCenter() const
+{
+ Q_D(const QmlAnchorChanges);
+ return d->horizontalCenter;
+}
+
+void QmlAnchorChanges::setHorizontalCenter(const QFxAnchorLine &edge)
+{
+ Q_D(QmlAnchorChanges);
+ d->horizontalCenter = edge;
+}
+
QFxAnchorLine QmlAnchorChanges::top() const
{
Q_D(const QmlAnchorChanges);
@@ -419,6 +442,30 @@ void QmlAnchorChanges::setBottom(const QFxAnchorLine &edge)
d->bottom = edge;
}
+QFxAnchorLine QmlAnchorChanges::verticalCenter() const
+{
+ Q_D(const QmlAnchorChanges);
+ return d->verticalCenter;
+}
+
+void QmlAnchorChanges::setVerticalCenter(const QFxAnchorLine &edge)
+{
+ Q_D(QmlAnchorChanges);
+ d->verticalCenter = edge;
+}
+
+QFxAnchorLine QmlAnchorChanges::baseline() const
+{
+ Q_D(const QmlAnchorChanges);
+ return d->baseline;
+}
+
+void QmlAnchorChanges::setBaseline(const QFxAnchorLine &edge)
+{
+ Q_D(QmlAnchorChanges);
+ d->baseline = edge;
+}
+
void QmlAnchorChanges::execute()
{
Q_D(QmlAnchorChanges);
@@ -430,10 +477,16 @@ void QmlAnchorChanges::execute()
d->target->anchors()->setLeft(d->left);
if (d->right.anchorLine != QFxAnchorLine::Invalid)
d->target->anchors()->setRight(d->right);
+ if (d->horizontalCenter.anchorLine != QFxAnchorLine::Invalid)
+ d->target->anchors()->setHorizontalCenter(d->horizontalCenter);
if (d->top.anchorLine != QFxAnchorLine::Invalid)
d->target->anchors()->setTop(d->top);
if (d->bottom.anchorLine != QFxAnchorLine::Invalid)
d->target->anchors()->setBottom(d->bottom);
+ if (d->verticalCenter.anchorLine != QFxAnchorLine::Invalid)
+ d->target->anchors()->setVerticalCenter(d->verticalCenter);
+ if (d->baseline.anchorLine != QFxAnchorLine::Invalid)
+ d->target->anchors()->setBaseline(d->baseline);
}
bool QmlAnchorChanges::isReversable()
@@ -452,10 +505,16 @@ void QmlAnchorChanges::reverse()
d->target->anchors()->setLeft(d->origLeft);
if (d->origRight.anchorLine != QFxAnchorLine::Invalid)
d->target->anchors()->setRight(d->origRight);
+ if (d->origHCenter.anchorLine != QFxAnchorLine::Invalid)
+ d->target->anchors()->setHorizontalCenter(d->origHCenter);
if (d->origTop.anchorLine != QFxAnchorLine::Invalid)
d->target->anchors()->setTop(d->origTop);
if (d->origBottom.anchorLine != QFxAnchorLine::Invalid)
d->target->anchors()->setBottom(d->origBottom);
+ if (d->origVCenter.anchorLine != QFxAnchorLine::Invalid)
+ d->target->anchors()->setVerticalCenter(d->origVCenter);
+ if (d->origBaseline.anchorLine != QFxAnchorLine::Invalid)
+ d->target->anchors()->setBaseline(d->origBaseline);
}
QString QmlAnchorChanges::typeName() const
@@ -498,13 +557,21 @@ bool QmlAnchorChanges::changesBindings()
return true;
}
-void QmlAnchorChanges::clearForwardBindings()
+void QmlAnchorChanges::saveForwardBindings()
{
Q_D(QmlAnchorChanges);
d->origLeft = d->target->anchors()->left();
d->origRight = d->target->anchors()->right();
+ d->origHCenter = d->target->anchors()->horizontalCenter();
d->origTop = d->target->anchors()->top();
d->origBottom = d->target->anchors()->bottom();
+ d->origVCenter = d->target->anchors()->verticalCenter();
+ d->origBaseline = d->target->anchors()->baseline();
+}
+
+void QmlAnchorChanges::clearForwardBindings()
+{
+ Q_D(QmlAnchorChanges);
d->origX = d->target->x();
d->origY = d->target->y();
d->origWidth = d->target->width();
@@ -515,20 +582,32 @@ void QmlAnchorChanges::clearForwardBindings()
d->target->anchors()->resetLeft();
if (d->resetList.contains(QLatin1String("right")))
d->target->anchors()->resetRight();
+ if (d->resetList.contains(QLatin1String("horizontalCenter")))
+ d->target->anchors()->resetHorizontalCenter();
if (d->resetList.contains(QLatin1String("top")))
d->target->anchors()->resetTop();
if (d->resetList.contains(QLatin1String("bottom")))
d->target->anchors()->resetBottom();
+ if (d->resetList.contains(QLatin1String("verticalCenter")))
+ d->target->anchors()->resetVerticalCenter();
+ if (d->resetList.contains(QLatin1String("baseline")))
+ d->target->anchors()->resetBaseline();
//reset any anchors that we'll be setting in the state
if (d->left.anchorLine != QFxAnchorLine::Invalid)
d->target->anchors()->resetLeft();
if (d->right.anchorLine != QFxAnchorLine::Invalid)
d->target->anchors()->resetRight();
+ if (d->horizontalCenter.anchorLine != QFxAnchorLine::Invalid)
+ d->target->anchors()->resetHorizontalCenter();
if (d->top.anchorLine != QFxAnchorLine::Invalid)
d->target->anchors()->resetTop();
if (d->bottom.anchorLine != QFxAnchorLine::Invalid)
d->target->anchors()->resetBottom();
+ if (d->verticalCenter.anchorLine != QFxAnchorLine::Invalid)
+ d->target->anchors()->resetVerticalCenter();
+ if (d->baseline.anchorLine != QFxAnchorLine::Invalid)
+ d->target->anchors()->resetBaseline();
}
void QmlAnchorChanges::clearReverseBindings()
@@ -544,20 +623,32 @@ void QmlAnchorChanges::clearReverseBindings()
d->target->anchors()->resetLeft();
if (d->right.anchorLine != QFxAnchorLine::Invalid)
d->target->anchors()->resetRight();
+ if (d->horizontalCenter.anchorLine != QFxAnchorLine::Invalid)
+ d->target->anchors()->resetHorizontalCenter();
if (d->top.anchorLine != QFxAnchorLine::Invalid)
d->target->anchors()->resetTop();
if (d->bottom.anchorLine != QFxAnchorLine::Invalid)
d->target->anchors()->resetBottom();
+ if (d->verticalCenter.anchorLine != QFxAnchorLine::Invalid)
+ d->target->anchors()->resetVerticalCenter();
+ if (d->baseline.anchorLine != QFxAnchorLine::Invalid)
+ d->target->anchors()->resetBaseline();
//reset any anchors that were set in the original state
if (d->origLeft.anchorLine != QFxAnchorLine::Invalid)
d->target->anchors()->resetLeft();
if (d->origRight.anchorLine != QFxAnchorLine::Invalid)
d->target->anchors()->resetRight();
+ if (d->origHCenter.anchorLine != QFxAnchorLine::Invalid)
+ d->target->anchors()->resetHorizontalCenter();
if (d->origTop.anchorLine != QFxAnchorLine::Invalid)
d->target->anchors()->resetTop();
if (d->origBottom.anchorLine != QFxAnchorLine::Invalid)
d->target->anchors()->resetBottom();
+ if (d->origVCenter.anchorLine != QFxAnchorLine::Invalid)
+ d->target->anchors()->resetVerticalCenter();
+ if (d->origBaseline.anchorLine != QFxAnchorLine::Invalid)
+ d->target->anchors()->resetBaseline();
}
bool QmlAnchorChanges::override(ActionEvent*other)
diff --git a/src/declarative/util/qmlstateoperations.h b/src/declarative/util/qmlstateoperations.h
index afe0bd5..a3943e7 100644
--- a/src/declarative/util/qmlstateoperations.h
+++ b/src/declarative/util/qmlstateoperations.h
@@ -113,8 +113,11 @@ class Q_DECLARATIVE_EXPORT QmlAnchorChanges : public QmlStateOperation, public A
Q_PROPERTY(QString reset READ reset WRITE setReset)
Q_PROPERTY(QFxAnchorLine left READ left WRITE setLeft)
Q_PROPERTY(QFxAnchorLine right READ right WRITE setRight)
+ Q_PROPERTY(QFxAnchorLine horizontalCenter READ horizontalCenter WRITE setHorizontalCenter)
Q_PROPERTY(QFxAnchorLine top READ top WRITE setTop)
Q_PROPERTY(QFxAnchorLine bottom READ bottom WRITE setBottom)
+ Q_PROPERTY(QFxAnchorLine verticalCenter READ verticalCenter WRITE setVerticalCenter)
+ Q_PROPERTY(QFxAnchorLine baseline READ baseline WRITE setBaseline)
public:
QmlAnchorChanges(QObject *parent=0);
@@ -134,12 +137,21 @@ public:
QFxAnchorLine right() const;
void setRight(const QFxAnchorLine &edge);
+ QFxAnchorLine horizontalCenter() const;
+ void setHorizontalCenter(const QFxAnchorLine &edge);
+
QFxAnchorLine top() const;
void setTop(const QFxAnchorLine &edge);
QFxAnchorLine bottom() const;
void setBottom(const QFxAnchorLine &edge);
+ QFxAnchorLine verticalCenter() const;
+ void setVerticalCenter(const QFxAnchorLine &edge);
+
+ QFxAnchorLine baseline() const;
+ void setBaseline(const QFxAnchorLine &edge);
+
virtual void execute();
virtual bool isReversable();
virtual void reverse();
@@ -147,6 +159,7 @@ public:
virtual bool override(ActionEvent*other);
virtual QList<Action> extraActions();
virtual bool changesBindings();
+ virtual void saveForwardBindings();
virtual void clearForwardBindings();
virtual void clearReverseBindings();
};