Kaydet (Commit) 218bd97b authored tarafından Michael Stahl's avatar Michael Stahl

gdb pretty printers: fix the sw::mark::IMark and SwModify printers

If these are called on a value that is of a different type than what is
checked in the children() method, nothing is printed except exceptions
about non-existent _iterator.

GDB can figure out the dynamic type itself and call the pretty printer
only if it's actually a UnoMark so don't register it for IMark.

Same thing for SwUnoCrsr, there is already a class for it.

Change-Id: I00238f1e3f01741d607eec9d47671302b858b965
üst 7f09e688
...@@ -89,8 +89,8 @@ class SwRectPrinter(object): ...@@ -89,8 +89,8 @@ class SwRectPrinter(object):
children = [ ( 'point', point), ( 'size', size ) ] children = [ ( 'point', point), ( 'size', size ) ]
return children.__iter__() return children.__iter__()
class SwIMarkPrinter(object): class SwUnoMarkPrinter(object):
'''Prints sw::mark::IMark.''' '''Prints sw::mark::UnoMark.'''
def __init__(self, typename, value): def __init__(self, typename, value):
self.typename = typename self.typename = typename
...@@ -100,31 +100,11 @@ class SwIMarkPrinter(object): ...@@ -100,31 +100,11 @@ class SwIMarkPrinter(object):
return "%s" % (self.typename) return "%s" % (self.typename)
def children(self): def children(self):
if str(self.value.dynamic_type) == "sw::mark::UnoMark": unoMark = self.value.cast(self.value.dynamic_type)
unoMark = self.value.cast(self.value.dynamic_type) pos1 = unoMark['m_pPos1']
pos1 = unoMark['m_pPos1'] pos2 = unoMark['m_pPos2']
pos2 = unoMark['m_pPos2'] children = [ ( 'pos1', pos1), ( 'pos2', pos2 ) ]
children = [ ( 'pos1', pos1), ( 'pos2', pos2 ) ] return children.__iter__()
return children.__iter__()
else:
return self._iterator(self.value)
class SwModifyPrinter(object):
'''Prints SwModify.'''
def __init__(self, typename, value):
self.typename = typename
self.value = value
def to_string(self):
return "%s" % (self.typename)
def children(self):
if str(self.value.dynamic_type) == "SwUnoCrsr":
unoCrsr = self.value.cast(self.value.dynamic_type)
return SwUnoCrsrPrinter(self.typename, unoCrsr).children()
else:
return self._iterator(self.value)
class SwXTextRangeImplPrinter(object): class SwXTextRangeImplPrinter(object):
'''Prints SwXTextRange::Impl.''' '''Prints SwXTextRange::Impl.'''
...@@ -313,11 +293,10 @@ def build_pretty_printers(): ...@@ -313,11 +293,10 @@ def build_pretty_printers():
printer.add('SwPaM', SwPaMPrinter) printer.add('SwPaM', SwPaMPrinter)
printer.add('SwUnoCrsr', SwUnoCrsrPrinter) printer.add('SwUnoCrsr', SwUnoCrsrPrinter)
printer.add('SwRect', SwRectPrinter) printer.add('SwRect', SwRectPrinter)
printer.add('sw::mark::IMark', SwIMarkPrinter) printer.add('sw::mark::UnoMark', SwUnoMarkPrinter)
printer.add('SwXTextRange::Impl', SwXTextRangeImplPrinter) printer.add('SwXTextRange::Impl', SwXTextRangeImplPrinter)
printer.add('sw::UnoImplPtr', SwUnoImplPtrPrinter) printer.add('sw::UnoImplPtr', SwUnoImplPtrPrinter)
printer.add('SwXTextRange', SwXTextRangePrinter) printer.add('SwXTextRange', SwXTextRangePrinter)
printer.add('SwModify', SwModifyPrinter)
printer.add('SwXTextCursor::Impl', SwXTextCursorImplPrinter) printer.add('SwXTextCursor::Impl', SwXTextCursorImplPrinter)
printer.add('SwXTextCursor', SwXTextCursorPrinter) printer.add('SwXTextCursor', SwXTextCursorPrinter)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment