From bea159a7015b9212beebf480275eb7b90245a4f0 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 29 Jan 2015 13:53:15 +0100 Subject: [PATCH] Debugger: Some parser code consolidation Change-Id: Icd3afb632cb935fdd95f13db91c9c11a3dea732e Reviewed-by: hjk --- src/plugins/debugger/gdb/gdbengine.cpp | 16 +--------------- src/plugins/debugger/lldb/lldbengine.cpp | 16 +--------------- src/plugins/debugger/pdb/pdbengine.cpp | 3 +-- src/plugins/debugger/watchhandler.cpp | 17 +++++++++++++++++ src/plugins/debugger/watchhandler.h | 1 + 5 files changed, 21 insertions(+), 32 deletions(-) diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 2dc4ce2e89b..a828b37cb7c 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -4958,25 +4958,11 @@ void GdbEngine::handleStackFramePython(const GdbResponse &response) } foreach (const GdbMi &child, data.children()) { - QByteArray iname = child["iname"].data(); - QString name; - - GdbMi wname = child["wname"]; - if (wname.isValid()) // Happens (only) for watched expressions. - name = QString::fromUtf8(QByteArray::fromHex(wname.data())); - else - name = _(child["name"].data()); - - WatchItem *item = new WatchItem(iname, name); - item->parseWatchData(child); - + WatchItem *item = new WatchItem(child); const TypeInfo ti = m_typeInfoCache.value(item->d.type); if (ti.size) item->d.size = ti.size; - if (wname.isValid()) - item->d.exp = name.toUtf8(); - handler->insertItem(item); toDelete.remove(item->d.iname); } diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index cd4d78fc5d8..82a9ef9bb74 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -1019,21 +1019,7 @@ void LldbEngine::refreshLocals(const GdbMi &vars) toDelete.insert(item->d.iname); foreach (const GdbMi &child, vars.children()) { - QByteArray iname = child["iname"].data(); - QString name; - - GdbMi wname = child["wname"]; - if (wname.isValid()) // Happens (only) for watched expressions. - name = QString::fromUtf8(QByteArray::fromHex(wname.data())); - else - name = QString::fromLatin1(child["name"].data()); - - WatchItem *item = new WatchItem(iname, name); - item->parseWatchData(child); - - if (wname.isValid()) - item->d.exp = name.toUtf8(); - + WatchItem *item = new WatchItem(child); handler->insertItem(item); toDelete.remove(item->d.iname); } diff --git a/src/plugins/debugger/pdb/pdbengine.cpp b/src/plugins/debugger/pdb/pdbengine.cpp index 209201080c8..6f3904b771c 100644 --- a/src/plugins/debugger/pdb/pdbengine.cpp +++ b/src/plugins/debugger/pdb/pdbengine.cpp @@ -807,8 +807,7 @@ void PdbEngine::handleListLocals(const PdbResponse &response) toDelete.insert(item->d.iname); foreach (const GdbMi &child, all.children()) { - WatchItem *item = new WatchItem(child["iname"].data(), _(child["name"].data())); - item->parseWatchData(child); + WatchItem *item = new WatchItem(child); handler->insertItem(item); toDelete.remove(item->d.iname); } diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index 2986ea32567..1bbc6d45e4b 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -1913,6 +1913,23 @@ WatchItem::WatchItem(const WatchData &data) { } +WatchItem::WatchItem(const GdbMi &data) + : fetchTriggered(false) +{ + d.iname = data["iname"].data(); + + GdbMi wname = data["wname"]; + if (wname.isValid()) // Happens (only) for watched expressions. + d.name = QString::fromUtf8(QByteArray::fromHex(wname.data())); + else + d.name = QString::fromLatin1(data["name"].data()); + + parseWatchData(data); + + if (wname.isValid()) + d.exp = d.name.toUtf8(); +} + WatchItem *WatchItem::parentItem() const { return dynamic_cast(parent()); diff --git a/src/plugins/debugger/watchhandler.h b/src/plugins/debugger/watchhandler.h index b6cafc14e97..46f326aaf9e 100644 --- a/src/plugins/debugger/watchhandler.h +++ b/src/plugins/debugger/watchhandler.h @@ -50,6 +50,7 @@ public: WatchItem(); WatchItem(const QByteArray &i, const QString &n); explicit WatchItem(const WatchData &data); + explicit WatchItem(const GdbMi &data); WatchItem *parentItem() const; const WatchModel *watchModel() const;