summaryrefslogtreecommitdiffstats
path: root/src/declarative
diff options
context:
space:
mode:
authorMichael Brasser <michael.brasser@nokia.com>2009-07-27 03:50:22 (GMT)
committerMichael Brasser <michael.brasser@nokia.com>2009-07-27 03:50:22 (GMT)
commitadc7ac560f6e52167d27ed5d3a3c92e95fb69691 (patch)
treee53f699b2866d30b4b58911ad74c3c732c728ae1 /src/declarative
parent307fad7e813770c8f2a6236828b26cd14ddc57aa (diff)
parentef1a5d6bad05b99765658b3ca916bd3c5f507db0 (diff)
downloadQt-adc7ac560f6e52167d27ed5d3a3c92e95fb69691.zip
Qt-adc7ac560f6e52167d27ed5d3a3c92e95fb69691.tar.gz
Qt-adc7ac560f6e52167d27ed5d3a3c92e95fb69691.tar.bz2
Merge branch 'kinetic-declarativeui' of git@scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
Diffstat (limited to 'src/declarative')
-rw-r--r--src/declarative/qml/parser/parser.pri1
-rw-r--r--src/declarative/qml/parser/qmljs.g52
-rw-r--r--src/declarative/qml/parser/qmljsast.cpp25
-rw-r--r--src/declarative/qml/parser/qmljsast_p.h88
-rw-r--r--src/declarative/qml/parser/qmljsastfwd_p.h3
-rw-r--r--src/declarative/qml/parser/qmljsastvisitor_p.h6
-rw-r--r--src/declarative/qml/parser/qmljsparser.cpp40
-rw-r--r--src/declarative/qml/parser/qmljsparser_p.h3
-rw-r--r--src/declarative/qml/qml.pri2
-rw-r--r--src/declarative/qml/qmlcomponentjs.cpp3
-rw-r--r--src/declarative/qml/qmlcomponentjs_p.h47
-rw-r--r--src/declarative/qml/qmlcomponentjs_p_p.h (renamed from src/declarative/qml/qmlcomponentjs.h)61
-rw-r--r--src/declarative/qml/qmlengine.cpp2
-rw-r--r--src/declarative/qml/qmlmetatype.cpp2
-rw-r--r--src/declarative/qml/rewriter/rewriter.pri2
15 files changed, 281 insertions, 56 deletions
diff --git a/src/declarative/qml/parser/parser.pri b/src/declarative/qml/parser/parser.pri
index 610b2aa..1ea249a 100644
--- a/src/declarative/qml/parser/parser.pri
+++ b/src/declarative/qml/parser/parser.pri
@@ -1,5 +1,6 @@
INCLUDEPATH += $$PWD
+DEPENDPATH += $$PWD
HEADERS += $$PWD/qmljsast_p.h \
$$PWD/qmljsastfwd_p.h \
diff --git a/src/declarative/qml/parser/qmljs.g b/src/declarative/qml/parser/qmljs.g
index ccfe7fd..a1c4ba2 100644
--- a/src/declarative/qml/parser/qmljs.g
+++ b/src/declarative/qml/parser/qmljs.g
@@ -271,6 +271,9 @@ public:
AST::UiObjectMemberList *UiObjectMemberList;
AST::UiArrayMemberList *UiArrayMemberList;
AST::UiQualifiedId *UiQualifiedId;
+ AST::UiSignature *UiSignature;
+ AST::UiFormalList *UiFormalList;
+ AST::UiFormal *UiFormal;
};
public:
@@ -880,13 +883,62 @@ case $rule_number: {
./
UiFormal: JsIdentifier ;
+/.
+case $rule_number: {
+ AST::UiFormal *node = makeAstNode<AST::UiFormal>(driver->nodePool(), sym(1).sval);
+ node->identifierToken = loc(1);
+ sym(1).UiFormal = node;
+} break;
+./
+
UiFormal: JsIdentifier T_AS JsIdentifier ;
+/.
+case $rule_number: {
+ AST::UiFormal *node = makeAstNode<AST::UiFormal>(driver->nodePool(),
+ sym(1).sval, sym(3).sval);
+ node->identifierToken = loc(1);
+ node->asToken = loc(2);
+ node->aliasToken = loc(3);
+ sym(1).UiFormal = node;
+} break;
+./
UiFormalList: UiFormal ;
+/.
+case $rule_number: {
+ sym(1).UiFormalList = makeAstNode<AST::UiFormalList>(driver->nodePool(),
+ sym(1).UiFormal);
+} break;
+./
+
UiFormalList: UiFormalList T_COMMA UiFormal ;
+/.
+case $rule_number: {
+ sym(1).UiFormalList = makeAstNode<AST::UiFormalList>(driver->nodePool(),
+ sym(1).UiFormalList, sym(3).UiFormal);
+} break;
+./
UiSignature: T_LPAREN T_RPAREN ;
+/.
+case $rule_number: {
+ AST::UiSignature *node = makeAstNode<AST::UiSignature>(driver->nodePool());
+ node->lparenToken = loc(1);
+ node->rparenToken = loc(3);
+ sym(1).UiSignature = node;
+} break;
+./
+
UiSignature: T_LPAREN UiFormalList T_RPAREN ;
+/.
+case $rule_number: {
+ AST::UiSignature *node = makeAstNode<AST::UiSignature>(driver->nodePool(),
+ sym(2).UiFormalList->finish());
+ node->lparenToken = loc(1);
+ node->rparenToken = loc(3);
+ sym(1).UiSignature = node;
+} break;
+./
UiObjectMember: T_SIGNAL T_IDENTIFIER T_LPAREN UiParameterListOpt T_RPAREN T_AUTOMATIC_SEMICOLON ;
UiObjectMember: T_SIGNAL T_IDENTIFIER T_LPAREN UiParameterListOpt T_RPAREN T_SEMICOLON ;
diff --git a/src/declarative/qml/parser/qmljsast.cpp b/src/declarative/qml/parser/qmljsast.cpp
index 52f19e2..1d7f09e 100644
--- a/src/declarative/qml/parser/qmljsast.cpp
+++ b/src/declarative/qml/parser/qmljsast.cpp
@@ -801,6 +801,31 @@ void UiProgram::accept0(Visitor *visitor)
visitor->endVisit(this);
}
+void UiSignature::accept0(Visitor *visitor)
+{
+ if (visitor->visit(this)) {
+ acceptChild(formals, visitor);
+ }
+ visitor->endVisit(this);
+}
+
+void UiFormalList::accept0(Visitor *visitor)
+{
+ if (visitor->visit(this)) {
+ for (UiFormalList *it = this; it; it = it->next) {
+ acceptChild(it->formal, visitor);
+ }
+ }
+ visitor->endVisit(this);
+}
+
+void UiFormal::accept0(Visitor *visitor)
+{
+ if (visitor->visit(this)) {
+ }
+ visitor->endVisit(this);
+}
+
void UiPublicMember::accept0(Visitor *visitor)
{
if (visitor->visit(this)) {
diff --git a/src/declarative/qml/parser/qmljsast_p.h b/src/declarative/qml/parser/qmljsast_p.h
index eba9202..9745153 100644
--- a/src/declarative/qml/parser/qmljsast_p.h
+++ b/src/declarative/qml/parser/qmljsast_p.h
@@ -213,7 +213,10 @@ public:
Kind_UiPublicMember,
Kind_UiQualifiedId,
Kind_UiScriptBinding,
- Kind_UiSourceElement
+ Kind_UiSourceElement,
+ Kind_UiFormal,
+ Kind_UiFormalList,
+ Kind_UiSignature
};
inline Node()
@@ -269,6 +272,89 @@ public:
virtual SourceLocation lastSourceLocation() const = 0;
};
+class UiFormal: public Node
+{
+public:
+ QMLJS_DECLARE_AST_NODE(UiFormal)
+
+ UiFormal(NameId *name, NameId *alias = 0)
+ : name(name), alias(alias)
+ { }
+
+ virtual SourceLocation firstSourceLocation() const
+ { return SourceLocation(); }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return SourceLocation(); }
+
+ virtual void accept0(Visitor *visitor);
+
+// attributes
+ NameId *name;
+ NameId *alias;
+ SourceLocation identifierToken;
+ SourceLocation asToken;
+ SourceLocation aliasToken;
+};
+
+class UiFormalList: public Node
+{
+public:
+ QMLJS_DECLARE_AST_NODE(UiFormalList)
+
+ UiFormalList(UiFormal *formal)
+ : formal(formal), next(this) {}
+
+ UiFormalList(UiFormalList *previous, UiFormal *formal)
+ : formal(formal)
+ {
+ next = previous->next;
+ previous->next = this;
+ }
+
+ UiFormalList *finish()
+ {
+ UiFormalList *head = next;
+ next = 0;
+ return head;
+ }
+
+ virtual SourceLocation firstSourceLocation() const
+ { return SourceLocation(); }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return SourceLocation(); }
+
+ virtual void accept0(Visitor *visitor);
+
+// attributes
+ UiFormal *formal;
+ UiFormalList *next;
+};
+
+class UiSignature: public Node
+{
+public:
+ QMLJS_DECLARE_AST_NODE(UiSignature)
+
+ UiSignature(UiFormalList *formals = 0)
+ : formals(formals)
+ { }
+
+ virtual SourceLocation firstSourceLocation() const
+ { return SourceLocation(); }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return SourceLocation(); }
+
+ virtual void accept0(Visitor *visitor);
+
+// attributes
+ SourceLocation lparenToken;
+ UiFormalList *formals;
+ SourceLocation rparenToken;
+};
+
class NestedExpression: public ExpressionNode
{
public:
diff --git a/src/declarative/qml/parser/qmljsastfwd_p.h b/src/declarative/qml/parser/qmljsastfwd_p.h
index 339bea4..f79cfc2 100644
--- a/src/declarative/qml/parser/qmljsastfwd_p.h
+++ b/src/declarative/qml/parser/qmljsastfwd_p.h
@@ -176,6 +176,9 @@ class UiObjectMember;
class UiObjectMemberList;
class UiArrayMemberList;
class UiQualifiedId;
+class UiFormalList;
+class UiFormal;
+class UiSignature;
} } // namespace AST
diff --git a/src/declarative/qml/parser/qmljsastvisitor_p.h b/src/declarative/qml/parser/qmljsastvisitor_p.h
index 3677b1a..237640f 100644
--- a/src/declarative/qml/parser/qmljsastvisitor_p.h
+++ b/src/declarative/qml/parser/qmljsastvisitor_p.h
@@ -82,6 +82,9 @@ public:
virtual bool visit(UiObjectMemberList *) { return true; }
virtual bool visit(UiArrayMemberList *) { return true; }
virtual bool visit(UiQualifiedId *) { return true; }
+ virtual bool visit(UiSignature *) { return true; }
+ virtual bool visit(UiFormalList *) { return true; }
+ virtual bool visit(UiFormal *) { return true; }
virtual void endVisit(UiProgram *) {}
virtual void endVisit(UiImportList *) {}
@@ -96,6 +99,9 @@ public:
virtual void endVisit(UiObjectMemberList *) {}
virtual void endVisit(UiArrayMemberList *) {}
virtual void endVisit(UiQualifiedId *) {}
+ virtual void endVisit(UiSignature *) {}
+ virtual void endVisit(UiFormalList *) {}
+ virtual void endVisit(UiFormal *) {}
// QmlJS
virtual bool visit(ThisExpression *) { return true; }
diff --git a/src/declarative/qml/parser/qmljsparser.cpp b/src/declarative/qml/parser/qmljsparser.cpp
index 22f3820..9bd6e6f 100644
--- a/src/declarative/qml/parser/qmljsparser.cpp
+++ b/src/declarative/qml/parser/qmljsparser.cpp
@@ -419,6 +419,46 @@ case 47: {
sym(1).Node = node;
} break;
+case 48: {
+ AST::UiFormal *node = makeAstNode<AST::UiFormal>(driver->nodePool(), sym(1).sval);
+ node->identifierToken = loc(1);
+ sym(1).UiFormal = node;
+} break;
+
+case 49: {
+ AST::UiFormal *node = makeAstNode<AST::UiFormal>(driver->nodePool(),
+ sym(1).sval, sym(3).sval);
+ node->identifierToken = loc(1);
+ node->asToken = loc(2);
+ node->aliasToken = loc(3);
+ sym(1).UiFormal = node;
+} break;
+
+case 50: {
+ sym(1).UiFormalList = makeAstNode<AST::UiFormalList>(driver->nodePool(),
+ sym(1).UiFormal);
+} break;
+
+case 51: {
+ sym(1).UiFormalList = makeAstNode<AST::UiFormalList>(driver->nodePool(),
+ sym(1).UiFormalList, sym(3).UiFormal);
+} break;
+
+case 52: {
+ AST::UiSignature *node = makeAstNode<AST::UiSignature>(driver->nodePool());
+ node->lparenToken = loc(1);
+ node->rparenToken = loc(3);
+ sym(1).UiSignature = node;
+} break;
+
+case 53: {
+ AST::UiSignature *node = makeAstNode<AST::UiSignature>(driver->nodePool(),
+ sym(2).UiFormalList->finish());
+ node->lparenToken = loc(1);
+ node->rparenToken = loc(3);
+ sym(1).UiSignature = node;
+} break;
+
case 55: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), (NameId *)0, sym(2).sval);
node->type = AST::UiPublicMember::Signal;
diff --git a/src/declarative/qml/parser/qmljsparser_p.h b/src/declarative/qml/parser/qmljsparser_p.h
index be5317b..e352f43 100644
--- a/src/declarative/qml/parser/qmljsparser_p.h
+++ b/src/declarative/qml/parser/qmljsparser_p.h
@@ -120,6 +120,9 @@ public:
AST::UiObjectMemberList *UiObjectMemberList;
AST::UiArrayMemberList *UiArrayMemberList;
AST::UiQualifiedId *UiQualifiedId;
+ AST::UiSignature *UiSignature;
+ AST::UiFormalList *UiFormalList;
+ AST::UiFormal *UiFormal;
};
public:
diff --git a/src/declarative/qml/qml.pri b/src/declarative/qml/qml.pri
index 6ee670e..75e5692 100644
--- a/src/declarative/qml/qml.pri
+++ b/src/declarative/qml/qml.pri
@@ -38,8 +38,8 @@ HEADERS += qml/qmlparser_p.h \
qml/qmlbinding.h \
qml/qmlbinding_p.h \
qml/qmlmetaproperty.h \
- qml/qmlcomponentjs.h \
qml/qmlcomponentjs_p.h \
+ qml/qmlcomponentjs_p_p.h \
qml/qmlcomponent.h \
qml/qmlcomponent_p.h \
qml/qmlcustomparser_p.h \
diff --git a/src/declarative/qml/qmlcomponentjs.cpp b/src/declarative/qml/qmlcomponentjs.cpp
index 32c2249..89f3851 100644
--- a/src/declarative/qml/qmlcomponentjs.cpp
+++ b/src/declarative/qml/qmlcomponentjs.cpp
@@ -39,11 +39,12 @@
**
****************************************************************************/
-#include "qmlcomponentjs.h"
#include "qmlcomponentjs_p.h"
+#include "qmlcomponentjs_p_p.h"
#include "qmlcomponent.h"
QT_BEGIN_NAMESPACE
+
QmlComponentJS::QmlComponentJS(QmlEngine *engine, QObject *parent)
: QmlComponent(*(new QmlComponentJSPrivate), parent)
{
diff --git a/src/declarative/qml/qmlcomponentjs_p.h b/src/declarative/qml/qmlcomponentjs_p.h
index 75d5517..8c69b5f 100644
--- a/src/declarative/qml/qmlcomponentjs_p.h
+++ b/src/declarative/qml/qmlcomponentjs_p.h
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#ifndef QMLBINDABLECOMPONENT_P_H
-#define QMLBINDABLECOMPONENT_P_H
+#ifndef QMLCOMPONENTJS_P_H
+#define QMLCOMPONENTJS_P_H
//
// W A R N I N G
@@ -53,25 +53,46 @@
// We mean it.
//
-#include "qmlcomponent.h"
-#include "qmlcomponentjs.h"
-#include "qmlcomponent_p.h"
+#include <QtCore/qobject.h>
+#include <QtCore/qstring.h>
+#include <QtDeclarative/qfxglobal.h>
+#include <QtDeclarative/qml.h>
+#include <QtDeclarative/qmlcomponent.h>
+#include <QtDeclarative/qmlerror.h>
QT_BEGIN_NAMESPACE
+class QmlComponentJSPrivate;
+class QmlEngine;
class QmlContext;
-class QmlComponentJSPrivate : public QmlComponentPrivate
+class Q_DECLARATIVE_EXPORT QmlComponentJS : public QmlComponent
{
- Q_DECLARE_PUBLIC(QmlComponentJS)
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QmlComponentJS)
+ friend class QmlEngine;
public:
- QmlComponentJSPrivate() : QmlComponentPrivate(),
- prevStatus(QmlComponentJS::Null), ctxt(0)
- { }
+ QmlComponentJS(QmlEngine *, const QUrl &url, QObject *parent = 0);
+ QmlComponentJS(QmlEngine *, QObject *parent=0);
+ Q_PROPERTY(bool isNull READ isNull NOTIFY isNullChanged);
+ Q_PROPERTY(bool isReady READ isReady NOTIFY isReadyChanged);
+ Q_PROPERTY(bool isError READ isError NOTIFY isErrorChanged);
+ Q_PROPERTY(bool isLoading READ isLoading NOTIFY isLoadingChanged);
- QmlComponent::Status prevStatus;
- QmlContext* ctxt;
+ Q_INVOKABLE QScriptValue createObject();
+ Q_INVOKABLE QString errorsString() const;
+
+ void setContext(QmlContext* c);
+Q_SIGNALS:
+ void isNullChanged();
+ void isErrorChanged();
+ void isReadyChanged();
+ void isLoadingChanged();
+private slots:
+ void statusChange(QmlComponent::Status newStatus);
};
QT_END_NAMESPACE
-#endif
+QML_DECLARE_TYPE(QmlComponentJS)
+
+#endif // QMLCOMPONENTJS_P_H
diff --git a/src/declarative/qml/qmlcomponentjs.h b/src/declarative/qml/qmlcomponentjs_p_p.h
index 5ad1635..47ce491 100644
--- a/src/declarative/qml/qmlcomponentjs.h
+++ b/src/declarative/qml/qmlcomponentjs_p_p.h
@@ -39,54 +39,39 @@
**
****************************************************************************/
-#ifndef QMLBINDABLECOMPONENT_H
-#define QMLBINDABLECOMPONENT_H
+#ifndef QMLCOMPONENTJS_P_P_H
+#define QMLCOMPONENTJS_P_P_H
-#include <QtCore/qobject.h>
-#include <QtCore/qstring.h>
-#include <QtDeclarative/qfxglobal.h>
-#include <QtDeclarative/qml.h>
-#include <QtDeclarative/qmlcomponent.h>
-#include <QtDeclarative/qmlerror.h>
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
-QT_BEGIN_HEADER
+#include "qmlcomponent.h"
+#include "qmlcomponentjs_p.h"
+#include "qmlcomponent_p.h"
QT_BEGIN_NAMESPACE
-QT_MODULE(Declarative)
-
-class QmlComponentJSPrivate;
-class QmlEngine;
class QmlContext;
-class Q_DECLARATIVE_EXPORT QmlComponentJS : public QmlComponent
+class QmlComponentJSPrivate : public QmlComponentPrivate
{
- Q_OBJECT
- Q_DECLARE_PRIVATE(QmlComponentJS)
- friend class QmlEngine;
+ Q_DECLARE_PUBLIC(QmlComponentJS)
public:
- QmlComponentJS(QmlEngine *, const QUrl &url, QObject *parent = 0);
- QmlComponentJS(QmlEngine *, QObject *parent=0);
- Q_PROPERTY(bool isNull READ isNull NOTIFY isNullChanged);
- Q_PROPERTY(bool isReady READ isReady NOTIFY isReadyChanged);
- Q_PROPERTY(bool isError READ isError NOTIFY isErrorChanged);
- Q_PROPERTY(bool isLoading READ isLoading NOTIFY isLoadingChanged);
-
- Q_INVOKABLE QScriptValue createObject();
- Q_INVOKABLE QString errorsString() const;
+ QmlComponentJSPrivate() : QmlComponentPrivate(),
+ prevStatus(QmlComponentJS::Null), ctxt(0)
+ { }
- void setContext(QmlContext* c);
-Q_SIGNALS:
- void isNullChanged();
- void isErrorChanged();
- void isReadyChanged();
- void isLoadingChanged();
-private slots:
- void statusChange(QmlComponent::Status newStatus);
+ QmlComponent::Status prevStatus;
+ QmlContext* ctxt;
};
QT_END_NAMESPACE
-QML_DECLARE_TYPE(QmlComponentJS)
-
-QT_END_HEADER
-#endif
+#endif // QMLCOMPONENTJS_P_P_H
diff --git a/src/declarative/qml/qmlengine.cpp b/src/declarative/qml/qmlengine.cpp
index 69cc542..b478618 100644
--- a/src/declarative/qml/qmlengine.cpp
+++ b/src/declarative/qml/qmlengine.cpp
@@ -71,7 +71,7 @@
#include <QtCore/qcoreapplication.h>
#include <QtCore/qdir.h>
#include <qmlcomponent.h>
-#include <qmlcomponentjs.h>
+#include "private/qmlcomponentjs_p.h"
#include "private/qmlmetaproperty_p.h"
#include <private/qmlbinding_p.h>
#include <private/qmlvme_p.h>
diff --git a/src/declarative/qml/qmlmetatype.cpp b/src/declarative/qml/qmlmetatype.cpp
index 3552b44..a037702 100644
--- a/src/declarative/qml/qmlmetatype.cpp
+++ b/src/declarative/qml/qmlmetatype.cpp
@@ -56,7 +56,7 @@
#include <qstringlist.h>
#include <qvector.h>
#include <qlocale.h>
-//#include <ctypes.h>
+#include <ctype.h>
#include <QtCore/qcryptographichash.h>
#include <private/qmlcustomparser_p.h>
diff --git a/src/declarative/qml/rewriter/rewriter.pri b/src/declarative/qml/rewriter/rewriter.pri
index de3c298..550741b 100644
--- a/src/declarative/qml/rewriter/rewriter.pri
+++ b/src/declarative/qml/rewriter/rewriter.pri
@@ -1,5 +1,7 @@
INCLUDEPATH += $$PWD
+DEPENDPATH += $$PWD
+
HEADERS += $$PWD/textwriter_p.h
SOURCES += $$PWD/textwriter.cpp