From 1eacbc98a8452723bfb675b18e3c74cf1b332c55 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Fri, 17 Apr 2020 07:30:36 +0200 Subject: [PATCH] Debugger: add dumper for Utils::Environment Change-Id: I2e80447b9b9690376a6d789c8b18d33cca22f4ab Reviewed-by: hjk --- share/qtcreator/debugger/creatortypes.py | 35 ++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/share/qtcreator/debugger/creatortypes.py b/share/qtcreator/debugger/creatortypes.py index 0bb0be0699f..07e124f8774 100644 --- a/share/qtcreator/debugger/creatortypes.py +++ b/share/qtcreator/debugger/creatortypes.py @@ -23,6 +23,8 @@ # ############################################################################ +from dumper import Children + def typeTarget(type): target = type.target() @@ -242,6 +244,39 @@ def qdump__Utils__Port(d, value): d.putPlainChildren(value) + +def qdump__Utils__Environment(d, value): + qdump__Utils__NameValueDictionary(d, value) + + +def qdump__Utils__NameValueDictionary(d, value): + dptr = d.extractPointer(value["m_values"]) + (ref, n) = d.split('ii', dptr) + d.check(0 <= n and n <= 100 * 1000 * 1000) + d.check(-1 <= ref and ref < 100000) + + d.putItemCount(n) + if d.isExpanded(): + if n > 10000: + n = 10000 + + typeCode = 'ppp@{%s}@{%s}' % ("Utils::DictKey", "QString") + + def helper(node): + (p, left, right, padding1, key, padding2, value) = d.split(typeCode, node) + if left: + for res in helper(left): + yield res + yield (key["name"], value) + if right: + for res in helper(right): + yield res + + with Children(d, n): + for (pair, i) in zip(helper(dptr + 8), range(n)): + d.putPairItem(i, pair, 'key', 'value') + + def qdump__Utf8String(d, value): d.putByteArrayValue(value['byteArray']) d.putPlainChildren(value)