rtems-tools/tools/gdb/python/classic_printer.py
Dhananjay Balan 0967a1b679 Refactoring
- drop _printer suffix from printer classes.
2014-08-25 09:52:40 +10:00

63 lines
1.6 KiB
Python

#
# RTEMS Classic pretty printers for GDB
#
class attribute:
def __init__(self, attribute):
''' ToDo: Verify - usage of all '''
self.attr = classic.attribute(attribute,'all')
def to_string(self):
return gdb.Value(self.attr.to_string())
class semaphore:
"""ToDo: Print a Semaphore_Control object. Print using the struct display hint
and an iterator. """
class iterator:
"""Use an iterator for each field expanded from the id so GDB output
is formatted correctly."""
def __init__(self, semaphore):
self.semaphore = semaphore
self.count = 0
def __iter__(self):
return self
def next(self):
self.count += 1
if self.count == 1:
return self.semaphore['Object']
elif self.count == 2:
attr = attribute(self.semaphore['attribute_set'],
'semaphore')
return attr.to_string()
elif self.count == 3:
return self.semaphore['Core_control']
raise StopIteration
def __init__(self, semaphore):
self.semaphore = semaphore
def to_string(self):
return ''
@staticmethod
def key(i):
if i == 0:
return 'Object'
elif i == 1:
return 'attribute_set'
elif i == 2:
return 'Core_control'
return 'bad'
def children(self):
counter = itertools.imap (self.key, itertools.count())
return itertools.izip (counter, self.iterator(self.semaphore))
def display_hint (self):
return 'struct'