diff options
Diffstat (limited to 'share/qtcreator/debugger')
-rw-r--r-- | share/qtcreator/debugger/boosttypes.py | 9 | ||||
-rw-r--r-- | share/qtcreator/debugger/dumper.py | 7 | ||||
-rw-r--r-- | share/qtcreator/debugger/gdbbridge.py | 3 |
3 files changed, 18 insertions, 1 deletions
diff --git a/share/qtcreator/debugger/boosttypes.py b/share/qtcreator/debugger/boosttypes.py index ccd88b3864..e61d1e4bb8 100644 --- a/share/qtcreator/debugger/boosttypes.py +++ b/share/qtcreator/debugger/boosttypes.py @@ -140,3 +140,12 @@ def qdump__boost__unordered__unordered_set(d, value): yield val p = d.extractPointer(buckets + bucketCount * d.ptrSize()) d.putItems(size, children(p), maxNumChild = 10000) + + +def qdump__boost__variant(d, value): + allTypes = value.type.templateArguments() + realType = allTypes[value.split('i')[0]] + alignment = max([t.alignment() for t in allTypes]) + dummy, val = value.split('%is{%s}' % (max(4, alignment), realType.name)) + d.putItem(val) + d.putBetterType(value.type) diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index c03f07d9e9..663015e77d 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -522,6 +522,9 @@ class DumperBase: return baseType # Override in backends. def listTemplateParameters(self, typename): + return self.listTemplateParametersManually(typename) + + def listTemplateParametersManually(self, typename): targs = [] if not typename.endswith('>'): return targs @@ -573,6 +576,10 @@ class DumperBase: if item.find('.') > -1: res.append(float(item)) else: + if item.endswith('l'): + item = item[:-1] + if item.endswith('u'): + item = item[:-1] val = toInteger(item) if val > 0x80000000: val -= 0x100000000 diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py index 70c8beaad4..90b76ef61a 100644 --- a/share/qtcreator/debugger/gdbbridge.py +++ b/share/qtcreator/debugger/gdbbridge.py @@ -382,7 +382,8 @@ class Dumper(DumperBase): else: error('UNKNOWN TEMPLATE PARAMETER') pos += 1 - return targs + targs2 = self.listTemplateParametersManually(str(nativeType)) + return targs if len(targs) >= len(targs2) else targs2 def nativeTypeEnumDisplay(self, nativeType, intval): try: |