2024-07-30 11:42:36 +00:00
|
|
|
// SPDX-FileCopyrightText: 2002-2024 PCSX2 Dev Team
|
|
|
|
// SPDX-License-Identifier: GPL-3.0+
|
2023-01-07 02:35:57 +00:00
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <QtCore/QAbstractTableModel>
|
2023-10-15 16:41:10 +00:00
|
|
|
#include <QtWidgets/QHeaderView>
|
2023-01-07 02:35:57 +00:00
|
|
|
|
|
|
|
#include "DebugTools/DebugInterface.h"
|
|
|
|
#include "DebugTools/MipsStackWalk.h"
|
|
|
|
|
|
|
|
class StackModel : public QAbstractTableModel
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
enum StackColumns : int
|
|
|
|
{
|
|
|
|
ENTRY = 0,
|
|
|
|
ENTRY_LABEL,
|
|
|
|
PC,
|
|
|
|
PC_OPCODE,
|
|
|
|
SP,
|
|
|
|
SIZE,
|
|
|
|
COLUMN_COUNT
|
|
|
|
};
|
|
|
|
|
2023-10-15 16:41:10 +00:00
|
|
|
static constexpr QHeaderView::ResizeMode HeaderResizeModes[StackColumns::COLUMN_COUNT] =
|
|
|
|
{
|
|
|
|
QHeaderView::ResizeMode::ResizeToContents,
|
|
|
|
QHeaderView::ResizeMode::ResizeToContents,
|
|
|
|
QHeaderView::ResizeMode::ResizeToContents,
|
|
|
|
QHeaderView::ResizeMode::Stretch,
|
|
|
|
QHeaderView::ResizeMode::ResizeToContents,
|
|
|
|
QHeaderView::ResizeMode::ResizeToContents,
|
|
|
|
};
|
|
|
|
|
2023-01-07 02:35:57 +00:00
|
|
|
explicit StackModel(DebugInterface& cpu, QObject* parent = nullptr);
|
|
|
|
|
|
|
|
int rowCount(const QModelIndex& parent = QModelIndex()) const override;
|
|
|
|
int columnCount(const QModelIndex& parent = QModelIndex()) const override;
|
|
|
|
QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
|
|
|
|
QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
|
|
|
|
|
|
|
|
void refreshData();
|
|
|
|
|
|
|
|
private:
|
|
|
|
DebugInterface& m_cpu;
|
|
|
|
std::vector<MipsStackWalk::StackFrame> m_stackFrames;
|
|
|
|
};
|