mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-10 01:52:28 +08:00
* gdb.python/py-prettyprint.py (_iterator): Remove exception_flag
exception. (_iterator_except): New function. (ArrayPrinter): Use _iterator function instead of local _iterator class for Python 3 compatibility. (NoStringContainerPrinter): Use _iterator_except instead of _iterator. * gdb.python/py-typeprint.exp: Use exec(open(...).read()) instead of execfile for Python 3 compatibility. * gdb.python/python.exp: Handle Python 2.4 exception traceback format in error_prompt test.
This commit is contained in:
@ -20,6 +20,14 @@ import re
|
||||
import gdb
|
||||
|
||||
def _iterator (pointer, len):
|
||||
start = pointer
|
||||
end = pointer + len
|
||||
while pointer != end:
|
||||
yield ('[%d]' % int (pointer - start), pointer.dereference())
|
||||
pointer += 1
|
||||
|
||||
# Same as _iterator but can be told to raise an exception.
|
||||
def _iterator_except (pointer, len):
|
||||
start = pointer
|
||||
end = pointer + len
|
||||
while pointer != end:
|
||||
@ -49,23 +57,7 @@ class ContainerPrinter (object):
|
||||
return _iterator(self.val['elements'], self.val['len'])
|
||||
|
||||
# Treats a container as array.
|
||||
class ArrayPrinter:
|
||||
class _iterator:
|
||||
def __init__ (self, pointer, len):
|
||||
self.start = pointer
|
||||
self.pointer = pointer
|
||||
self.end = pointer + len
|
||||
|
||||
def __iter__(self):
|
||||
return self
|
||||
|
||||
def next(self):
|
||||
if self.pointer == self.end:
|
||||
raise StopIteration
|
||||
result = self.pointer
|
||||
self.pointer = self.pointer + 1
|
||||
return ('[%d]' % int (result - self.start), result.dereference())
|
||||
|
||||
class ArrayPrinter (object):
|
||||
def __init__(self, val):
|
||||
self.val = val
|
||||
|
||||
@ -73,7 +65,7 @@ class ArrayPrinter:
|
||||
return 'array %s with %d elements' % (self.val['name'], self.val['len'])
|
||||
|
||||
def children(self):
|
||||
return self._iterator(self.val['elements'], self.val['len'])
|
||||
return _iterator(self.val['elements'], self.val['len'])
|
||||
|
||||
def display_hint (self):
|
||||
return 'array'
|
||||
@ -90,7 +82,7 @@ class NoStringContainerPrinter (object):
|
||||
return None
|
||||
|
||||
def children(self):
|
||||
return _iterator(self.val['elements'], self.val['len'])
|
||||
return _iterator_except (self.val['elements'], self.val['len'])
|
||||
|
||||
class pp_s (object):
|
||||
def __init__(self, val):
|
||||
|
Reference in New Issue
Block a user