summaryrefslogtreecommitdiffstats
path: root/src/qdoc/qdoc/src/qdoc/clangcodeparser.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qdoc/qdoc/src/qdoc/clangcodeparser.h')
-rw-r--r--src/qdoc/qdoc/src/qdoc/clangcodeparser.h34
1 files changed, 31 insertions, 3 deletions
diff --git a/src/qdoc/qdoc/src/qdoc/clangcodeparser.h b/src/qdoc/qdoc/src/qdoc/clangcodeparser.h
index 2318a048d..e6d78c719 100644
--- a/src/qdoc/qdoc/src/qdoc/clangcodeparser.h
+++ b/src/qdoc/qdoc/src/qdoc/clangcodeparser.h
@@ -4,8 +4,7 @@
#ifndef CLANGCODEPARSER_H
#define CLANGCODEPARSER_H
-#include "cppcodeparser.h"
-
+#include "codeparser.h"
#include "config.h"
#include <QtCore/qtemporarydir.h>
@@ -15,6 +14,8 @@
typedef struct CXTranslationUnitImpl *CXTranslationUnit;
+class CppCodeParser;
+
QT_BEGIN_NAMESPACE
struct ParsedCppFileIR {
@@ -35,6 +36,34 @@ std::optional<PCHFile> buildPCH(
const QList<QByteArray>& defines
);
+struct FnCommandParser {
+ FnCommandParser(
+ QDocDatabase* qdb,
+ const std::set<Config::HeaderFilePath>& all_headers,
+ const QList<QByteArray>& defines,
+ std::optional<std::reference_wrapper<const PCHFile>> pch
+ ) : m_qdb{qdb},
+ m_allHeaders{all_headers},
+ m_defines{defines},
+ m_args{},
+ m_pch{pch}
+ {}
+
+ Node *operator()(
+ const Location &location,
+ const QString &fnSignature,
+ const QString &idTag,
+ QStringList context
+ );
+
+private:
+ QDocDatabase* m_qdb;
+ const std::set<Config::HeaderFilePath>& m_allHeaders; // file name->path
+ QList<QByteArray> m_defines {};
+ std::vector<const char *> m_args {};
+ std::optional<std::reference_wrapper<const PCHFile>> m_pch;
+};
+
class ClangCodeParser : public CodeParser
{
public:
@@ -52,7 +81,6 @@ public:
QStringList sourceFileNameFilter() override;
void parseSourceFile(const Location &, const QString &, CppCodeParser&) override {}
ParsedCppFileIR parse_cpp_file(const QString &filePath);
- Node *parseFnArg(const Location &location, const QString &fnSignature, const QString &idTag, QStringList context);
private:
std::set<Config::HeaderFilePath> m_allHeaders {}; // file name->path