Skip to content

Commit

Permalink
Merge pull request #117 from malleoz/ptr_addr
Browse files Browse the repository at this point in the history
MemWatchEntry: Show address pointed to by the chain
  • Loading branch information
dreamsyntax authored Apr 26, 2024
2 parents 947839e + 9fe20f1 commit a99ea25
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 11 deletions.
13 changes: 7 additions & 6 deletions Source/GUI/MemWatcher/MemWatchModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -200,9 +200,7 @@ QVariant MemWatchModel::data(const QModelIndex& index, int role) const
}
case WATCH_COL_ADDRESS:
{
u32 address = entry->getConsoleAddress();
bool isPointer = entry->isBoundToPointer();
return getAddressString(address, isPointer);
return getAddressString(entry);
}
case WATCH_COL_VALUE:
{
Expand Down Expand Up @@ -624,14 +622,17 @@ void MemWatchModel::sortRecursive(int column, Qt::SortOrder order, MemWatchTreeN
}
}

QString MemWatchModel::getAddressString(u32 address, bool isPointer) const
QString MemWatchModel::getAddressString(const MemWatchEntry* entry) const
{
std::stringstream ss;
if (isPointer)
if (entry->isBoundToPointer())
{
ss << "P->" << std::hex << std::uppercase << address;
int level = static_cast<int>(entry->getPointerLevel());
std::string strAddress = entry->getAddressStringForPointerLevel(level);
ss << "(" << level << "*)" << std::hex << std::uppercase << strAddress;
return QString::fromStdString(ss.str());
}
u32 address = entry->getConsoleAddress();
ss << std::hex << std::uppercase << address;
return QString::fromStdString(ss.str());
}
Expand Down
2 changes: 1 addition & 1 deletion Source/GUI/MemWatcher/MemWatchModel.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ class MemWatchModel : public QAbstractItemModel
const bool readSucess = true);
bool freezeNodeValueRecursive(MemWatchTreeNode* node, const QModelIndex& parent = QModelIndex(),
const bool writeSucess = true);
QString getAddressString(u32 address, bool isPointer) const;
QString getAddressString(const MemWatchEntry* entry) const;
MemWatchTreeNode* getLeastDeepNodeFromList(const QList<MemWatchTreeNode*> nodes) const;
int getNodeDeepness(const MemWatchTreeNode* node) const;

Expand Down
4 changes: 2 additions & 2 deletions Source/MemoryWatch/MemWatchEntry.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ Common::MemOperationReturnCode MemWatchEntry::freeze()
return writeCode;
}

u32 MemWatchEntry::getAddressForPointerLevel(const int level)
u32 MemWatchEntry::getAddressForPointerLevel(const int level) const
{
if (!m_boundToPointer && level > m_pointerOffsets.size() && level > 0)
return 0;
Expand All @@ -213,7 +213,7 @@ u32 MemWatchEntry::getAddressForPointerLevel(const int level)
return address;
}

std::string MemWatchEntry::getAddressStringForPointerLevel(const int level)
std::string MemWatchEntry::getAddressStringForPointerLevel(const int level) const
{
u32 address = getAddressForPointerLevel(level);
if (address == 0)
Expand Down
4 changes: 2 additions & 2 deletions Source/MemoryWatch/MemWatchEntry.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ class MemWatchEntry

Common::MemOperationReturnCode freeze();

u32 getAddressForPointerLevel(const int level);
std::string getAddressStringForPointerLevel(const int level);
u32 getAddressForPointerLevel(const int level) const;
std::string getAddressStringForPointerLevel(const int level) const;
Common::MemOperationReturnCode readMemoryFromRAM();

std::string getStringFromMemory() const;
Expand Down

0 comments on commit a99ea25

Please sign in to comment.