[llvm] r337747 - [gdb] Fix SmallVector pretty printer after r337514
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 23 14:33:51 PDT 2018
Author: maskray
Date: Mon Jul 23 14:33:51 2018
New Revision: 337747
URL: http://llvm.org/viewvc/llvm-project?rev=337747&view=rev
Log:
[gdb] Fix SmallVector pretty printer after r337514
Modified:
llvm/trunk/utils/gdb-scripts/prettyprinters.py
Modified: llvm/trunk/utils/gdb-scripts/prettyprinters.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/gdb-scripts/prettyprinters.py?rev=337747&r1=337746&r2=337747&view=diff
==============================================================================
--- llvm/trunk/utils/gdb-scripts/prettyprinters.py (original)
+++ llvm/trunk/utils/gdb-scripts/prettyprinters.py Mon Jul 23 14:33:51 2018
@@ -22,8 +22,7 @@ class SmallStringPrinter:
def to_string(self):
begin = self.val['BeginX']
- end = self.val['EndX']
- return escape_bytes(begin.cast(gdb.lookup_type('char').pointer()), end - begin)
+ return escape_bytes(begin.cast(gdb.lookup_type('char').pointer()), self.val['Size'])
class StringRefPrinter:
"""Print an llvm::StringRef object."""
@@ -34,44 +33,25 @@ class StringRefPrinter:
def to_string(self):
return escape_bytes(self.val['Data'], self.val['Length'])
-class SmallVectorPrinter:
+class SmallVectorPrinter(Iterator):
"""Print an llvm::SmallVector object."""
- class _iterator:
- def __init__(self, begin, end):
- self.cur = begin
- self.end = end
- self.count = 0
-
- def __iter__(self):
- return self
-
- def next(self):
- if self.cur == self.end:
- raise StopIteration
- count = self.count
- self.count = self.count + 1
- cur = self.cur
- self.cur = self.cur + 1
- return '[%d]' % count, cur.dereference()
-
- __next__ = next
-
def __init__(self, val):
self.val = val
-
- def children(self):
- t = self.val.type.template_argument(0).pointer()
- begin = self.val['BeginX'].cast(t)
- end = self.val['EndX'].cast(t)
- return self._iterator(begin, end)
+ t = val.type.template_argument(0).pointer()
+ self.begin = val['BeginX'].cast(t)
+ self.size = val['Size']
+ self.i = 0
+
+ def __next__(self):
+ if self.i == self.size:
+ raise StopIteration
+ ret = '[{}]'.format(self.i), (self.begin+self.i).dereference()
+ self.i += 1
+ return ret
def to_string(self):
- t = self.val.type.template_argument(0).pointer()
- begin = self.val['BeginX'].cast(t)
- end = self.val['EndX'].cast(t)
- capacity = self.val['CapacityX'].cast(t)
- return 'llvm::SmallVector of length %d, capacity %d' % (end - begin, capacity - begin)
+ return 'llvm::SmallVector of Size {}, Capacity {}'.format(self.size, self.val['Capacity'])
def display_hint (self):
return 'array'
More information about the llvm-commits
mailing list