diff options
Diffstat (limited to 'plugins/warp/ui/shared/function.h')
| -rw-r--r-- | plugins/warp/ui/shared/function.h | 177 |
1 files changed, 83 insertions, 94 deletions
diff --git a/plugins/warp/ui/shared/function.h b/plugins/warp/ui/shared/function.h index 90d52092..5cfaff75 100644 --- a/plugins/warp/ui/shared/function.h +++ b/plugins/warp/ui/shared/function.h @@ -10,159 +10,148 @@ class WarpFunctionItem : public QStandardItem { - Warp::Ref<Warp::Function> m_function; + Warp::Ref<Warp::Function> m_function; - // Optional attached data used to show/manage the function. - Warp::Ref<Warp::Container> m_container; - std::optional<Warp::Source> m_source; + // Optional attached data used to show/manage the function. + Warp::Ref<Warp::Container> m_container; + std::optional<Warp::Source> m_source; public: - WarpFunctionItem(Warp::Ref<Warp::Function> function, - BinaryNinja::Ref<BinaryNinja::Function> analysisFunction); + WarpFunctionItem(Warp::Ref<Warp::Function> function, BinaryNinja::Ref<BinaryNinja::Function> analysisFunction); - void SetContainer(const Warp::Ref<Warp::Container> &container); + void SetContainer(const Warp::Ref<Warp::Container>& container); - void SetSource(Warp::Source source); + void SetSource(Warp::Source source); - Warp::Ref<Warp::Function> GetFunction() { return m_function; } - Warp::Ref<Warp::Container> GetContainer() { return m_container; } - std::optional<Warp::Source> GetSource() { return m_source; } + Warp::Ref<Warp::Function> GetFunction() { return m_function; } + Warp::Ref<Warp::Container> GetContainer() { return m_container; } + std::optional<Warp::Source> GetSource() { return m_source; } }; class WarpFunctionItemModel : public QStandardItemModel { - Q_OBJECT + Q_OBJECT - // The current matched function, used to highlight currently. - Warp::Ref<Warp::Function> m_matchedFunction; + // The current matched function, used to highlight currently. + Warp::Ref<Warp::Function> m_matchedFunction; - // Mapping of function start address to the row index. - // This is used to identify unique functions for updating instead of resetting the entire model. - std::unordered_map<uint64_t, int> m_insertableFunctionRows; + // Mapping of function start address to the row index. + // This is used to identify unique functions for updating instead of resetting the entire model. + std::unordered_map<uint64_t, int> m_insertableFunctionRows; public: - WarpFunctionItemModel(const QStringList &labels, QObject *parent); + WarpFunctionItemModel(const QStringList& labels, QObject* parent); - static constexpr int COL_FUNCTION_ITEM = 0; - static constexpr int COL_ADDRESS_ITEM = 1; + static constexpr int COL_FUNCTION_ITEM = 0; + static constexpr int COL_ADDRESS_ITEM = 1; - void AppendFunction(WarpFunctionItem *item); + void AppendFunction(WarpFunctionItem* item); - void InsertFunction(uint64_t address, WarpFunctionItem *item); + void InsertFunction(uint64_t address, WarpFunctionItem* item); - WarpFunctionItem *GetItem(const QModelIndex &index) const; + WarpFunctionItem* GetItem(const QModelIndex& index) const; - std::optional<uint64_t> GetAddress(const QModelIndex &index) const; + std::optional<uint64_t> GetAddress(const QModelIndex& index) const; - QVariant data(const QModelIndex &index, int role) const override; + QVariant data(const QModelIndex& index, int role) const override; - void SetMatchedFunction(const Warp::Ref<Warp::Function> &matchedFunction) - { - Warp::Ref<Warp::Function> previousMatchedFunction = m_matchedFunction; - m_matchedFunction = matchedFunction; + void SetMatchedFunction(const Warp::Ref<Warp::Function>& matchedFunction) + { + Warp::Ref<Warp::Function> previousMatchedFunction = m_matchedFunction; + m_matchedFunction = matchedFunction; - // Make sure to refresh the highlights so we don't keep the highlights from the previous function. - if (previousMatchedFunction) - { - const QModelIndex topLeft = index(0, 0); - const QModelIndex bottomRight = index(rowCount() - 1, 0); - emit dataChanged(topLeft, bottomRight); - } - } + // Make sure to refresh the highlights so we don't keep the highlights from the previous function. + if (previousMatchedFunction) + { + const QModelIndex topLeft = index(0, 0); + const QModelIndex bottomRight = index(rowCount() - 1, 0); + emit dataChanged(topLeft, bottomRight); + } + } }; class WarpFunctionFilterModel : public QSortFilterProxyModel { - Q_OBJECT + Q_OBJECT public: - WarpFunctionFilterModel(QObject *parent): QSortFilterProxyModel(parent) - { - } + WarpFunctionFilterModel(QObject* parent) : QSortFilterProxyModel(parent) {} - ~WarpFunctionFilterModel() override = default; + ~WarpFunctionFilterModel() override = default; - bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; + bool filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const override; - bool lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const override; + bool lessThan(const QModelIndex& sourceLeft, const QModelIndex& sourceRight) const override; }; class WarpFunctionTableWidget : public QWidget, public FilterTarget { - Q_OBJECT + Q_OBJECT - QTableView *m_table; - WarpFunctionItemModel *m_model; - WarpFunctionFilterModel *m_proxyModel; - FilterEdit *m_filterEdit; - FilteredView *m_filterView; - QMenu *m_contextMenu; - std::map<QString, std::function<void(WarpFunctionItem *, std::optional<uint64_t>)> > m_contextMenuActions; + QTableView* m_table; + WarpFunctionItemModel* m_model; + WarpFunctionFilterModel* m_proxyModel; + FilterEdit* m_filterEdit; + FilteredView* m_filterView; + QMenu* m_contextMenu; + std::map<QString, std::function<void(WarpFunctionItem*, std::optional<uint64_t>)>> m_contextMenuActions; public: - explicit WarpFunctionTableWidget(QWidget *parent = nullptr); + explicit WarpFunctionTableWidget(QWidget* parent = nullptr); - // TODO: Invert this and provide OnCallback functions that wrap the connect call. - QTableView *GetTableView() const { return m_table; } - WarpFunctionItemModel *GetModel() const { return m_model; } - WarpFunctionFilterModel *GetProxyModel() const { return m_proxyModel; } + // TODO: Invert this and provide OnCallback functions that wrap the connect call. + QTableView* GetTableView() const { return m_table; } + WarpFunctionItemModel* GetModel() const { return m_model; } + WarpFunctionFilterModel* GetProxyModel() const { return m_proxyModel; } - void RegisterContextMenuAction(const QString &name, - const std::function<void(WarpFunctionItem *, std::optional<uint64_t>)> &callback); + void RegisterContextMenuAction( + const QString& name, const std::function<void(WarpFunctionItem*, std::optional<uint64_t>)>& callback); - void SetFunctions(QVector<WarpFunctionItem *> functions); + void SetFunctions(QVector<WarpFunctionItem*> functions); - void InsertFunction(uint64_t address, WarpFunctionItem *function); + void InsertFunction(uint64_t address, WarpFunctionItem* function); - void setFilter(const std::string &) override; + void setFilter(const std::string&) override; - void scrollToFirstItem() override - { - } + void scrollToFirstItem() override {} - void scrollToCurrentItem() override - { - } + void scrollToCurrentItem() override {} - void selectFirstItem() override - { - } + void selectFirstItem() override {} - void activateFirstItem() override - { - } + void activateFirstItem() override {} }; class WarpFunctionInfoWidget : public QWidget { - Q_OBJECT + Q_OBJECT - Warp::Ref<Warp::Function> m_function; - BinaryNinja::Ref<BinaryNinja::Function> m_analysisFunction; + Warp::Ref<Warp::Function> m_function; + BinaryNinja::Ref<BinaryNinja::Function> m_analysisFunction; - // Optionally provide this information to show the source information. - Warp::Ref<Warp::Container> m_container; - std::string source; + // Optionally provide this information to show the source information. + Warp::Ref<Warp::Container> m_container; + std::string source; - WarpConstraintTableWidget *m_constraintsTable; + WarpConstraintTableWidget* m_constraintsTable; - QTableView *m_commentsTable; - QStandardItemModel *m_commentsModel; + QTableView* m_commentsTable; + QStandardItemModel* m_commentsModel; - QTableView *m_variablesTable; + QTableView* m_variablesTable; public: - explicit WarpFunctionInfoWidget(QWidget *parent = nullptr); + explicit WarpFunctionInfoWidget(QWidget* parent = nullptr); - Warp::Ref<Warp::Function> GetFunction() { return m_function; } - void SetFunction(Warp::Ref<Warp::Function> function) { m_function = function; }; + Warp::Ref<Warp::Function> GetFunction() { return m_function; } + void SetFunction(Warp::Ref<Warp::Function> function) { m_function = function; }; - void SetAnalysisFunction(BinaryNinja::Ref<BinaryNinja::Function> analysisFunction) - { - m_analysisFunction = analysisFunction; - }; - BinaryNinja::Ref<BinaryNinja::Function> GetAnalysisFunction() { return m_analysisFunction; } + void SetAnalysisFunction(BinaryNinja::Ref<BinaryNinja::Function> analysisFunction) + { + m_analysisFunction = analysisFunction; + }; + BinaryNinja::Ref<BinaryNinja::Function> GetAnalysisFunction() { return m_analysisFunction; } - // TODO: Make this private? - void UpdateInfo(); + // TODO: Make this private? + void UpdateInfo(); }; |
