From 1eb507afbda5c4196225c98bbfdab02fd412e76a Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 29 Jan 2015 13:25:35 +0100 Subject: [PATCH] Debugger: Simplify calls to parseChildrenData Having access to the expanded inames doesn't make a difference. Change-Id: Ic833f647c2c135f213dd621e28a9be98809e0b04 Reviewed-by: Christian Stenger Reviewed-by: David Schulz --- src/plugins/debugger/cdb/cdbengine.cpp | 2 +- src/plugins/debugger/gdb/gdbengine.cpp | 2 +- src/plugins/debugger/lldb/lldbengine.cpp | 2 +- src/plugins/debugger/pdb/pdbengine.cpp | 2 +- src/plugins/debugger/watchdata.cpp | 23 ++++++++--------------- src/plugins/debugger/watchdata.h | 22 +++++++++------------- src/plugins/debugger/watchhandler.cpp | 9 ++++----- src/plugins/debugger/watchhandler.h | 2 +- 8 files changed, 26 insertions(+), 38 deletions(-) diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index ab3a964c13..36b4ca5315 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -1933,7 +1933,7 @@ void CdbEngine::handleLocals(const CdbExtensionCommandPtr &reply) WatchData dummy; dummy.iname = child["iname"].data(); dummy.name = QLatin1String(child["name"].data()); - parseWatchData(handler->expandedINames(), dummy, child, &watchData); + parseWatchData(dummy, child, &watchData); } // Fix the names of watch data. for (int i =0; i < watchData.size(); ++i) { diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 223acde6d4..2dc4ce2e89 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -4968,7 +4968,7 @@ void GdbEngine::handleStackFramePython(const GdbResponse &response) name = _(child["name"].data()); WatchItem *item = new WatchItem(iname, name); - item->parseWatchData(handler->expandedINames(), child); + item->parseWatchData(child); const TypeInfo ti = m_typeInfoCache.value(item->d.type); if (ti.size) diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index d68dba73e4..cd4d78fc5d 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -1029,7 +1029,7 @@ void LldbEngine::refreshLocals(const GdbMi &vars) name = QString::fromLatin1(child["name"].data()); WatchItem *item = new WatchItem(iname, name); - item->parseWatchData(handler->expandedINames(), child); + item->parseWatchData(child); if (wname.isValid()) item->d.exp = name.toUtf8(); diff --git a/src/plugins/debugger/pdb/pdbengine.cpp b/src/plugins/debugger/pdb/pdbengine.cpp index b332b82e83..209201080c 100644 --- a/src/plugins/debugger/pdb/pdbengine.cpp +++ b/src/plugins/debugger/pdb/pdbengine.cpp @@ -808,7 +808,7 @@ void PdbEngine::handleListLocals(const PdbResponse &response) foreach (const GdbMi &child, all.children()) { WatchItem *item = new WatchItem(child["iname"].data(), _(child["name"].data())); - item->parseWatchData(handler->expandedINames(), child); + item->parseWatchData(child); handler->insertItem(item); toDelete.remove(item->d.iname); } diff --git a/src/plugins/debugger/watchdata.cpp b/src/plugins/debugger/watchdata.cpp index 9288bb341a..f30542431e 100644 --- a/src/plugins/debugger/watchdata.cpp +++ b/src/plugins/debugger/watchdata.cpp @@ -594,21 +594,16 @@ void decodeArrayData(std::function itemHandler, const W } } -void parseChildrenData(const QSet &expandedINames, - const WatchData &data0, const GdbMi &item, +void parseChildrenData(const WatchData &data0, const GdbMi &item, std::function itemHandler, - std::function &, const WatchData &, const GdbMi &)> childHandler, + std::function childHandler, std::function arrayDecoder) { //qDebug() << "HANDLE CHILDREN: " << data0.toString() << item.toString(); WatchData data = data0; - bool isExpanded = expandedINames.contains(data.iname); - if (!isExpanded) - data.setChildrenUnneeded(); + data.setChildrenUnneeded(); GdbMi children = item["children"]; - if (children.isValid() || !isExpanded) - data.setChildrenUnneeded(); data.updateType(item["type"]); GdbMi mi = item["editvalue"]; @@ -698,28 +693,26 @@ void parseChildrenData(const QSet &expandedINames, int encoding = child["keyencoded"].toInt(); data1.name = decodeData(key, encoding); } - childHandler(expandedINames, data1, child); + childHandler(data1, child); } } } -void parseWatchData(const QSet &expandedINames, - const WatchData &data0, const GdbMi &input, +void parseWatchData(const WatchData &data0, const GdbMi &input, QList *list) { auto itemHandler = [list](const WatchData &data) { list->append(data); }; - auto childHandler = [list](const QSet &expandedINames, - const WatchData &innerData, const GdbMi &innerInput) { - parseWatchData(expandedINames, innerData, innerInput, list); + auto childHandler = [list](const WatchData &innerData, const GdbMi &innerInput) { + parseWatchData(innerData, innerInput, list); }; auto arrayDecoder = [itemHandler](const WatchData &childTemplate, const QByteArray &encodedData, int encoding) { decodeArrayData(itemHandler, childTemplate, encodedData, encoding); }; - parseChildrenData(expandedINames, data0, input, itemHandler, childHandler, arrayDecoder); + parseChildrenData(data0, input, itemHandler, childHandler, arrayDecoder); } } // namespace Internal diff --git a/src/plugins/debugger/watchdata.h b/src/plugins/debugger/watchdata.h index 53169bc972..6fda3f53ff 100644 --- a/src/plugins/debugger/watchdata.h +++ b/src/plugins/debugger/watchdata.h @@ -159,19 +159,15 @@ void decodeArrayData(std::function itemHandler, const QByteArray &rawData, int encoding); -void parseChildrenData(const QSet &expandedINames, - const WatchData &parent, const GdbMi &child, - std::function itemHandler, - std::function &, - const WatchData &, - const GdbMi &)> childHandler, - std::function arrayDecoder); - -void parseWatchData(const QSet &expandedINames, - const WatchData &parent, const GdbMi &child, - QList *insertions); +void parseChildrenData(const WatchData &parent, const GdbMi &child, + std::function itemHandler, + std::function childHandler, + std::function arrayDecoder); + +void parseWatchData(const WatchData &parent, const GdbMi &child, + QList *insertions); } // namespace Internal } // namespace Debugger diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index a4f5363d6a..2986ea3256 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -1928,15 +1928,14 @@ WatchModel *WatchItem::watchModel() return static_cast(model()); } -void WatchItem::parseWatchData(const QSet &expandedINames, const GdbMi &input) +void WatchItem::parseWatchData(const GdbMi &input) { auto itemHandler = [this](const WatchData &data) { d = data; }; - auto childHandler = [this](const QSet &expandedINames, - const WatchData &innerData, const GdbMi &innerInput) { + auto childHandler = [this](const WatchData &innerData, const GdbMi &innerInput) { WatchItem *item = new WatchItem(innerData); - item->parseWatchData(expandedINames, innerInput); + item->parseWatchData(innerInput); appendChild(item); }; @@ -1949,7 +1948,7 @@ void WatchItem::parseWatchData(const QSet &expandedINames, const Gdb decodeArrayData(itemAdder, childTemplate, encodedData, encoding); }; - parseChildrenData(expandedINames, d, input, itemHandler, childHandler, arrayDecoder); + parseChildrenData(d, input, itemHandler, childHandler, arrayDecoder); } } // namespace Internal diff --git a/src/plugins/debugger/watchhandler.h b/src/plugins/debugger/watchhandler.h index 4a1ba185b2..b6cafc14e9 100644 --- a/src/plugins/debugger/watchhandler.h +++ b/src/plugins/debugger/watchhandler.h @@ -75,7 +75,7 @@ public: void formatRequests(QByteArray *out) const; void showInEditorHelper(QString *contents, int depth) const; WatchItem *findItem(const QByteArray &iname); - void parseWatchData(const QSet &expandedINames, const GdbMi &input); + void parseWatchData(const GdbMi &input); public: WatchData d; -- GitLab