1 /*
2     SPDX-FileCopyrightText: 2015 Sergey Kalinichev <kalinichev.so.0@gmail.com>
3 
4     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
5 */
6 
7 #ifndef CLANGSETTINGSMANAGER_H
8 #define CLANGSETTINGSMANAGER_H
9 
10 #include <QString>
11 #include <QMetaType>
12 
13 #include "clangprivateexport.h"
14 
15 namespace KDevelop
16 {
17 class ProjectBaseItem;
18 class IProject;
19 }
20 
21 struct ParserSettings
22 {
23     QString parserOptions;
24     bool isCpp() const;
25     QVector<QByteArray> toClangAPI() const;
26     bool operator==(const ParserSettings& rhs) const;
27 };
28 Q_DECLARE_METATYPE(ParserSettings)
29 
30 struct CodeCompletionSettings
31 {
32     bool macros = true;
33     bool lookAhead = false;
34 };
35 
36 struct AssistantsSettings
37 {
38     bool forwardDeclare = true;
39 };
40 
41 class KDEVCLANGPRIVATE_EXPORT ClangSettingsManager
42 {
43 public:
44     static ClangSettingsManager* self();
45 
46     AssistantsSettings assistantsSettings() const;
47 
48     CodeCompletionSettings codeCompletionSettings() const;
49 
50     ParserSettings parserSettings(KDevelop::ProjectBaseItem* item) const;
51 
52     ParserSettings parserSettings(const QString& path) const;
53 
54 private:
55     ClangSettingsManager();
56 
57     bool m_enableTesting = false;
58     friend class CodeCompletionTestBase;
59 };
60 
61 #endif // CLANGSETTINGSMANAGER_H
62