From 0204346fb91eaf73893b651438980cb9ca5f1f51 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Thu, 30 Apr 2009 14:06:50 +1000 Subject: Make custom parsers internal. Custom parsers still have a way to go before they fully fit the QML 2.0 language. --- src/declarative/qml/qml.pri | 2 +- src/declarative/qml/qmlcompiler.cpp | 2 +- src/declarative/qml/qmlcustomparser.cpp | 3 +- src/declarative/qml/qmlcustomparser.h | 128 ------------------------------ src/declarative/qml/qmlcustomparser_p.h | 87 +++++++++++++++----- src/declarative/qml/qmlcustomparser_p_p.h | 79 ++++++++++++++++++ src/declarative/qml/qmlmetatype.cpp | 2 +- src/declarative/qml/qmlvme.cpp | 2 +- src/declarative/qml/qmlxmlparser.cpp | 2 +- src/declarative/util/qmllistmodel.cpp | 2 +- 10 files changed, 155 insertions(+), 154 deletions(-) delete mode 100644 src/declarative/qml/qmlcustomparser.h create mode 100644 src/declarative/qml/qmlcustomparser_p_p.h diff --git a/src/declarative/qml/qml.pri b/src/declarative/qml/qml.pri index 40b854f..9067039 100644 --- a/src/declarative/qml/qml.pri +++ b/src/declarative/qml/qml.pri @@ -32,8 +32,8 @@ HEADERS += qml/qmlparser_p.h \ qml/qmlmetaproperty.h \ qml/qmlcomponent.h \ qml/qmlcomponent_p.h \ - qml/qmlcustomparser.h \ qml/qmlcustomparser_p.h \ + qml/qmlcustomparser_p_p.h \ qml/qmlpropertyvaluesource.h \ qml/qmlboundsignal_p.h \ qml/qmlxmlparser_p.h \ diff --git a/src/declarative/qml/qmlcompiler.cpp b/src/declarative/qml/qmlcompiler.cpp index 4433286..c9bdfec 100644 --- a/src/declarative/qml/qmlcompiler.cpp +++ b/src/declarative/qml/qmlcompiler.cpp @@ -59,7 +59,7 @@ #include #include #include -#include "private/qmlcustomparser_p.h" +#include "private/qmlcustomparser_p_p.h" #include "qmlscriptparser_p.h" diff --git a/src/declarative/qml/qmlcustomparser.cpp b/src/declarative/qml/qmlcustomparser.cpp index fe0c3a8..544c469 100644 --- a/src/declarative/qml/qmlcustomparser.cpp +++ b/src/declarative/qml/qmlcustomparser.cpp @@ -39,8 +39,8 @@ ** ****************************************************************************/ -#include "qmlcustomparser.h" #include "qmlcustomparser_p.h" +#include "qmlcustomparser_p_p.h" #include "qmlparser_p.h" QT_BEGIN_NAMESPACE @@ -50,6 +50,7 @@ using namespace QmlParser; /*! \class QmlCustomParser \brief The QmlCustomParser class allows you to add new arbitrary types to QML. + \internal By subclassing QmlCustomParser, you can add an XML parser for building a particular type. diff --git a/src/declarative/qml/qmlcustomparser.h b/src/declarative/qml/qmlcustomparser.h deleted file mode 100644 index 0e6a619..0000000 --- a/src/declarative/qml/qmlcustomparser.h +++ /dev/null @@ -1,128 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** Contact: Qt Software Information (qt-info@nokia.com) -** -** This file is part of the QtDeclarative module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** 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. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** 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 -** 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 are unsure which license is appropriate for your use, please -** contact the sales department at qt-sales@nokia.com. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QMLCUSTOMPARSER_H -#define QMLCUSTOMPARSER_H - -#include -#include -#include -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -QT_MODULE(Declarative) - -class QmlCustomParserPropertyPrivate; -class Q_DECLARATIVE_EXPORT QmlCustomParserProperty -{ -public: - QmlCustomParserProperty(); - QmlCustomParserProperty(const QmlCustomParserProperty &); - QmlCustomParserProperty &operator=(const QmlCustomParserProperty &); - ~QmlCustomParserProperty(); - - QByteArray name() const; - - bool isList() const; - QList assignedValues() const; - -private: - friend class QmlCustomParserNodePrivate; - friend class QmlCustomParserPropertyPrivate; - QmlCustomParserPropertyPrivate *d; -}; -Q_DECLARE_METATYPE(QmlCustomParserProperty); - -class QmlCustomParserNodePrivate; -class Q_DECLARATIVE_EXPORT QmlCustomParserNode -{ -public: - QmlCustomParserNode(); - QmlCustomParserNode(const QmlCustomParserNode &); - QmlCustomParserNode &operator=(const QmlCustomParserNode &); - ~QmlCustomParserNode(); - - QByteArray name() const; - - QList properties() const; - -private: - friend class QmlCustomParserNodePrivate; - QmlCustomParserNodePrivate *d; -}; -Q_DECLARE_METATYPE(QmlCustomParserNode); - -class Q_DECLARATIVE_EXPORT QmlCustomParser -{ -public: - virtual ~QmlCustomParser() {} - - virtual QByteArray compile(QXmlStreamReader&, bool *ok)=0; - virtual QByteArray compile(const QList &, bool *ok); - virtual QVariant create(const QByteArray &)=0; - virtual void setCustomData(QObject *, const QByteArray &); - - struct Register { - Register(const char *name, QmlCustomParser *parser) { - qmlRegisterCustomParser(name, parser); - } - }; - template - struct Define { - static Register instance; - }; -}; -#define QML_DEFINE_CUSTOM_PARSER(name, parserClass) \ - template<> QmlCustomParser::Register QmlCustomParser::Define::instance(# name, new parserClass); -#define QML_DEFINE_CUSTOM_PARSER_NS(namespacestring, name, parserClass) \ - template<> QmlCustomParser::Register QmlCustomParser::Define::instance(namespacestring "/" # name, new parserClass); - -#define QML_DEFINE_CUSTOM_TYPE(TYPE, NAME, CUSTOMTYPE) \ - template<> QmlPrivate::InstanceType QmlPrivate::Define::instance(qmlRegisterCustomType(#NAME, #TYPE, new CUSTOMTYPE)); - -QT_END_NAMESPACE - -QT_END_HEADER - -#endif diff --git a/src/declarative/qml/qmlcustomparser_p.h b/src/declarative/qml/qmlcustomparser_p.h index 63d148c..0e6a619 100644 --- a/src/declarative/qml/qmlcustomparser_p.h +++ b/src/declarative/qml/qmlcustomparser_p.h @@ -39,41 +39,90 @@ ** ****************************************************************************/ -#ifndef QMLCUSTOMPARSER_P_H -#define QMLCUSTOMPARSER_P_H +#ifndef QMLCUSTOMPARSER_H +#define QMLCUSTOMPARSER_H -#include -#include "qmlcustomparser.h" +#include +#include +#include +#include + +QT_BEGIN_HEADER QT_BEGIN_NAMESPACE -namespace QmlParser +QT_MODULE(Declarative) + +class QmlCustomParserPropertyPrivate; +class Q_DECLARATIVE_EXPORT QmlCustomParserProperty { - class Object; - class Property; +public: + QmlCustomParserProperty(); + QmlCustomParserProperty(const QmlCustomParserProperty &); + QmlCustomParserProperty &operator=(const QmlCustomParserProperty &); + ~QmlCustomParserProperty(); + + QByteArray name() const; + + bool isList() const; + QList assignedValues() const; + +private: + friend class QmlCustomParserNodePrivate; + friend class QmlCustomParserPropertyPrivate; + QmlCustomParserPropertyPrivate *d; }; +Q_DECLARE_METATYPE(QmlCustomParserProperty); -class QmlCustomParserNodePrivate +class QmlCustomParserNodePrivate; +class Q_DECLARATIVE_EXPORT QmlCustomParserNode { public: - QByteArray name; - QList properties; + QmlCustomParserNode(); + QmlCustomParserNode(const QmlCustomParserNode &); + QmlCustomParserNode &operator=(const QmlCustomParserNode &); + ~QmlCustomParserNode(); - static QmlCustomParserNode fromObject(QmlParser::Object *); - static QmlCustomParserProperty fromProperty(QmlParser::Property *); + QByteArray name() const; + + QList properties() const; + +private: + friend class QmlCustomParserNodePrivate; + QmlCustomParserNodePrivate *d; }; +Q_DECLARE_METATYPE(QmlCustomParserNode); -class QmlCustomParserPropertyPrivate +class Q_DECLARATIVE_EXPORT QmlCustomParser { public: - QmlCustomParserPropertyPrivate() - : isList(false) {} + virtual ~QmlCustomParser() {} + + virtual QByteArray compile(QXmlStreamReader&, bool *ok)=0; + virtual QByteArray compile(const QList &, bool *ok); + virtual QVariant create(const QByteArray &)=0; + virtual void setCustomData(QObject *, const QByteArray &); - QByteArray name; - bool isList; - QList values; + struct Register { + Register(const char *name, QmlCustomParser *parser) { + qmlRegisterCustomParser(name, parser); + } + }; + template + struct Define { + static Register instance; + }; }; +#define QML_DEFINE_CUSTOM_PARSER(name, parserClass) \ + template<> QmlCustomParser::Register QmlCustomParser::Define::instance(# name, new parserClass); +#define QML_DEFINE_CUSTOM_PARSER_NS(namespacestring, name, parserClass) \ + template<> QmlCustomParser::Register QmlCustomParser::Define::instance(namespacestring "/" # name, new parserClass); + +#define QML_DEFINE_CUSTOM_TYPE(TYPE, NAME, CUSTOMTYPE) \ + template<> QmlPrivate::InstanceType QmlPrivate::Define::instance(qmlRegisterCustomType(#NAME, #TYPE, new CUSTOMTYPE)); QT_END_NAMESPACE -#endif // QMLCUSTOMPARSER_P_H +QT_END_HEADER + +#endif diff --git a/src/declarative/qml/qmlcustomparser_p_p.h b/src/declarative/qml/qmlcustomparser_p_p.h new file mode 100644 index 0000000..96e9b32 --- /dev/null +++ b/src/declarative/qml/qmlcustomparser_p_p.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** 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 +** 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 are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMLCUSTOMPARSER_P_H +#define QMLCUSTOMPARSER_P_H + +#include +#include "qmlcustomparser_p.h" + +QT_BEGIN_NAMESPACE + +namespace QmlParser +{ + class Object; + class Property; +}; + +class QmlCustomParserNodePrivate +{ +public: + QByteArray name; + QList properties; + + static QmlCustomParserNode fromObject(QmlParser::Object *); + static QmlCustomParserProperty fromProperty(QmlParser::Property *); +}; + +class QmlCustomParserPropertyPrivate +{ +public: + QmlCustomParserPropertyPrivate() + : isList(false) {} + + QByteArray name; + bool isList; + QList values; +}; + +QT_END_NAMESPACE + +#endif // QMLCUSTOMPARSER_P_H diff --git a/src/declarative/qml/qmlmetatype.cpp b/src/declarative/qml/qmlmetatype.cpp index fbfeca0..63e5c58 100644 --- a/src/declarative/qml/qmlmetatype.cpp +++ b/src/declarative/qml/qmlmetatype.cpp @@ -57,7 +57,7 @@ #include #include #include -#include +#include QT_BEGIN_NAMESPACE #ifdef QT_BOOTSTRAPPED diff --git a/src/declarative/qml/qmlvme.cpp b/src/declarative/qml/qmlvme.cpp index 7b3291e..e6235e4 100644 --- a/src/declarative/qml/qmlvme.cpp +++ b/src/declarative/qml/qmlvme.cpp @@ -45,7 +45,7 @@ #include #include "private/qmetaobjectbuilder_p.h" #include -#include +#include #include #include #include diff --git a/src/declarative/qml/qmlxmlparser.cpp b/src/declarative/qml/qmlxmlparser.cpp index b3565a0..35d2c0e 100644 --- a/src/declarative/qml/qmlxmlparser.cpp +++ b/src/declarative/qml/qmlxmlparser.cpp @@ -40,7 +40,7 @@ ****************************************************************************/ #include "qmlxmlparser_p.h" -#include "qmlcustomparser.h" +#include "qmlcustomparser_p.h" #include #include #include diff --git a/src/declarative/util/qmllistmodel.cpp b/src/declarative/util/qmllistmodel.cpp index 968e17b..4837180 100644 --- a/src/declarative/util/qmllistmodel.cpp +++ b/src/declarative/util/qmllistmodel.cpp @@ -42,7 +42,7 @@ #include #include #include -#include "qmlcustomparser.h" +#include #include "qmlopenmetaobject.h" #include #include -- cgit v0.12