diff options
author | Michael Stahl <mstahl@redhat.com> | 2015-01-28 17:13:15 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2015-01-29 21:48:13 +0100 |
commit | 218bd97b83238496a4d2b36d0a1edaca519cdde5 (patch) | |
tree | 8f1ce779859a8f49dc571a02a100c3449e246ac4 /solenv/gdb | |
parent | 7f09e6883fd6ccfe22d337ad244f5b0d84fa1cf6 (diff) |
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
Diffstat (limited to 'solenv/gdb')
-rw-r--r-- | solenv/gdb/libreoffice/sw.py | 37 |
1 files changed, 8 insertions, 29 deletions
diff --git a/solenv/gdb/libreoffice/sw.py b/solenv/gdb/libreoffice/sw.py index 97cba136b937..71445d5b0b77 100644 --- a/solenv/gdb/libreoffice/sw.py +++ b/solenv/gdb/libreoffice/sw.py @@ -89,8 +89,8 @@ class SwRectPrinter(object): children = [ ( 'point', point), ( 'size', size ) ] return children.__iter__() -class SwIMarkPrinter(object): - '''Prints sw::mark::IMark.''' +class SwUnoMarkPrinter(object): + '''Prints sw::mark::UnoMark.''' def __init__(self, typename, value): self.typename = typename @@ -100,31 +100,11 @@ class SwIMarkPrinter(object): return "%s" % (self.typename) def children(self): - if str(self.value.dynamic_type) == "sw::mark::UnoMark": - unoMark = self.value.cast(self.value.dynamic_type) - pos1 = unoMark['m_pPos1'] - pos2 = unoMark['m_pPos2'] - children = [ ( 'pos1', pos1), ( 'pos2', pos2 ) ] - 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) + unoMark = self.value.cast(self.value.dynamic_type) + pos1 = unoMark['m_pPos1'] + pos2 = unoMark['m_pPos2'] + children = [ ( 'pos1', pos1), ( 'pos2', pos2 ) ] + return children.__iter__() class SwXTextRangeImplPrinter(object): '''Prints SwXTextRange::Impl.''' @@ -313,11 +293,10 @@ def build_pretty_printers(): printer.add('SwPaM', SwPaMPrinter) printer.add('SwUnoCrsr', SwUnoCrsrPrinter) printer.add('SwRect', SwRectPrinter) - printer.add('sw::mark::IMark', SwIMarkPrinter) + printer.add('sw::mark::UnoMark', SwUnoMarkPrinter) printer.add('SwXTextRange::Impl', SwXTextRangeImplPrinter) printer.add('sw::UnoImplPtr', SwUnoImplPtrPrinter) printer.add('SwXTextRange', SwXTextRangePrinter) - printer.add('SwModify', SwModifyPrinter) printer.add('SwXTextCursor::Impl', SwXTextCursorImplPrinter) printer.add('SwXTextCursor', SwXTextCursorPrinter) |