File indexing completed on 2024-05-19 15:46:02
0001 /* 0002 SPDX-FileCopyrightText: 2019 Daniel Mensinger <daniel@mensinger-ka.de> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "mesonkwargsinfo.h" 0008 #include "debug.h" 0009 0010 #include <QJsonArray> 0011 0012 MesonKWARGSInfo::MesonKWARGSInfo(MesonKWARGSInfo::Function fn, const QString& id) 0013 : m_func(fn) 0014 , m_id(id) 0015 { 0016 } 0017 0018 QJsonObject MesonKWARGSInfo::command() 0019 { 0020 QJsonObject res; 0021 0022 auto func2str = [](Function fn) -> QString { 0023 switch (fn) { 0024 case PROJECT: 0025 return QStringLiteral("project"); 0026 case TARGET: 0027 return QStringLiteral("target"); 0028 case DEPENDENCY: 0029 return QStringLiteral("dependency"); 0030 } 0031 0032 return QStringLiteral("ERROR"); 0033 }; 0034 0035 res[QStringLiteral("type")] = QStringLiteral("kwargs"); 0036 res[QStringLiteral("function")] = func2str(m_func); 0037 res[QStringLiteral("id")] = m_id; 0038 res[QStringLiteral("operation")] = QStringLiteral("info"); 0039 0040 m_infoID = func2str(m_func) + QLatin1Char('#') + m_id; 0041 0042 return res; 0043 } 0044 0045 void MesonKWARGSInfo::parseResult(QJsonObject data) 0046 { 0047 if (!data[QStringLiteral("kwargs")].isObject()) { 0048 qCWarning(KDEV_Meson) << "REWRITR: Failed to parse rewriter result"; 0049 return; 0050 } 0051 0052 QJsonObject kwargs = data[QStringLiteral("kwargs")].toObject(); 0053 0054 if (!kwargs[m_infoID].isObject()) { 0055 qCWarning(KDEV_Meson) << "REWRITR: Failed to extract info data from object"; 0056 return; 0057 } 0058 0059 m_result = kwargs[m_infoID].toObject(); 0060 } 0061 0062 MesonKWARGSInfo::Function MesonKWARGSInfo::function() const 0063 { 0064 return m_func; 0065 } 0066 0067 QString MesonKWARGSInfo::id() const 0068 { 0069 return m_id; 0070 } 0071 0072 bool MesonKWARGSInfo::hasKWARG(const QString& kwarg) const 0073 { 0074 return m_result.contains(kwarg); 0075 } 0076 0077 QJsonValue MesonKWARGSInfo::get(const QString& kwarg) const 0078 { 0079 if (!hasKWARG(kwarg)) { 0080 return QJsonValue(); 0081 } 0082 return m_result[kwarg]; 0083 } 0084 0085 QString MesonKWARGSInfo::getString(const QString& kwarg) const 0086 { 0087 return get(kwarg).toString(); 0088 } 0089 0090 QStringList MesonKWARGSInfo::getArray(const QString& kwarg) const 0091 { 0092 QStringList result; 0093 for (auto i : get(kwarg).toArray()) { 0094 result += i.toString(); 0095 } 0096 return result; 0097 } 0098 0099 // Constructors 0100 0101 MesonKWARGSProjectInfo::MesonKWARGSProjectInfo() 0102 : MesonKWARGSInfo(PROJECT, QStringLiteral("/")) 0103 { 0104 } 0105 MesonKWARGSTargetInfo::MesonKWARGSTargetInfo(const QString& id) 0106 : MesonKWARGSInfo(TARGET, id) 0107 { 0108 } 0109 MesonKWARGSDependencyInfo::MesonKWARGSDependencyInfo(const QString& id) 0110 : MesonKWARGSInfo(DEPENDENCY, id) 0111 { 0112 } 0113 0114 // Destructors 0115 0116 MesonKWARGSInfo::~MesonKWARGSInfo() {} 0117 MesonKWARGSProjectInfo::~MesonKWARGSProjectInfo() {} 0118 MesonKWARGSTargetInfo::~MesonKWARGSTargetInfo() {} 0119 MesonKWARGSDependencyInfo::~MesonKWARGSDependencyInfo() {}