diff options
author | Michael Brasser <michael.brasser@nokia.com> | 2009-07-27 03:50:22 (GMT) |
---|---|---|
committer | Michael Brasser <michael.brasser@nokia.com> | 2009-07-27 03:50:22 (GMT) |
commit | adc7ac560f6e52167d27ed5d3a3c92e95fb69691 (patch) | |
tree | e53f699b2866d30b4b58911ad74c3c732c728ae1 /src/declarative | |
parent | 307fad7e813770c8f2a6236828b26cd14ddc57aa (diff) | |
parent | ef1a5d6bad05b99765658b3ca916bd3c5f507db0 (diff) | |
download | Qt-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.pri | 1 | ||||
-rw-r--r-- | src/declarative/qml/parser/qmljs.g | 52 | ||||
-rw-r--r-- | src/declarative/qml/parser/qmljsast.cpp | 25 | ||||
-rw-r--r-- | src/declarative/qml/parser/qmljsast_p.h | 88 | ||||
-rw-r--r-- | src/declarative/qml/parser/qmljsastfwd_p.h | 3 | ||||
-rw-r--r-- | src/declarative/qml/parser/qmljsastvisitor_p.h | 6 | ||||
-rw-r--r-- | src/declarative/qml/parser/qmljsparser.cpp | 40 | ||||
-rw-r--r-- | src/declarative/qml/parser/qmljsparser_p.h | 3 | ||||
-rw-r--r-- | src/declarative/qml/qml.pri | 2 | ||||
-rw-r--r-- | src/declarative/qml/qmlcomponentjs.cpp | 3 | ||||
-rw-r--r-- | src/declarative/qml/qmlcomponentjs_p.h | 47 | ||||
-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.cpp | 2 | ||||
-rw-r--r-- | src/declarative/qml/qmlmetatype.cpp | 2 | ||||
-rw-r--r-- | src/declarative/qml/rewriter/rewriter.pri | 2 |
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 |