| 23 | } |
| 24 | |
| 25 | QVariant StackModel::data(const QModelIndex& index, int role) const |
| 26 | { |
| 27 | size_t row = static_cast<size_t>(index.row()); |
| 28 | if (row >= m_stackFrames.size()) |
| 29 | return QVariant(); |
| 30 | |
| 31 | const auto& stackFrame = m_stackFrames[row]; |
| 32 | |
| 33 | if (role == Qt::DisplayRole) |
| 34 | { |
| 35 | switch (index.column()) |
| 36 | { |
| 37 | case StackModel::ENTRY: |
| 38 | return QtUtils::FilledQStringFromValue(stackFrame.entry, 16); |
| 39 | case StackModel::ENTRY_LABEL: |
| 40 | return QString::fromStdString(m_cpu.GetSymbolGuardian().FunctionStartingAtAddress(stackFrame.entry).name); |
| 41 | case StackModel::PC: |
| 42 | return QtUtils::FilledQStringFromValue(stackFrame.pc, 16); |
| 43 | case StackModel::PC_OPCODE: |
| 44 | return m_cpu.disasm(stackFrame.pc, true).c_str(); |
| 45 | case StackModel::SP: |
| 46 | return QtUtils::FilledQStringFromValue(stackFrame.sp, 16); |
| 47 | case StackModel::SIZE: |
| 48 | return QString::number(stackFrame.stackSize); |
| 49 | } |
| 50 | } |
| 51 | else if (role == Qt::UserRole) |
| 52 | { |
| 53 | const auto& stackFrame = m_stackFrames.at(index.row()); |
| 54 | switch (index.column()) |
| 55 | { |
| 56 | case StackModel::ENTRY: |
| 57 | return stackFrame.entry; |
| 58 | case StackModel::ENTRY_LABEL: |
| 59 | return QString::fromStdString(m_cpu.GetSymbolGuardian().FunctionStartingAtAddress(stackFrame.entry).name); |
| 60 | case StackModel::PC: |
| 61 | return stackFrame.pc; |
| 62 | case StackModel::PC_OPCODE: |
| 63 | return m_cpu.disasm(stackFrame.pc, true).c_str(); |
| 64 | case StackModel::SP: |
| 65 | return stackFrame.sp; |
| 66 | case StackModel::SIZE: |
| 67 | return stackFrame.stackSize; |
| 68 | } |
| 69 | } |
| 70 | |
| 71 | return QVariant(); |
| 72 | } |
| 73 | |
| 74 | QVariant StackModel::headerData(int section, Qt::Orientation orientation, int role) const |
| 75 | { |
no test coverage detected