From 18121bf4208de4032ee999cf156062a94fac7e6a Mon Sep 17 00:00:00 2001
From: hjk <qthjk@ovi.com>
Date: Tue, 8 Jan 2013 17:49:44 +0100
Subject: [PATCH] Debugger: allow plain gdb's pretty printers to be used in
 Creator

Change-Id: If31fe1bce75bef4f4a687c51ef57381f5083814c
Reviewed-by: hjk <qthjk@ovi.com>
---
 share/qtcreator/dumper/dumper.py | 35 ++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/share/qtcreator/dumper/dumper.py b/share/qtcreator/dumper/dumper.py
index a3291bd3cc8..ae576bd683d 100644
--- a/share/qtcreator/dumper/dumper.py
+++ b/share/qtcreator/dumper/dumper.py
@@ -1948,6 +1948,41 @@ def threadnames(arg):
 registerCommand("threadnames", threadnames)
 
 
+#######################################################################
+#
+# Import plain gdb pretty printers
+#
+#######################################################################
+
+class PlainDumper:
+    def __init__(self, printer):
+        self.printer = printer
+
+    def __call__(self, d, value):
+        printer = self.printer.invoke(value)
+        lister = getattr(printer, "children", None)
+        children = [] if lister is None else list(lister())
+        d.putType(self.printer.name)
+        d.putValue(printer.to_string())
+        d.putNumChild(len(children))
+        if d.isExpanded():
+            with Children(d):
+                for child in children:
+                    d.putSubItem(child[0], child[1])
+
+def importPlainDumper(printer):
+    name = printer.name.replace("::", "__")
+    qqDumpers[name] = PlainDumper(printer)
+    qqFormats[name] = ""
+
+def importPlainDumpers(args):
+    for obj in gdb.objfiles():
+        for printers in obj.pretty_printers + gdb.pretty_printers:
+            for printer in printers.subprinters:
+                importPlainDumper(printer)
+
+registerCommand("importPlainDumpers", importPlainDumpers)
+
 
 #######################################################################
 #
-- 
GitLab