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