From cc80da536d22c2e89bcc63b6d9434b00b10bd72a Mon Sep 17 00:00:00 2001 From: hjk <hjk121@nokiamail.com> Date: Thu, 7 Nov 2013 12:26:14 +0100 Subject: [PATCH] Debugger: Move basic C-style array handling to dumper base class Just cosmetics. Function was oddly named, in an odd place. Change-Id: I8bfb33f7f41f01309f4b2be8a802d4093ae25e41 Reviewed-by: hjk <hjk121@nokiamail.com> --- share/qtcreator/debugger/dumper.py | 34 +++++++++++++++++++++++++ share/qtcreator/debugger/gdbbridge.py | 2 +- share/qtcreator/debugger/lldbbridge.py | 4 +-- share/qtcreator/debugger/stdtypes.py | 35 -------------------------- 4 files changed, 37 insertions(+), 38 deletions(-) diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index 5e9d643636d..883949af312 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -474,6 +474,40 @@ class DumperBase: self.putNumChild(0) self.currentValue = None + def putCStyleArray(self, value): + type = value.type.unqualified() + targetType = value[0].type + #self.putAddress(value.address) + self.putType(type) + self.putNumChild(1) + format = self.currentItemFormat() + isDefault = format == None and str(targetType.unqualified()) == "char" + if isDefault or format == 0 or format == 1 or format == 2: + blob = self.readMemory(self.addressOf(value), type.sizeof) + + if isDefault: + # Use Latin1 as default for char []. + self.putValue(blob, Hex2EncodedLatin1) + elif format == 0: + # Explicitly requested Latin1 formatting. + self.putValue(blob, Hex2EncodedLatin1) + elif format == 1: + # Explicitly requested UTF-8 formatting. + self.putValue(blob, Hex2EncodedUtf8) + elif format == 2: + # Explicitly requested Local 8-bit formatting. + self.putValue(blob, Hex2EncodedLocal8Bit) + else: + self.putValue("@0x%x" % self.pointerValue(value.cast(targetType.pointer()))) + + if self.currentIName in self.expandedINames: + p = self.addressOf(value) + ts = targetType.sizeof + if not self.tryPutArrayContents(targetType, p, int(type.sizeof / ts)): + with Children(self, childType=targetType, + addrBase=p, addrStep=ts): + self.putFields(value) + def putFormattedPointer(self, value): #warn("POINTER: %s" % value) if self.isNull(value): diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py index 48f8500deae..29e57d257bc 100644 --- a/share/qtcreator/debugger/gdbbridge.py +++ b/share/qtcreator/debugger/gdbbridge.py @@ -1346,7 +1346,7 @@ class Dumper(DumperBase): return if type.code == ArrayCode: - qdump____c_style_array__(self, value) + self.putCStyleArray(value) return if type.code == PointerCode: diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 6c11c740ad5..72aea3ffd32 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -912,12 +912,12 @@ class Dumper(DumperBase): # Arrays if typeClass == lldb.eTypeClassArray: - qdump____c_style_array__(self, value) + self.putCStyleArray(value) return # Vectors like char __attribute__ ((vector_size (8))) if typeClass == lldb.eTypeClassVector: - qdump____c_style_array__(self, value) + self.putCStyleArray(value) return # References diff --git a/share/qtcreator/debugger/stdtypes.py b/share/qtcreator/debugger/stdtypes.py index a6270f91421..0438585f4ca 100644 --- a/share/qtcreator/debugger/stdtypes.py +++ b/share/qtcreator/debugger/stdtypes.py @@ -29,41 +29,6 @@ from dumper import * -def qdump____c_style_array__(d, value): - type = value.type.unqualified() - targetType = value[0].type - #d.putAddress(value.address) - d.putType(type) - d.putNumChild(1) - format = d.currentItemFormat() - isDefault = format == None and str(targetType.unqualified()) == "char" - if isDefault or format == 0 or format == 1 or format == 2: - blob = d.readMemory(d.addressOf(value), type.sizeof) - - if isDefault: - # Use Latin1 as default for char []. - d.putValue(blob, Hex2EncodedLatin1) - elif format == 0: - # Explicitly requested Latin1 formatting. - d.putValue(blob, Hex2EncodedLatin1) - elif format == 1: - # Explicitly requested UTF-8 formatting. - d.putValue(blob, Hex2EncodedUtf8) - elif format == 2: - # Explicitly requested Local 8-bit formatting. - d.putValue(blob, Hex2EncodedLocal8Bit) - else: - d.putValue("@0x%x" % d.pointerValue(value.cast(targetType.pointer()))) - - if d.currentIName in d.expandedINames: - p = d.addressOf(value) - ts = targetType.sizeof - if not d.tryPutArrayContents(targetType, p, int(type.sizeof / ts)): - with Children(d, childType=targetType, - addrBase=p, addrStep=ts): - d.putFields(value) - - def qdump__std__array(d, value): size = d.numericTemplateArgument(value.type, 1) d.putItemCount(size) -- GitLab