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