/************************************************************************** ** ** This file is part of Qt Creator ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** Commercial Usage ** ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Commercial License Agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Nokia. ** ** 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. ** ** If you are unsure which license is appropriate for your use, please ** contact the sales department at http://qt.nokia.com/contact. ** **************************************************************************/ #ifndef QMLDOCUMENT_H #define QMLDOCUMENT_H #include #include #include #include #include #include "parser/qmljsengine_p.h" #include "qmljs_global.h" namespace QmlJS { class Bind; typedef QSharedPointer BindPtr; class QMLJS_EXPORT Document { public: typedef QSharedPointer Ptr; typedef QList PtrList; protected: Document(const QString &fileName); public: ~Document(); static Document::Ptr create(const QString &fileName); QmlJS::AST::UiProgram *qmlProgram() const; QmlJS::AST::Program *jsProgram() const; QmlJS::AST::ExpressionNode *expression() const; QmlJS::AST::Node *ast() const; QList diagnosticMessages() const; QString source() const; void setSource(const QString &source); bool parseQml(); bool parseJavaScript(); bool parseExpression(); bool isParsedCorrectly() const { return _parsedCorrectly; } BindPtr bind() const; int documentRevision() const; void setDocumentRevision(int documentRevision); QString fileName() const { return _fileName; } QString path() const { return _path; } QString componentName() const { return _componentName; } private: QmlJS::Engine *_engine; QmlJS::NodePool *_pool; QmlJS::AST::Node *_ast; int _documentRevision; bool _parsedCorrectly; QList _diagnosticMessages; QString _fileName; QString _path; QString _componentName; QString _source; BindPtr _bind; }; class QMLJS_EXPORT Snapshot { typedef QMap _Base; QMap _documents; public: Snapshot(); ~Snapshot(); typedef _Base::iterator iterator; typedef _Base::const_iterator const_iterator; const_iterator begin() const { return _documents.begin(); } const_iterator end() const { return _documents.end(); } void insert(const Document::Ptr &document); Document::Ptr document(const QString &fileName) const { return _documents.value(fileName); } Document::PtrList importedDocuments(const Document::Ptr &doc, const QString &importPath) const; QMap componentsDefinedByImportedDocuments(const Document::Ptr &doc, const QString &importPath) const; }; } // end of namespace Qml #endif // QMLDOCUMENT_H