* python/lib/gdb/types.py (deepitems): New function.

This commit is contained in:
Paul Koning 2011-10-26 15:09:40 +00:00
parent f6dd4781ef
commit 3eaf3fa296
2 changed files with 24 additions and 0 deletions

View File

@ -1,3 +1,7 @@
2011-10-26 Paul Koning <paul_koning@dell.com>
* python/lib/gdb/types.py (deepitems): New function.
2011-10-25 Paul Koning <paul_koning@dell.com>
PR python/13327

View File

@ -89,3 +89,23 @@ def make_enum_dict(enum_type):
# The enum's value is stored in "bitpos".
enum_dict[field.name] = field.bitpos
return enum_dict
def deepitems (type_):
"""Return an iterator that recursively traverses anonymous fields.
Arguments:
type_: The type to traverse. It should be one of
gdb.TYPE_CODE_STRUCT or gdb.TYPE_CODE_UNION.
Returns:
an iterator similar to gdb.Type.iteritems(), i.e., it returns
pairs of key, value, but for any anonymous struct or union
field that field is traversed recursively, depth-first.
"""
for k, v in type_.iteritems ():
if k:
yield k, v
else:
for i in deepitems (v.type):
yield i