diff options
Diffstat (limited to 'share/qtcreator/debugger/creatortypes.py')
-rw-r--r-- | share/qtcreator/debugger/creatortypes.py | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/share/qtcreator/debugger/creatortypes.py b/share/qtcreator/debugger/creatortypes.py index 0bb0be0699..71970e3498 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() @@ -88,13 +90,13 @@ def dumpLiteral(d, value): d.putValue(d.hexencode(readLiteral(d, value)), "latin1") -def qdump__Core__Id(d, value): +def qdump__Utils__Id(d, value): val = value.extractPointer() if True: if d.isMsvcTarget(): name = d.nameForCoreId(val).address() else: - name = d.parseAndEvaluate("Core::nameForId(0x%x)" % val).pointer() + name = d.parseAndEvaluate("Utils::nameForId(0x%x)" % val).pointer() d.putSimpleCharArray(name) else: d.putValue(val) @@ -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) |