Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qmlvisitor.h
Go to the documentation of this file.
1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
4#ifndef QMLVISITOR_H
5#define QMLVISITOR_H
6
7#include "node.h"
8#include "qmltypenode.h"
9
10#include <QtCore/qstring.h>
11
12#include <private/qqmljsastvisitor_p.h>
13#include <private/qqmljsengine_p.h>
14
16
17class Aggregate;
18
20{
21public:
22 QmlDocVisitor(const QString &filePath, const QString &code, QQmlJS::Engine *engine,
23 const QSet<QString> &commands, const QSet<QString> &topics);
24 ~QmlDocVisitor() override = default;
25
26 bool visit(QQmlJS::AST::UiImport *import) override;
27 void endVisit(QQmlJS::AST::UiImport *definition) override;
28
29 bool visit(QQmlJS::AST::UiObjectDefinition *definition) override;
30 void endVisit(QQmlJS::AST::UiObjectDefinition *definition) override;
31
32 bool visit(QQmlJS::AST::UiPublicMember *member) override;
33 void endVisit(QQmlJS::AST::UiPublicMember *definition) override;
34
35 bool visit(QQmlJS::AST::UiObjectBinding *) override;
36 void endVisit(QQmlJS::AST::UiObjectBinding *) override;
37 void endVisit(QQmlJS::AST::UiArrayBinding *) override;
38 bool visit(QQmlJS::AST::UiArrayBinding *) override;
39
40 bool visit(QQmlJS::AST::IdentifierPropertyName *idproperty) override;
41
42 bool visit(QQmlJS::AST::FunctionDeclaration *) override;
43 void endVisit(QQmlJS::AST::FunctionDeclaration *) override;
44
45 bool visit(QQmlJS::AST::UiScriptBinding *) override;
46 void endVisit(QQmlJS::AST::UiScriptBinding *) override;
47
48 bool visit(QQmlJS::AST::UiQualifiedId *) override;
49 void endVisit(QQmlJS::AST::UiQualifiedId *) override;
50
52 [[nodiscard]] bool hasError() const;
53
54 void setSingletonPragmaFound(bool found) { m_singletonPragmaFound = found; }
55
56private:
57 QString getFullyQualifiedId(QQmlJS::AST::UiQualifiedId *id);
58 [[nodiscard]] QQmlJS::SourceLocation precedingComment(quint32 offset) const;
59 Node *applyDocumentation(QQmlJS::SourceLocation location, Node *node);
60 void applyMetacommands(QQmlJS::SourceLocation location, Node *node, Doc &doc);
61
62 QQmlJS::Engine *m_engine { nullptr };
63 quint32 m_lastEndOffset {};
64 quint32 m_nestingLevel {};
65 QString m_filePath {};
66 QString m_name {};
67 QString m_document {};
68 ImportList m_importList {};
69 QSet<QString> m_commands {};
70 QSet<QString> m_topics {};
71 QSet<quint32> m_usedComments {};
72 Aggregate *m_current { nullptr };
73 bool hasRecursionDepthError { false };
74 bool m_singletonPragmaFound { false };
75};
76
77QT_END_NAMESPACE
78
79#endif
Definition doc.h:31
The Location class provides a way to mark a location in a file.
Definition location.h:20
QStringList sourceFileNameFilter() override
Returns a string list containing "*.qml".
void parseSourceFile(const Location &location, const QString &filePath, CppCodeParser &) override
Parses the source file at filePath and inserts the contents into the database.
QStringList extractPragmas(QString &script) const
Copy & paste from src/declarative/qml/qdeclarativescriptparser.cpp, then modified to return pragma in...
bool visit(QQmlJS::AST::UiImport *import) override
void throwRecursionDepthError() final
void endVisit(QQmlJS::AST::UiImport *definition) override
bool hasError() const
QmlDocVisitor(const QString &filePath, const QString &code, QQmlJS::Engine *engine, const QSet< QString > &commands, const QSet< QString > &topics)
The constructor stores all the parameters in local data members.
void setSingletonPragmaFound(bool found)
Definition qmlvisitor.h:54
~QmlDocVisitor() override=default
#define COMMAND_QMLSIGNAL
Definition codeparser.h:66
#define COMMAND_QMLSINGLETONTYPE
Definition codeparser.h:68
#define COMMAND_QMLPROPERTYGROUP
Definition codeparser.h:63
#define COMMAND_QMLPROPERTY
Definition codeparser.h:62
#define COMMAND_QMLATTACHEDPROPERTY
Definition codeparser.h:50
#define COMMAND_VARIABLE
Definition codeparser.h:83
#define COMMAND_QMLBASICTYPE
Definition codeparser.h:90
#define COMMAND_QMLMETHOD
Definition codeparser.h:59
#define COMMAND_QMLCLASS
Definition codeparser.h:53
#define COMMAND_QMLVALUETYPE
Definition codeparser.h:52
#define COMMAND_QMLTYPE
Definition codeparser.h:67
#define COMMAND_QMLATTACHEDMETHOD
Definition codeparser.h:49
#define COMMAND_QMLATTACHEDSIGNAL
Definition codeparser.h:51
static std::optional< PragmaInfo > processPragma(QQmlJS::Lexer &lexer, const QStringView script)
Processes a "pragma <value>" declaration (QML syntax).
static std::optional< PragmaInfo > processDotPragma(QQmlJS::Lexer &lexer, const QStringView script)
Processes a ".pragma <value>" declaration (JavaScript syntax).
void replaceWithSpace(QString &str, int idx, int n)
Copy and paste from src/declarative/qml/qdeclarativescriptparser.cpp.
QList< ImportRec > ImportList
Definition qmltypenode.h:20
The Node class is the base class for all the nodes in QDoc's parse tree.
Container for the result of processing a pragma declaration.
qsizetype length
qsizetype startOffset