File indexing completed on 2024-05-12 04:39:07

0001 /*
0002     SPDX-FileCopyrightText: 2015 Sergey Kalinichev <kalinichev.so.0@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006 
0007 #ifndef CLANGSETTINGSMANAGER_H
0008 #define CLANGSETTINGSMANAGER_H
0009 
0010 #include <QString>
0011 #include <QMetaType>
0012 
0013 #include "clangprivateexport.h"
0014 
0015 namespace KDevelop
0016 {
0017 class ProjectBaseItem;
0018 class IProject;
0019 }
0020 
0021 struct ParserSettings
0022 {
0023     QString parserOptions;
0024     bool isCpp() const;
0025     QVector<QByteArray> toClangAPI() const;
0026     bool operator==(const ParserSettings& rhs) const;
0027 };
0028 Q_DECLARE_METATYPE(ParserSettings)
0029 
0030 struct CodeCompletionSettings
0031 {
0032     bool macros = true;
0033     bool lookAhead = false;
0034 };
0035 
0036 struct AssistantsSettings
0037 {
0038     bool forwardDeclare = true;
0039 };
0040 
0041 class KDEVCLANGPRIVATE_EXPORT ClangSettingsManager
0042 {
0043 public:
0044     static ClangSettingsManager* self();
0045 
0046     AssistantsSettings assistantsSettings() const;
0047 
0048     CodeCompletionSettings codeCompletionSettings() const;
0049 
0050     ParserSettings parserSettings(KDevelop::ProjectBaseItem* item) const;
0051 
0052     ParserSettings parserSettings(const QString& path) const;
0053 
0054 private:
0055     ClangSettingsManager();
0056 
0057     bool m_enableTesting = false;
0058     friend class CodeCompletionTestBase;
0059 };
0060 
0061 #endif // CLANGSETTINGSMANAGER_H