summaryrefslogtreecommitdiffstats
path: root/src/citra_qt/debugger/disassembler.hxx
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/citra_qt/debugger/disassembler.hxx41
1 files changed, 36 insertions, 5 deletions
diff --git a/src/citra_qt/debugger/disassembler.hxx b/src/citra_qt/debugger/disassembler.hxx
index e668bbbeb..a842da956 100644
--- a/src/citra_qt/debugger/disassembler.hxx
+++ b/src/citra_qt/debugger/disassembler.hxx
@@ -1,3 +1,4 @@
+#include <QAbstractItemModel>
#include <QDockWidget>
#include "ui_disassembler.h"
@@ -5,9 +6,41 @@
#include "common/break_points.h"
class QAction;
-class QStandardItemModel;
class EmuThread;
+class DisassemblerModel : public QAbstractItemModel
+{
+ Q_OBJECT
+
+public:
+ DisassemblerModel(QObject* parent);
+
+ QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const override;
+ QModelIndex parent(const QModelIndex& child) const override;
+ int columnCount(const QModelIndex& parent = QModelIndex()) const override;
+ int rowCount(const QModelIndex& parent = QModelIndex()) const override;
+ QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
+
+ QModelIndex IndexFromAbsoluteAddress(unsigned int address) const;
+ const BreakPoints& GetBreakPoints() const;
+
+public slots:
+ void ParseFromAddress(unsigned int address);
+ void OnSelectionChanged(const QModelIndex&);
+ void OnSetOrUnsetBreakpoint();
+ void SetNextInstruction(unsigned int address);
+
+private:
+ unsigned int base_address;
+ unsigned int code_size;
+ unsigned int program_counter;
+
+ QModelIndex selection;
+
+ // TODO: Make BreakPoints less crappy (i.e. const-correct) so that this needn't be mutable.
+ mutable BreakPoints breakpoints;
+};
+
class DisassemblerWidget : public QDockWidget
{
Q_OBJECT
@@ -18,7 +51,6 @@ public:
void Init();
public slots:
- void OnSetBreakpoint();
void OnContinue();
void OnStep();
void OnStepInto();
@@ -32,11 +64,10 @@ private:
int SelectedRow();
Ui::DockWidget disasm_ui;
- QStandardItemModel* model;
- u32 base_addr;
+ DisassemblerModel* model;
- BreakPoints* breakpoints;
+ u32 base_addr;
EmuThread& emu_thread;
};