Warning, file /kdevelop/kdevelop/plugins/custom-definesandincludes/compilerprovider/gcclikecompiler.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 SPDX-FileCopyrightText: 2014 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 GCCLIKECOMPILER_H 0008 #define GCCLIKECOMPILER_H 0009 0010 #include "icompiler.h" 0011 0012 class GccLikeCompiler : public QObject, public ICompiler 0013 { 0014 Q_OBJECT 0015 public: 0016 GccLikeCompiler( const QString& name, const QString& path, bool editable, const QString& factoryName ); 0017 0018 KDevelop::Defines defines(Utils::LanguageType type, const QString& arguments) const override; 0019 0020 KDevelop::Path::List includes(Utils::LanguageType type, const QString& arguments) const override; 0021 0022 private: 0023 void invalidateCache(); 0024 0025 template <typename T> 0026 struct Cached { 0027 T data; 0028 bool wasCached = false; 0029 }; 0030 struct DefinesIncludes { 0031 Cached<KDevelop::Defines> definedMacros; 0032 Cached<KDevelop::Path::List> includePaths; 0033 }; 0034 0035 /// List of defines/includes per arguments 0036 mutable QHash<Utils::LanguageType, QHash<QString, DefinesIncludes>> m_definesIncludes; 0037 mutable QHash<QStringList, Cached<KDevelop::Defines>> m_defines; 0038 mutable QHash<QStringList, Cached<KDevelop::Path::List>> m_includes; 0039 }; 0040 0041 #endif // GCCLIKECOMPILER_H 0042