File indexing completed on 2024-05-19 04:41:21
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 "mesonkwargsmodify.h" 0008 0009 #include <QStringList> 0010 0011 MesonKWARGSModify::MesonKWARGSModify(MesonKWARGSModify::Function fn, MesonKWARGSModify::Operation op, const QString& id) 0012 : m_func(fn) 0013 , m_op(op) 0014 , m_id(id) 0015 { 0016 } 0017 0018 QJsonObject MesonKWARGSModify::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 auto op2str = [](Operation op) -> QString { 0036 switch (op) { 0037 case SET: 0038 return QStringLiteral("set"); 0039 case DELETE: 0040 return QStringLiteral("delete"); 0041 } 0042 0043 return QStringLiteral("ERROR"); 0044 }; 0045 0046 res[QStringLiteral("type")] = QStringLiteral("kwargs"); 0047 res[QStringLiteral("function")] = func2str(m_func); 0048 res[QStringLiteral("id")] = m_id; 0049 res[QStringLiteral("operation")] = op2str(m_op); 0050 res[QStringLiteral("kwargs")] = m_kwargs; 0051 0052 return res; 0053 } 0054 0055 void MesonKWARGSModify::set(const QString& kwarg, const QJsonValue& value) 0056 { 0057 m_kwargs[kwarg] = value; 0058 } 0059 0060 void MesonKWARGSModify::unset(const QString& kwarg) 0061 { 0062 if (isSet(kwarg)) { 0063 m_kwargs.remove(kwarg); 0064 } 0065 } 0066 0067 void MesonKWARGSModify::clear() 0068 { 0069 auto kwargs = m_kwargs.keys(); 0070 for (auto i : kwargs) { 0071 m_kwargs.remove(i); 0072 } 0073 } 0074 0075 bool MesonKWARGSModify::isSet(const QString& kwarg) 0076 { 0077 return m_kwargs.contains(kwarg); 0078 } 0079 0080 MesonKWARGSModify::Function MesonKWARGSModify::function() const 0081 { 0082 return m_func; 0083 } 0084 0085 MesonKWARGSModify::Operation MesonKWARGSModify::operation() const 0086 { 0087 return m_op; 0088 } 0089 0090 QString MesonKWARGSModify::id() const 0091 { 0092 return m_id; 0093 } 0094 0095 // Constructors 0096 0097 MesonKWARGSProjectModify::MesonKWARGSProjectModify(MesonKWARGSModify::Operation op) 0098 : MesonKWARGSModify(PROJECT, op, QStringLiteral("/")) 0099 { 0100 } 0101 MesonKWARGSTargetModify::MesonKWARGSTargetModify(MesonKWARGSModify::Operation op, const QString& id) 0102 : MesonKWARGSModify(TARGET, op, id) 0103 { 0104 } 0105 MesonKWARGSDependencyModify::MesonKWARGSDependencyModify(MesonKWARGSModify::Operation op, const QString& id) 0106 : MesonKWARGSModify(DEPENDENCY, op, id) 0107 { 0108 } 0109 0110 // Destructors 0111 0112 MesonKWARGSModify::~MesonKWARGSModify() {} 0113 MesonKWARGSProjectModify::~MesonKWARGSProjectModify() {} 0114 MesonKWARGSTargetModify::~MesonKWARGSTargetModify() {} 0115 MesonKWARGSDependencyModify::~MesonKWARGSDependencyModify() {}