File indexing completed on 2024-05-12 04:39:26
0001 /* 0002 SPDX-FileCopyrightText: 2009 Aleix Pol Gonzalez <aleixpol@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-only 0005 */ 0006 0007 #ifndef CMAKETYPES_H 0008 #define CMAKETYPES_H 0009 0010 #include "cmakelistsparser.h" 0011 #include <util/path.h> 0012 0013 #include <language/duchain/indexeddeclaration.h> 0014 0015 #include <QHash> 0016 0017 struct Macro 0018 { 0019 QString name; 0020 QStringList knownArgs; 0021 CMakeFileContent code; 0022 bool isFunction; 0023 }; 0024 0025 struct CacheEntry 0026 { 0027 explicit CacheEntry(const QString& value=QString(), const QString &doc=QString()) : value(value), doc(doc) {} 0028 QString value; 0029 QString doc; 0030 }; 0031 0032 struct Target 0033 { 0034 using Properties = QMap<QString, QString>; 0035 enum Type { Library, Executable, Custom }; 0036 KDevelop::IndexedDeclaration declaration; 0037 QStringList files; 0038 Type type; 0039 CMakeFunctionDesc desc; 0040 QString name; 0041 }; 0042 0043 struct Subdirectory 0044 { 0045 QString name; 0046 CMakeFunctionDesc desc; 0047 QString build_dir; 0048 }; 0049 0050 struct Test 0051 { 0052 Test() {} 0053 QString name; 0054 KDevelop::Path executable; 0055 QStringList arguments; 0056 QHash<QString, QString> properties; 0057 }; 0058 0059 Q_DECLARE_TYPEINFO(Test, Q_MOVABLE_TYPE); 0060 Q_DECLARE_TYPEINFO(Subdirectory, Q_MOVABLE_TYPE); 0061 Q_DECLARE_TYPEINFO(Target, Q_MOVABLE_TYPE); 0062 Q_DECLARE_TYPEINFO(CacheEntry, Q_MOVABLE_TYPE); 0063 Q_DECLARE_TYPEINFO(Macro, Q_MOVABLE_TYPE); 0064 0065 enum PropertyType { GlobalProperty, DirectoryProperty, TargetProperty, SourceProperty, TestProperty, CacheProperty, VariableProperty }; 0066 using CategoryType = QHash<QString, QMap<QString, QStringList>>; 0067 using CMakeProperties = QMap<PropertyType, CategoryType>; 0068 0069 using MacroMap = QHash<QString, Macro>; 0070 using CMakeDefinitions = QHash<QString, QString>; 0071 using CacheValues = QHash<QString, CacheEntry>; 0072 0073 Q_DECLARE_METATYPE(QList<Test>) 0074 Q_DECLARE_METATYPE(PropertyType) 0075 0076 #endif