File indexing completed on 2024-05-12 04:39:08

0001 /*
0002     SPDX-FileCopyrightText: 2009 David Nolden <david.nolden.kdevelop@art-master.de>
0003     SPDX-FileCopyrightText: 2014 Kevin Funk <kfunk@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-only
0006 */
0007 
0008 #ifndef ADAPTSIGNATUREACTION_H
0009 #define ADAPTSIGNATUREACTION_H
0010 
0011 #include <interfaces/iassistant.h>
0012 #include <language/duchain/declaration.h>
0013 #include <language/duchain/topducontext.h>
0014 
0015 namespace KDevelop {
0016 class RenameAction;
0017 }
0018 
0019 using ParameterItem = QPair<KDevelop::IndexedType, QString>;
0020 struct Signature
0021 {
0022     Signature()
0023         : isConst(false)
0024         {}
0025     QVector<ParameterItem> parameters;
0026     QList<QString> defaultParams;
0027     KDevelop::IndexedType returnType;
0028     bool isConst;
0029 };
0030 
0031 class AdaptSignatureAction
0032     : public KDevelop::IAssistantAction
0033 {
0034     Q_OBJECT
0035 
0036 public:
0037     AdaptSignatureAction(const KDevelop::DeclarationId& definitionId,
0038                          const KDevelop::ReferencedTopDUContext& definitionContext,
0039                          const Signature& oldSignature,
0040                          const Signature& newSignature,
0041                          bool editingDefinition,
0042                          const QList<KDevelop::RenameAction*>& renameActions);
0043     ~AdaptSignatureAction() override;
0044 
0045     QString description() const override;
0046     QString toolTip() const override;
0047     void execute() override;
0048 
0049 private:
0050     KDevelop::DeclarationId m_otherSideId;
0051     KDevelop::ReferencedTopDUContext m_otherSideTopContext;
0052     Signature m_oldSignature;
0053     Signature m_newSignature;
0054     bool m_editingDefinition;
0055     const QList<KDevelop::RenameAction*> m_renameActions;
0056 };
0057 
0058 #endif // ADAPTSIGNATUREACTION_H