From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22383 invoked by alias); 11 Mar 2009 21:41:23 -0000 Mailing-List: contact archer-help@sourceware.org; run by ezmlm Sender: Precedence: bulk List-Post: List-Help: List-Subscribe: List-Id: Received: (qmail 22372 invoked by uid 22791); 11 Mar 2009 21:41:22 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_45,J_CHICKENPOX_48,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: sourceware.org To: Project Archer Subject: [archer] RFA: fix duplicate target-wide-encoding From: Tom Tromey Reply-To: Tom Tromey Date: Wed, 11 Mar 2009 21:41:00 -0000 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-SW-Source: 2009-q1/txt/msg00367.txt.bz2 The libstdc++ pretty-printer code has a target-wide-encoding parameter -- but this is also provided by the charset branch. This patch removes the python one in favor of the internal one. Jan, does this look ok for the archer branch? I assume there is no other branch it ought to go on... Tom 2009-03-11 Tom Tromey * python/lib/gdb/libstdcxx/v6/printers.py (WideEncoding): Remove. (target_wide_charset): Likewise. (StdStringPrinter.to_string): Change encoding lookup. (build_libstdcxx_dictionary): Update. diff --git a/gdb/python/lib/gdb/libstdcxx/v6/printers.py b/gdb/python/lib/gdb/libstdcxx/v6/printers.py index c0dc987..2572731 100644 --- a/gdb/python/lib/gdb/libstdcxx/v6/printers.py +++ b/gdb/python/lib/gdb/libstdcxx/v6/printers.py @@ -436,22 +436,6 @@ class StdDequeIteratorPrinter: def to_string(self): return self.val['_M_cur'].dereference() -class WideEncoding (gdb.Parameter): - """The target wide character set is the encoding used for wchar_t.""" - - set_doc = "Set the target wide character set." - show_doc = "Show the target wide character set." - - # FIXME: needs a complete method -- but does Parameter support it? - def __init__ (self): - super (WideEncoding, self).__init__ ("target-wide-charset", - gdb.COMMAND_SUPPORT, - gdb.PARAM_STRING) - # I think this is ok for most glibc locales. - self.value = 'UTF-32' - -target_wide_charset = WideEncoding() - class StdStringPrinter: "Print a std::basic_string of some kind" @@ -462,10 +446,8 @@ class StdStringPrinter: def to_string(self): # Look up the target encoding as late as possible. encoding = self.encoding - if encoding is None: - encoding = gdb.parameter('target-charset') - elif isinstance(encoding, WideEncoding): - encoding = encoding.value + if encoding[0] is '@': + encoding = gdb.parameter(encoding[1:]) return self.val['_M_dataplus']['_M_p'].string(encoding) def display_hint (self): @@ -599,8 +581,8 @@ def build_libstdcxx_dictionary (): # libstdc++ objects requiring pretty-printing. # In order from: # http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01847.html - pretty_printers_dict[re.compile('^std::basic_string$')] = lambda val: StdStringPrinter(None, val) - pretty_printers_dict[re.compile('^std::basic_string$')] = lambda val: StdStringPrinter(target_wide_charset, val) + pretty_printers_dict[re.compile('^std::basic_string$')] = lambda val: StdStringPrinter('@target-charset', val) + pretty_printers_dict[re.compile('^std::basic_string$')] = lambda val: StdStringPrinter('@target-wide-charset', val) pretty_printers_dict[re.compile('^std::basic_string$')] = lambda val: StdStringPrinter('UTF-16', val) pretty_printers_dict[re.compile('^std::basic_string$')] = lambda val: StdStringPrinter('UTF-32', val) pretty_printers_dict[re.compile('^std::bitset<.*>$')] = StdBitsetPrinter