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 #pragma once 0008 0009 #include "mesonactionbase.h" 0010 0011 class MesonKWARGSModify; 0012 class MesonKWARGSProjectModify; 0013 class MesonKWARGSTargetModify; 0014 class MesonKWARGSDependencyModify; 0015 0016 using MesonKWARGSModifyPtr = std::shared_ptr<MesonKWARGSModify>; 0017 using MesonKWARGSProjectModifyPtr = std::shared_ptr<MesonKWARGSProjectModify>; 0018 using MesonKWARGSTargetModifyPtr = std::shared_ptr<MesonKWARGSTargetModify>; 0019 using MesonKWARGSDependencyModifyPtr = std::shared_ptr<MesonKWARGSDependencyModify>; 0020 0021 class MesonKWARGSModify : public MesonRewriterActionBase 0022 { 0023 public: 0024 enum Function { PROJECT, TARGET, DEPENDENCY }; 0025 enum Operation { SET, DELETE }; 0026 0027 public: 0028 explicit MesonKWARGSModify(Function fn, Operation op, const QString& id); 0029 virtual ~MesonKWARGSModify(); 0030 0031 QJsonObject command() override; 0032 0033 Function function() const; 0034 Operation operation() const; 0035 QString id() const; 0036 0037 void set(const QString& kwarg, const QJsonValue& value); 0038 void unset(const QString& kwarg); 0039 void clear(); 0040 0041 bool isSet(const QString& kwarg); 0042 0043 private: 0044 Function m_func; 0045 Operation m_op; 0046 QString m_id; 0047 0048 QJsonObject m_kwargs = QJsonObject(); 0049 }; 0050 0051 class MesonKWARGSProjectModify : public MesonKWARGSModify 0052 { 0053 public: 0054 explicit MesonKWARGSProjectModify(Operation op); 0055 virtual ~MesonKWARGSProjectModify(); 0056 }; 0057 0058 class MesonKWARGSTargetModify : public MesonKWARGSModify 0059 { 0060 public: 0061 explicit MesonKWARGSTargetModify(Operation op, const QString& id); 0062 virtual ~MesonKWARGSTargetModify(); 0063 }; 0064 0065 class MesonKWARGSDependencyModify : public MesonKWARGSModify 0066 { 0067 public: 0068 explicit MesonKWARGSDependencyModify(Operation op, const QString& id); 0069 virtual ~MesonKWARGSDependencyModify(); 0070 };