From 88a1acdfc072ec48c348124ed59d60cf8368f83a Mon Sep 17 00:00:00 2001 From: dreamsyntax Date: Wed, 8 Apr 2020 18:12:23 -0700 Subject: implement CodeDiffTool Feature Add Diff button to CodeWidget Add Code Diff Tool window for recording and differencing functions. Allows finding specific functions based on when they run. --- Source/Core/DolphinQt/Debugger/CodeDiffDialog.h | 71 +++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 Source/Core/DolphinQt/Debugger/CodeDiffDialog.h (limited to 'Source/Core/DolphinQt/Debugger/CodeDiffDialog.h') diff --git a/Source/Core/DolphinQt/Debugger/CodeDiffDialog.h b/Source/Core/DolphinQt/Debugger/CodeDiffDialog.h new file mode 100644 index 0000000000..33b1d4e108 --- /dev/null +++ b/Source/Core/DolphinQt/Debugger/CodeDiffDialog.h @@ -0,0 +1,71 @@ +// Copyright 2022 Dolphin Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include +#include +#include +#include "Common/CommonTypes.h" + +class CodeWidget; +class QLabel; +class QPushButton; +class QTableWidget; + +struct Diff +{ + u32 addr; + std::string symbol; + u32 hits; + u32 total_hits; + + bool operator<(const std::string& val) const { return symbol < val; } +}; + +class CodeDiffDialog : public QDialog +{ + Q_OBJECT + +public: + explicit CodeDiffDialog(CodeWidget* parent); + void reject() override; + +private: + void CreateWidgets(); + void ConnectWidgets(); + void ClearData(); + void ClearBlockCache(); + void OnClickItem(); + void OnRecord(bool enabled); + std::vector CalculateSymbolsFromProfile(); + void OnInclude(); + void OnExclude(); + void RemoveMissingSymbolsFromIncludes(const std::vector& symbol_diff); + void RemoveMatchingSymbolsFromIncludes(const std::vector& symbol_list); + void Update(bool include); + void InfoDisp(); + + void OnContextMenu(); + + void OnGoTop(); + void OnDelete(); + void OnSetBLR(); + + void UpdateItem(); + + QTableWidget* m_matching_results_table; + QLabel* m_exclude_size_label; + QLabel* m_include_size_label; + QPushButton* m_exclude_btn; + QPushButton* m_include_btn; + QPushButton* m_record_btn; + QPushButton* m_reset_btn; + QPushButton* m_help_btn; + CodeWidget* m_code_widget; + + std::vector m_exclude; + std::vector m_include; + bool m_failed_requirements = false; + bool m_include_active = false; +}; -- cgit v1.2.3