ComSquare
MemoryViewer.hpp
Go to the documentation of this file.
1 //
2 // Created by anonymus-raccoon on 2/17/20.
3 //
4 
5 #pragma once
6 
7 #include <QtWidgets/QMainWindow>
8 #include "ui/ui_ramView.h"
9 #include "ui/ui_gotoDialog.h"
10 #include "Ram/Ram.hpp"
11 #include "Memory/MemoryBus.hpp"
12 #include "ClosableWindow.hpp"
13 #include <memory>
14 #include <QAbstractTableModel>
15 
16 namespace ComSquare
17 {
18  class SNES;
19  namespace Debugger
20  {
22  class MemoryViewerModel : public QAbstractTableModel
23  {
24  Q_OBJECT
25  private:
27  std::reference_wrapper<Ram::Ram> _memory;
30  public:
32  void setMemory(Ram::Ram &memory);
33 
34  explicit MemoryViewerModel(Ram::Ram &memory, QObject *parent = nullptr);
35  MemoryViewerModel(const MemoryViewerModel &) = delete;
36  const MemoryViewerModel &operator=(const MemoryViewerModel &) = delete;
37  ~MemoryViewerModel() override = default;
38 
40  [[nodiscard]] int rowCount(const QModelIndex &parent) const override;
42  [[nodiscard]] int columnCount(const QModelIndex &parent) const override;
44  [[nodiscard]] QVariant data(const QModelIndex &index, int role) const override;
46  [[nodiscard]] QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
47  };
48 
50  class MemoryViewer : public QObject
51  {
52  Q_OBJECT
53  private:
61  Ui::RamView _ui;
64 
66  void _internalGoto(bool isAbsolute);
67  public:
70  unsigned switchToAddrTab(uint24_t addr);
71 
73  void changeRam(int id);
75  void gotoAddr();
77  void gotoAbsoluteAddr();
79  void focus();
80 
81  explicit MemoryViewer(SNES &snes, Memory::MemoryBus &bus);
82  MemoryViewer(const MemoryViewer &) = delete;
83  MemoryViewer &operator=(const MemoryViewer &) = delete;
84  ~MemoryViewer() override = default;
85  };
86  }
87 }
MemoryBus.hpp
ComSquare::Debugger::MemoryViewer::gotoAddr
void gotoAddr()
Create a popup asking you where you want to jump to.
Definition: MemoryViewer.cpp:112
ComSquare::Ram::Ram
Definition: Ram.hpp:14
ComSquare::Memory::MemoryBus
The memory bus is the component responsible of mapping addresses to components address and transmitti...
Definition: MemoryBus.hpp:22
ComSquare::Debugger::MemoryViewer::_window
ClosableWindow * _window
The QT window for this debugger.
Definition: MemoryViewer.hpp:55
ComSquare::Debugger::MemoryViewerModel::data
QVariant data(const QModelIndex &index, int role) const override
Return a data representing the table cell.
Definition: MemoryViewer.cpp:33
ComSquare::Debugger::MemoryViewerModel::MemoryViewerModel
MemoryViewerModel(Ram::Ram &memory, QObject *parent=nullptr)
Definition: MemoryViewer.cpp:16
ComSquare::Debugger::MemoryViewer::_snes
SNES & _snes
SNES containing all rams to view.
Definition: MemoryViewer.hpp:57
ComSquare::Debugger::MemoryViewer::_internalGoto
void _internalGoto(bool isAbsolute)
Helper function to create the goto dialog.
Definition: MemoryViewer.cpp:122
ComSquare::Debugger::MemoryViewerModel::operator=
const MemoryViewerModel & operator=(const MemoryViewerModel &)=delete
ComSquare::Debugger::MemoryViewer::gotoAbsoluteAddr
void gotoAbsoluteAddr()
Create a popup asking you where you want to jump to with the absolute mode selected.
Definition: MemoryViewer.cpp:117
ComSquare::Debugger::ClosableWindow
Definition: ClosableWindow.hpp:12
ComSquare::Debugger::MemoryViewerModel::rowCount
int rowCount(const QModelIndex &parent) const override
The number of row the table has.
Definition: MemoryViewer.cpp:21
ComSquare::Debugger::MemoryViewer::_ui
Ui::RamView _ui
The layout of the viewer.
Definition: MemoryViewer.hpp:61
ComSquare::Debugger::MemoryViewer
Class responsible of the Memory Viewer.
Definition: MemoryViewer.hpp:50
uint24_t
unsigned uint24_t
Definition: Ints.hpp:10
ComSquare::SNES
Container of all the components of the SNES.
Definition: SNES.hpp:32
ComSquare::Debugger::MemoryViewerModel::_memory
std::reference_wrapper< Ram::Ram > _memory
The ram to watch.
Definition: MemoryViewer.hpp:27
ComSquare::Debugger::MemoryViewer::changeRam
void changeRam(int id)
Callback called when a memory tab is selected.
Definition: MemoryViewer.cpp:87
ComSquare::Debugger::MemoryViewer::~MemoryViewer
~MemoryViewer() override=default
ComSquare::Debugger::MemoryViewer::switchToAddrTab
unsigned switchToAddrTab(uint24_t addr)
Select the memory tab corresponding to a 24 bit address (map the address via the bus).
Definition: MemoryViewer.cpp:153
ComSquare::Debugger::MemoryViewerModel::headerData
QVariant headerData(int section, Qt::Orientation orientation, int role) const override
Override the headers to use hex values.
Definition: MemoryViewer.cpp:43
ClosableWindow.hpp
ComSquare::Debugger::MemoryViewer::_model
MemoryViewerModel _model
The Ram visualizer model for QT.
Definition: MemoryViewer.hpp:63
ComSquare::Debugger::MemoryViewer::MemoryViewer
MemoryViewer(SNES &snes, Memory::MemoryBus &bus)
Definition: MemoryViewer.cpp:65
ComSquare::Debugger::MemoryViewer::focus
void focus()
Focus the memory viewer's window.
Definition: MemoryViewer.cpp:182
ComSquare::Debugger::MemoryViewerModel::setMemory
void setMemory(Ram::Ram &memory)
Change the ram currently watched.
Definition: MemoryViewer.cpp:58
ComSquare::Debugger::MemoryViewerModel::_headerIndentSize
int _headerIndentSize
The number of char inside the left header number.
Definition: MemoryViewer.hpp:29
ComSquare::Debugger::MemoryViewerModel
The qt model that bind the ram to the view.
Definition: MemoryViewer.hpp:22
ComSquare::Debugger::MemoryViewer::_bus
Memory::MemoryBus & _bus
The memory bus used to get the view for a given address.
Definition: MemoryViewer.hpp:59
Ram.hpp
ComSquare::Debugger::MemoryViewerModel::~MemoryViewerModel
~MemoryViewerModel() override=default
ComSquare::Debugger::MemoryViewerModel::columnCount
int columnCount(const QModelIndex &parent) const override
The number of column the table has.
Definition: MemoryViewer.cpp:26
ComSquare
Definition: APU.cpp:12
ComSquare::Debugger::MemoryViewer::operator=
MemoryViewer & operator=(const MemoryViewer &)=delete