2012-12-06 Jens Elmenthaler <jens.elmenthaler@advantest.com>
PR mi/14741: * mi/mi-cmd-var.c (varobj_update_one): Take value of attribute "dynamic" and "displayhint" from printed child, not the root variable. * gdb.python/py-mi.exp: Correct expected results for attribute "dynamic" returned by -var-update. Add test case for correct handling of "diplayhint" for children of dynamic varobjs. * gdb.python/py-prettyprint.c (set_itme): New function. (bug_14741) New function. (main) Add call to bug_14741(). * gdb.python/py-prettyprint.py (class ArrayPrinter): New class.
This commit is contained in:
parent
cd6fa7fd88
commit
731145cb17
6 changed files with 92 additions and 5 deletions
|
@ -54,6 +54,36 @@ class ContainerPrinter:
|
|||
def children(self):
|
||||
return self._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())
|
||||
|
||||
def __init__(self, val):
|
||||
self.val = val
|
||||
|
||||
def to_string(self):
|
||||
return 'array %s with %d elements' % (self.val['name'], self.val['len'])
|
||||
|
||||
def children(self):
|
||||
return self._iterator(self.val['elements'], self.val['len'])
|
||||
|
||||
def display_hint (self):
|
||||
return 'array'
|
||||
|
||||
# Flag to make NoStringContainerPrinter throw an exception.
|
||||
exception_flag = False
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue