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.h26
1 files changed, 22 insertions, 4 deletions
diff --git a/src/qdoc/qdoc/src/qdoc/clangcodeparser.h b/src/qdoc/qdoc/src/qdoc/clangcodeparser.h
index ea330c202..2318a048d 100644
--- a/src/qdoc/qdoc/src/qdoc/clangcodeparser.h
+++ b/src/qdoc/qdoc/src/qdoc/clangcodeparser.h
@@ -11,6 +11,8 @@
#include <QtCore/qtemporarydir.h>
#include <QtCore/QStringList>
+#include <optional>
+
typedef struct CXTranslationUnitImpl *CXTranslationUnit;
QT_BEGIN_NAMESPACE
@@ -20,10 +22,28 @@ struct ParsedCppFileIR {
std::vector<TiedDocumentation> tied;
};
+struct PCHFile {
+ QTemporaryDir dir;
+ QByteArray name;
+};
+
+std::optional<PCHFile> buildPCH(
+ QDocDatabase* qdb,
+ QString module_header,
+ const std::set<Config::HeaderFilePath>& all_headers,
+ const std::vector<QByteArray>& include_paths,
+ const QList<QByteArray>& defines
+);
+
class ClangCodeParser : public CodeParser
{
public:
- ClangCodeParser(Config&, const std::vector<QByteArray>& include_paths, const QList<QByteArray>& defines);
+ ClangCodeParser(
+ Config&,
+ const std::vector<QByteArray>& include_paths,
+ const QList<QByteArray>& defines,
+ std::optional<std::reference_wrapper<const PCHFile>> pch
+ );
~ClangCodeParser() override = default;
void initializeParser() override {}
@@ -32,18 +52,16 @@ public:
QStringList sourceFileNameFilter() override;
void parseSourceFile(const Location &, const QString &, CppCodeParser&) override {}
ParsedCppFileIR parse_cpp_file(const QString &filePath);
- void buildPCH(QString module_header);
Node *parseFnArg(const Location &location, const QString &fnSignature, const QString &idTag, QStringList context);
private:
std::set<Config::HeaderFilePath> m_allHeaders {}; // file name->path
const std::vector<QByteArray>& m_includePaths;
- QScopedPointer<QTemporaryDir> m_pchFileDir {};
- QByteArray m_pchName {};
QList<QByteArray> m_defines {};
std::vector<const char *> m_args {};
QStringList m_namespaceScope {};
QByteArray s_fn;
+ std::optional<std::reference_wrapper<const PCHFile>> m_pch;
};
QT_END_NAMESPACE