2010-06-01 Chris Moller * python/libstdcxx/v6/printers.py (StdVectorPrinter): Add detection for matrices as nested vectors. Index: libstdc++-v3/python/libstdcxx/v6/printers.py =================================================================== --- ./libstdc++-v3-python-r155978/libstdcxx/v6/printers.py (revision 159937) +++ ./libstdc++-v3-python-r155978/libstdcxx/v6/printers.py (working copy) @@ -19,6 +19,9 @@ import itertools import re +vector_sig = 'std::vector' +vector_regex = re.compile('^' + vector_sig + '<.*>$') + class StdPointerPrinter: "Print a smart pointer of some kind" @@ -186,7 +189,13 @@ % (self.typename, int (finish - start), int (end - start))) def display_hint(self): - return 'array' + itype0 = self.val.type.template_argument(0) + itag = itype0.tag + if itag and re.match(vector_regex, itag): + rc = 'matrix' + else: + rc = 'array' + return rc class StdVectorIteratorPrinter: "Print std::vector::iterator" @@ -692,7 +701,7 @@ pretty_printers_dict[re.compile('^std::set<.*>$')] = lambda val: StdSetPrinter("std::set", val) pretty_printers_dict[re.compile('^std::stack<.*>$')] = lambda val: StdStackOrQueuePrinter("std::stack", val) pretty_printers_dict[re.compile('^std::unique_ptr<.*>$')] = UniquePointerPrinter - pretty_printers_dict[re.compile('^std::vector<.*>$')] = lambda val: StdVectorPrinter("std::vector", val) + pretty_printers_dict[vector_regex] = lambda val: StdVectorPrinter(vector_sig, val) # vector # Printer registrations for classes compiled with -D_GLIBCXX_DEBUG.