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{
21 QString m_type {};
22 QString m_module {};
23 QString m_component {};
24 QString m_name;
25
26 void clear()
27 {
28 m_type.clear();
29 m_module.clear();
30 m_component.clear();
31 m_name.clear();
32 }
33};
34
36{
37public:
38 QmlDocVisitor(const QString &filePath, const QString &code, QQmlJS::Engine *engine,
39 const QSet<QString> &commands, const QSet<QString> &topics);
40 ~QmlDocVisitor() override = default;
41
42 bool visit(QQmlJS::AST::UiImport *import) override;
43 void endVisit(QQmlJS::AST::UiImport *definition) override;
44
45 bool visit(QQmlJS::AST::UiObjectDefinition *definition) override;
46 void endVisit(QQmlJS::AST::UiObjectDefinition *definition) override;
47
48 bool visit(QQmlJS::AST::UiPublicMember *member) override;
49 void endVisit(QQmlJS::AST::UiPublicMember *definition) override;
50
51 bool visit(QQmlJS::AST::UiObjectBinding *) override;
52 void endVisit(QQmlJS::AST::UiObjectBinding *) override;
53 void endVisit(QQmlJS::AST::UiArrayBinding *) override;
54 bool visit(QQmlJS::AST::UiArrayBinding *) override;
55
56 bool visit(QQmlJS::AST::IdentifierPropertyName *idproperty) override;
57
58 bool visit(QQmlJS::AST::FunctionDeclaration *) override;
59 void endVisit(QQmlJS::AST::FunctionDeclaration *) override;
60
61 bool visit(QQmlJS::AST::UiScriptBinding *) override;
62 void endVisit(QQmlJS::AST::UiScriptBinding *) override;
63
64 bool visit(QQmlJS::AST::UiQualifiedId *) override;
65 void endVisit(QQmlJS::AST::UiQualifiedId *) override;
66
68 [[nodiscard]] bool hasError() const;
69
70private:
71 QString getFullyQualifiedId(QQmlJS::AST::UiQualifiedId *id);
72 [[nodiscard]] QQmlJS::SourceLocation precedingComment(quint32 offset) const;
73 Node *applyDocumentation(QQmlJS::SourceLocation location, Node *node);
74 void applyMetacommands(QQmlJS::SourceLocation location, Node *node, Doc &doc);
75 bool splitQmlPropertyArg(const Doc &doc, const QString &arg, QmlPropArgs &qpa);
76
77 QQmlJS::Engine *m_engine { nullptr };
78 quint32 m_lastEndOffset {};
79 quint32 m_nestingLevel {};
80 QString m_filePath {};
81 QString m_name {};
82 QString m_document {};
83 ImportList m_importList {};
84 QSet<QString> m_commands {};
85 QSet<QString> m_topics {};
86 QSet<quint32> m_usedComments {};
87 Aggregate *m_current { nullptr };
88 bool hasRecursionDepthError { false };
89};
90
91QT_END_NAMESPACE
92
93#endif
Definition doc.h:31
The Location class provides a way to mark a location in a file.
Definition location.h:15
LinkType
An unsigned char value that probably should be moved out of the Node base class.
Definition node.h:112
QString language() override
Returns "QML".
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.
void extractPragmas(QString &script)
Copy & paste from src/declarative/qml/qdeclarativescriptparser.cpp, then modified to return no values...
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.
~QmlDocVisitor() override=default
#define COMMAND_QMLSIGNAL
Definition codeparser.h:65
#define COMMAND_QMLPROPERTYGROUP
Definition codeparser.h:62
#define COMMAND_QMLPROPERTY
Definition codeparser.h:61
#define COMMAND_QMLATTACHEDPROPERTY
Definition codeparser.h:50
#define COMMAND_VARIABLE
Definition codeparser.h:81
#define COMMAND_QMLBASICTYPE
Definition codeparser.h:88
#define COMMAND_QMLMETHOD
Definition codeparser.h:58
#define COMMAND_QMLCLASS
Definition codeparser.h:53
#define COMMAND_QMLVALUETYPE
Definition codeparser.h:52
#define COMMAND_QMLTYPE
Definition codeparser.h:66
#define COMMAND_QMLATTACHEDMETHOD
Definition codeparser.h:49
#define COMMAND_QMLATTACHEDSIGNAL
Definition codeparser.h:51
Combined button and popup list for selecting options.
void replaceWithSpace(QString &str, int idx, int n)
Copy and paste from src/declarative/qml/qdeclarativescriptparser.cpp.
QList< ImportRec > ImportList
Definition qmltypenode.h:19
QString m_name
Definition qmlvisitor.h:24
QString m_module
Definition qmlvisitor.h:22
QString m_type
Definition qmlvisitor.h:21
QString m_component
Definition qmlvisitor.h:23
void clear()
Definition qmlvisitor.h:26