solenv/gdb/libreoffice/cppu.py | 5 --- solenv/gdb/libreoffice/sw.py | 62 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 4 deletions(-)
New commits: commit 2ffa67f785bc82cb581daadf0c982dc1990bd17d Author: Miklos Vajna <[email protected]> Date: Tue Apr 9 09:25:37 2013 +0200 gdb: pretty-printers for sw::mark::IMark, sw::UnoImplPtr and SwXTextRange Change-Id: I09b9e5a64b1b2630dbccdd9cf4392376b955dbdd diff --git a/solenv/gdb/libreoffice/sw.py b/solenv/gdb/libreoffice/sw.py index 532f1c5..1a06139 100644 --- a/solenv/gdb/libreoffice/sw.py +++ b/solenv/gdb/libreoffice/sw.py @@ -99,6 +99,64 @@ class SwRectPrinter(object): children = [ ( 'point', point), ( 'size', size ) ] return children.__iter__() +class SwIMarkPrinter(object): + '''Prints sw::mark::IMark.''' + + 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) == "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 SwXTextRangeImplPrinter(object): + '''Prints SwXTextRange::Impl.''' + + def __init__(self, typename, value): + self.typename = typename + self.value = value + + def to_string(self): + return "%s" % (self.typename) + + def children(self): + mark = self.value['m_pMark'].dereference() + children = [('mark', mark)] + return children.__iter__() + +class SwUnoImplPtrPrinter(object): + """Prints sw::UnoImplPtr""" + + def __init__(self, typename, value): + self.typename = typename + self.value = value + + def to_string(self): + if self.value['m_p']: + return "%s %s" % (self.typename, self.value['m_p'].dereference()) + else: + return "empty %s" % (self.typename,) + +class SwXTextRangePrinter(object): + '''Prints SwXTextRange.''' + + def __init__(self, typename, value): + self.typename = typename + self.value = value + + def to_string(self): + return "%s %s" % (self.typename, self.value['m_pImpl']) + class BigPtrArrayPrinter(object): '''Prints BigPtrArray.''' @@ -222,6 +280,10 @@ def build_pretty_printers(): printer.add('SwIndex', SwIndexPrinter) printer.add('SwPaM', SwPaMPrinter) printer.add('SwRect', SwRectPrinter) + printer.add('sw::mark::IMark', SwIMarkPrinter) + printer.add('SwXTextRange::Impl', SwXTextRangeImplPrinter) + printer.add('sw::UnoImplPtr', SwUnoImplPtrPrinter) + printer.add('SwXTextRange', SwXTextRangePrinter) def register_pretty_printers(obj): printing.register_pretty_printer(printer, obj) commit 6879db2101f8db185b6eee6bfad755347b28c363 Author: Miklos Vajna <[email protected]> Date: Tue Apr 9 09:24:30 2013 +0200 gdb: get UnoReferencePrinter work again Change-Id: I07d6a24f5c94a115d38ccffde26725b668dab430 diff --git a/solenv/gdb/libreoffice/cppu.py b/solenv/gdb/libreoffice/cppu.py index dd5ff2d..83c4bff 100644 --- a/solenv/gdb/libreoffice/cppu.py +++ b/solenv/gdb/libreoffice/cppu.py @@ -64,7 +64,7 @@ class UnoReferencePrinter(object): iface = self.value['_pInterface'] if iface: try: - impl = iface.cast(_itype).dereference() + impl = iface.cast(iface.dynamic_type).dereference() return '%s to %s' % (self.typename, str(impl)) except: # fallback for potential problem: @@ -74,9 +74,6 @@ class UnoReferencePrinter(object): else: return "empty %s" % self.typename - def _itype(self): - return self.value.type.template_argument(0).pointer() - class UnoSequencePrinter(object): '''Prints UNO Sequence''' _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
