summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/qmlcompiler_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/qml/qmlcompiler_p.h')
-rw-r--r--src/declarative/qml/qmlcompiler_p.h337
1 files changed, 0 insertions, 337 deletions
diff --git a/src/declarative/qml/qmlcompiler_p.h b/src/declarative/qml/qmlcompiler_p.h
deleted file mode 100644
index 744d397..0000000
--- a/src/declarative/qml/qmlcompiler_p.h
+++ /dev/null
@@ -1,337 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (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 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
-** 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.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QMLCOMPILER_P_H
-#define QMLCOMPILER_P_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.
-//
-
-#include "qml.h"
-#include "qmlerror.h"
-#include "qmlinstruction_p.h"
-#include "qmlcompositetypemanager_p.h"
-#include "qmlparser_p.h"
-#include "qmlengine_p.h"
-#include "qbitfield_p.h"
-#include "qmlpropertycache_p.h"
-#include "qmlintegercache_p.h"
-#include "qmltypenamecache_p.h"
-
-#include <QtCore/qbytearray.h>
-#include <QtCore/qset.h>
-
-QT_BEGIN_NAMESPACE
-
-class QmlEngine;
-class QmlComponent;
-class QmlContext;
-
-class QScriptProgram;
-class Q_AUTOTEST_EXPORT QmlCompiledData : public QmlRefCount, public QmlCleanup
-{
-public:
- QmlCompiledData(QmlEngine *engine);
- virtual ~QmlCompiledData();
-
- QString name;
- QUrl url;
- QmlEnginePrivate::Imports imports;
- QmlTypeNameCache *importCache;
-
- struct TypeReference
- {
- TypeReference()
- : type(0), component(0), ref(0) {}
-
- QByteArray className;
- QmlType *type;
- QmlComponent *component;
-
- QmlRefCount *ref;
- QObject *createInstance(QmlContext *, const QBitField &) const;
- const QMetaObject *metaObject() const;
- };
- QList<TypeReference> types;
- struct CustomTypeData
- {
- int index;
- int type;
- };
-
- const QMetaObject *root;
- QAbstractDynamicMetaObject rootData;
- QmlPropertyCache *rootPropertyCache;
- QList<QString> primitives;
- QList<float> floatData;
- QList<int> intData;
- QList<CustomTypeData> customTypeData;
- QList<QByteArray> datas;
- QList<QmlParser::Location> locations;
- QList<QmlInstruction> bytecode;
- QList<QScriptProgram *> cachedPrograms;
- QList<QScriptValue *> cachedClosures;
- QList<QmlPropertyCache *> propertyCaches;
- QList<QmlIntegerCache *> contextCaches;
- QList<QmlParser::Object::ScriptBlock> scripts;
- QList<QUrl> urls;
-
- void dumpInstructions();
-
-protected:
- virtual void clear(); // From QmlCleanup
-
-private:
- void dump(QmlInstruction *, int idx = -1);
- QmlCompiledData(const QmlCompiledData &other);
- QmlCompiledData &operator=(const QmlCompiledData &other);
- QByteArray packData;
- friend class QmlCompiler;
- int pack(const char *, size_t);
-
- int indexForString(const QString &);
- int indexForByteArray(const QByteArray &);
- int indexForFloat(float *, int);
- int indexForInt(int *, int);
- int indexForLocation(const QmlParser::Location &);
- int indexForLocation(const QmlParser::LocationSpan &);
- int indexForUrl(const QUrl &);
-};
-
-class QMetaObjectBuilder;
-class Q_DECLARATIVE_EXPORT QmlCompiler
-{
-public:
- QmlCompiler();
-
- bool compile(QmlEngine *, QmlCompositeTypeData *, QmlCompiledData *);
-
- bool isError() const;
- QList<QmlError> errors() const;
-
- static bool isValidId(const QString &);
- static bool isAttachedPropertyName(const QByteArray &);
- static bool isSignalPropertyName(const QByteArray &);
-
-private:
- static void reset(QmlCompiledData *);
-
- struct BindingContext {
- BindingContext()
- : stack(0), owner(0), object(0) {}
- BindingContext(QmlParser::Object *o)
- : stack(0), owner(0), object(o) {}
- BindingContext incr() const {
- BindingContext rv(object);
- rv.stack = stack + 1;
- return rv;
- }
- bool isSubContext() const { return stack != 0; }
- int stack;
- int owner;
- QmlParser::Object *object;
- };
-
- void compileTree(QmlParser::Object *tree);
-
-
- bool buildObject(QmlParser::Object *obj, const BindingContext &);
- bool buildScript(QmlParser::Object *obj, QmlParser::Object *script);
- bool buildComponent(QmlParser::Object *obj, const BindingContext &);
- bool buildSubObject(QmlParser::Object *obj, const BindingContext &);
- bool buildSignal(QmlParser::Property *prop, QmlParser::Object *obj,
- const BindingContext &);
- bool buildProperty(QmlParser::Property *prop, QmlParser::Object *obj,
- const BindingContext &);
- bool buildPropertyInNamespace(QmlEnginePrivate::ImportedNamespace *ns,
- QmlParser::Property *prop,
- QmlParser::Object *obj,
- const BindingContext &);
- bool buildIdProperty(QmlParser::Property *prop, QmlParser::Object *obj);
- bool buildAttachedProperty(QmlParser::Property *prop,
- QmlParser::Object *obj,
- const BindingContext &ctxt);
- bool buildGroupedProperty(QmlParser::Property *prop,
- QmlParser::Object *obj,
- const BindingContext &ctxt);
- bool buildValueTypeProperty(QObject *type,
- QmlParser::Object *obj,
- QmlParser::Object *baseObj,
- const BindingContext &ctxt);
- bool buildListProperty(QmlParser::Property *prop,
- QmlParser::Object *obj,
- const BindingContext &ctxt);
- bool buildScriptStringProperty(QmlParser::Property *prop,
- QmlParser::Object *obj,
- const BindingContext &ctxt);
- bool buildPropertyAssignment(QmlParser::Property *prop,
- QmlParser::Object *obj,
- const BindingContext &ctxt);
- bool buildPropertyObjectAssignment(QmlParser::Property *prop,
- QmlParser::Object *obj,
- QmlParser::Value *value,
- const BindingContext &ctxt);
- bool buildPropertyLiteralAssignment(QmlParser::Property *prop,
- QmlParser::Object *obj,
- QmlParser::Value *value,
- const BindingContext &ctxt);
- bool doesPropertyExist(QmlParser::Property *prop, QmlParser::Object *obj);
- bool testLiteralAssignment(const QMetaProperty &prop,
- QmlParser::Value *value);
- bool testQualifiedEnumAssignment(const QMetaProperty &prop,
- QmlParser::Object *obj,
- QmlParser::Value *value,
- bool *isAssignment);
- enum DynamicMetaMode { IgnoreAliases, ResolveAliases, ForceCreation };
- bool mergeDynamicMetaProperties(QmlParser::Object *obj);
- bool buildDynamicMeta(QmlParser::Object *obj, DynamicMetaMode mode);
- bool checkDynamicMeta(QmlParser::Object *obj);
- bool buildBinding(QmlParser::Value *, QmlParser::Property *prop,
- const BindingContext &ctxt);
- bool buildComponentFromRoot(QmlParser::Object *obj, const BindingContext &);
- bool compileAlias(QMetaObjectBuilder &,
- QByteArray &data,
- QmlParser::Object *obj,
- const QmlParser::Object::DynamicProperty &);
- bool completeComponentBuild();
-
-
- void genObject(QmlParser::Object *obj);
- void genObjectBody(QmlParser::Object *obj);
- void genComponent(QmlParser::Object *obj);
- void genValueProperty(QmlParser::Property *prop, QmlParser::Object *obj);
- void genListProperty(QmlParser::Property *prop, QmlParser::Object *obj);
- void genPropertyAssignment(QmlParser::Property *prop,
- QmlParser::Object *obj,
- QmlParser::Property *valueTypeProperty = 0);
- void genLiteralAssignment(const QMetaProperty &prop,
- QmlParser::Value *value);
- void genBindingAssignment(QmlParser::Value *binding,
- QmlParser::Property *prop,
- QmlParser::Object *obj,
- QmlParser::Property *valueTypeProperty = 0);
- int genContextCache();
-
- int genValueTypeData(QmlParser::Property *prop, QmlParser::Property *valueTypeProp);
- int genPropertyData(QmlParser::Property *prop);
-
- int componentTypeRef();
-
- static int findSignalByName(const QMetaObject *, const QByteArray &name);
- static QmlType *toQmlType(QmlParser::Object *from);
- bool canCoerce(int to, QmlParser::Object *from);
- bool canCoerce(int to, int from);
-
- QStringList deferredProperties(QmlParser::Object *);
-
- void addId(const QString &, QmlParser::Object *);
-
- void dumpStats();
-
- struct BindingReference {
- QmlParser::Variant expression;
- QmlParser::Property *property;
- QmlParser::Value *value;
-
- enum DataType { QtScript, Experimental };
- DataType dataType;
-
- int compiledIndex;
-
- QByteArray compiledData;
- BindingContext bindingContext;
- };
- void addBindingReference(const BindingReference &);
-
- struct ComponentCompileState
- {
- ComponentCompileState()
- : parserStatusCount(0), pushedProperties(0), root(0) {}
- QHash<QString, QmlParser::Object *> ids;
- QHash<int, QmlParser::Object *> idIndexes;
- int parserStatusCount;
- int pushedProperties;
-
- QByteArray compiledBindingData;
-
- QHash<QmlParser::Value *, BindingReference> bindings;
- QList<QmlParser::Object *> aliasingObjects;
- QmlParser::Object *root;
- };
- ComponentCompileState compileState;
-
- struct ComponentStat
- {
- ComponentStat()
- : ids(0), scriptBindings(0), optimizedBindings(0), objects(0) {}
-
- int lineNumber;
-
- int ids;
- int scriptBindings;
- int optimizedBindings;
- int objects;
- };
- ComponentStat componentStat;
-
- void saveComponentState();
-
- ComponentCompileState componentState(QmlParser::Object *);
- QHash<QmlParser::Object *, ComponentCompileState> savedCompileStates;
- QList<ComponentStat> savedComponentStats;
-
- QList<QmlError> exceptions;
- QmlCompiledData *output;
- QmlEngine *engine;
- QmlParser::Object *unitRoot;
- QmlCompositeTypeData *unit;
-};
-QT_END_NAMESPACE
-
-#endif // QMLCOMPILER_P_H