summaryrefslogtreecommitdiffstats
path: root/src/qdoc/qdoc/src/qdoc/codeparser.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qdoc/qdoc/src/qdoc/codeparser.h')
-rw-r--r--src/qdoc/qdoc/src/qdoc/codeparser.h141
1 files changed, 141 insertions, 0 deletions
diff --git a/src/qdoc/qdoc/src/qdoc/codeparser.h b/src/qdoc/qdoc/src/qdoc/codeparser.h
new file mode 100644
index 000000000..6357b3a21
--- /dev/null
+++ b/src/qdoc/qdoc/src/qdoc/codeparser.h
@@ -0,0 +1,141 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+#ifndef CODEPARSER_H
+#define CODEPARSER_H
+
+#include "node.h"
+
+#include <QtCore/qset.h>
+
+QT_BEGIN_NAMESPACE
+
+#define COMMAND_ABSTRACT QLatin1String("abstract")
+#define COMMAND_CLASS QLatin1String("class")
+#define COMMAND_COMPARES QLatin1String("compares")
+#define COMMAND_COMPARESWITH QLatin1String("compareswith")
+#define COMMAND_DEFAULT QLatin1String("default")
+#define COMMAND_DEPRECATED QLatin1String("deprecated") // ### don't document
+#define COMMAND_DONTDOCUMENT QLatin1String("dontdocument")
+#define COMMAND_ENUM QLatin1String("enum")
+#define COMMAND_EXAMPLE QLatin1String("example")
+#define COMMAND_EXTERNALPAGE QLatin1String("externalpage")
+#define COMMAND_FN QLatin1String("fn")
+#define COMMAND_GROUP QLatin1String("group")
+#define COMMAND_HEADERFILE QLatin1String("headerfile")
+#define COMMAND_INGROUP QLatin1String("ingroup")
+#define COMMAND_INHEADERFILE QLatin1String("inheaderfile")
+#define COMMAND_INMODULE QLatin1String("inmodule") // ### don't document
+#define COMMAND_INPUBLICGROUP QLatin1String("inpublicgroup")
+#define COMMAND_INQMLMODULE QLatin1String("inqmlmodule")
+#define COMMAND_INTERNAL QLatin1String("internal")
+#define COMMAND_MACRO QLatin1String("macro")
+#define COMMAND_MODULE QLatin1String("module")
+#define COMMAND_MODULESTATE QLatin1String("modulestate")
+#define COMMAND_NAMESPACE QLatin1String("namespace")
+#define COMMAND_NEXTPAGE QLatin1String("nextpage")
+#define COMMAND_NOAUTOLIST QLatin1String("noautolist")
+#define COMMAND_NONREENTRANT QLatin1String("nonreentrant")
+#define COMMAND_OBSOLETE QLatin1String("obsolete")
+#define COMMAND_OVERLOAD QLatin1String("overload")
+#define COMMAND_PAGE QLatin1String("page")
+#define COMMAND_PRELIMINARY QLatin1String("preliminary")
+#define COMMAND_PREVIOUSPAGE QLatin1String("previouspage")
+#define COMMAND_PROPERTY QLatin1String("property")
+#define COMMAND_QMLABSTRACT QLatin1String("qmlabstract")
+#define COMMAND_QMLATTACHEDMETHOD QLatin1String("qmlattachedmethod")
+#define COMMAND_QMLATTACHEDPROPERTY QLatin1String("qmlattachedproperty")
+#define COMMAND_QMLATTACHEDSIGNAL QLatin1String("qmlattachedsignal")
+#define COMMAND_QMLVALUETYPE QLatin1String("qmlvaluetype")
+#define COMMAND_QMLCLASS QLatin1String("qmlclass")
+#define COMMAND_QMLDEFAULT QLatin1String("qmldefault")
+#define COMMAND_QMLENUMERATORSFROM QLatin1String("qmlenumeratorsfrom")
+#define COMMAND_QMLINHERITS QLatin1String("inherits")
+#define COMMAND_QMLINSTANTIATES QLatin1String("instantiates")
+#define COMMAND_QMLMETHOD QLatin1String("qmlmethod")
+#define COMMAND_QMLMODULE QLatin1String("qmlmodule")
+#define COMMAND_QMLPROPERTY QLatin1String("qmlproperty")
+#define COMMAND_QMLPROPERTYGROUP QLatin1String("qmlpropertygroup")
+#define COMMAND_QMLREADONLY QLatin1String("readonly")
+#define COMMAND_QMLREQUIRED QLatin1String("required")
+#define COMMAND_QMLSIGNAL QLatin1String("qmlsignal")
+#define COMMAND_QMLTYPE QLatin1String("qmltype")
+#define COMMAND_QTCMAKEPACKAGE QLatin1String("qtcmakepackage")
+#define COMMAND_QTCMAKETARGETITEM QLatin1String("qtcmaketargetitem")
+#define COMMAND_QTVARIABLE QLatin1String("qtvariable")
+#define COMMAND_REENTRANT QLatin1String("reentrant")
+#define COMMAND_REIMP QLatin1String("reimp")
+#define COMMAND_RELATES QLatin1String("relates")
+#define COMMAND_SINCE QLatin1String("since")
+#define COMMAND_STRUCT QLatin1String("struct")
+#define COMMAND_SUBTITLE QLatin1String("subtitle")
+#define COMMAND_STARTPAGE QLatin1String("startpage")
+#define COMMAND_THREADSAFE QLatin1String("threadsafe")
+#define COMMAND_TITLE QLatin1String("title")
+#define COMMAND_TYPEALIAS QLatin1String("typealias")
+#define COMMAND_TYPEDEF QLatin1String("typedef")
+#define COMMAND_VARIABLE QLatin1String("variable")
+#define COMMAND_VERSION QLatin1String("version")
+#define COMMAND_UNION QLatin1String("union")
+#define COMMAND_WRAPPER QLatin1String("wrapper")
+#define COMMAND_ATTRIBUTION QLatin1String("attribution")
+
+// deprecated alias of qmlvaluetype
+#define COMMAND_QMLBASICTYPE QLatin1String("qmlbasictype")
+
+class Location;
+class QString;
+class QDocDatabase;
+class CppCodeParser;
+
+struct UntiedDocumentation {
+ Doc documentation;
+ QStringList context;
+};
+
+struct TiedDocumentation {
+ Doc documentation;
+ Node* node;
+};
+
+class CodeParser
+{
+public:
+ static inline const QSet<QString> common_meta_commands{
+ COMMAND_ABSTRACT, COMMAND_DEFAULT, COMMAND_DEPRECATED, COMMAND_INGROUP,
+ COMMAND_INMODULE, COMMAND_INPUBLICGROUP, COMMAND_INQMLMODULE, COMMAND_INTERNAL,
+ COMMAND_MODULESTATE, COMMAND_NOAUTOLIST, COMMAND_NONREENTRANT, COMMAND_OBSOLETE,
+ COMMAND_PRELIMINARY, COMMAND_QMLABSTRACT, COMMAND_QMLDEFAULT, COMMAND_QMLENUMERATORSFROM, COMMAND_QMLINHERITS,
+ COMMAND_QMLREADONLY, COMMAND_QMLREQUIRED, COMMAND_QTCMAKEPACKAGE, COMMAND_QTCMAKETARGETITEM,
+ COMMAND_QTVARIABLE, COMMAND_REENTRANT, COMMAND_SINCE, COMMAND_STARTPAGE, COMMAND_SUBTITLE,
+ COMMAND_THREADSAFE, COMMAND_TITLE, COMMAND_WRAPPER, COMMAND_ATTRIBUTION,
+ };
+
+public:
+ CodeParser();
+ virtual ~CodeParser();
+
+ virtual void initializeParser() = 0;
+ virtual void terminateParser();
+ virtual QString language() = 0;
+ virtual QStringList sourceFileNameFilter() = 0;
+ virtual void parseSourceFile(const Location &location, const QString &filePath, CppCodeParser& cpp_code_parser) = 0;
+
+ static void initialize();
+ static void terminate();
+ static CodeParser *parserForLanguage(const QString &language);
+ static CodeParser *parserForSourceFile(const QString &filePath);
+ static void setLink(Node *node, Node::LinkType linkType, const QString &arg);
+ static bool isWorthWarningAbout(const Doc &doc);
+
+protected:
+ static void extractPageLinkAndDesc(QStringView arg, QString *link, QString *desc);
+ QDocDatabase *m_qdb {};
+
+private:
+ static QList<CodeParser *> s_parsers;
+};
+
+QT_END_NAMESPACE
+
+#endif