mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-25 05:45:39 +08:00
re PR libstdc++/55041 (prettyprinting/shared_ptr & cxx11 fails on some platforms)
PR libstdc++/55041 * python/libstdcxx/v6/printers.py (Tr1UnorderedMapPrinter): Update to handle hashtable as member of unordered_map not base class. (Tr1UnorderedSetPrinter): Likewise. From-SVN: r192894
This commit is contained in:
parent
bf3f651054
commit
937b190d75
@ -1,3 +1,10 @@
|
||||
2012-10-28 Jonathan Wakely <jwakely.gcc@gmail.com>
|
||||
|
||||
PR libstdc++/55041
|
||||
* python/libstdcxx/v6/printers.py (Tr1UnorderedMapPrinter): Update
|
||||
to handle hashtable as member of unordered_map not base class.
|
||||
(Tr1UnorderedSetPrinter): Likewise.
|
||||
|
||||
2012-10-27 François Dumont <fdumont@gcc.gnu.org>
|
||||
|
||||
* include/bits/unordered_map.h (unordered_map<>): Prefer
|
||||
|
@ -633,8 +633,13 @@ class Tr1UnorderedSetPrinter:
|
||||
self.typename = typename
|
||||
self.val = val
|
||||
|
||||
def hashtable (self):
|
||||
if self.typename.startswith('std::tr1'):
|
||||
return self.val
|
||||
return self.val['_M_h']
|
||||
|
||||
def to_string (self):
|
||||
return '%s with %d elements' % (self.typename, self.val['_M_element_count'])
|
||||
return '%s with %d elements' % (self.typename, self.hashtable()['_M_element_count'])
|
||||
|
||||
@staticmethod
|
||||
def format_count (i):
|
||||
@ -642,7 +647,7 @@ class Tr1UnorderedSetPrinter:
|
||||
|
||||
def children (self):
|
||||
counter = itertools.imap (self.format_count, itertools.count())
|
||||
return itertools.izip (counter, Tr1HashtableIterator (self.val))
|
||||
return itertools.izip (counter, Tr1HashtableIterator (self.hashtable()))
|
||||
|
||||
class Tr1UnorderedMapPrinter:
|
||||
"Print a tr1::unordered_map"
|
||||
@ -651,8 +656,13 @@ class Tr1UnorderedMapPrinter:
|
||||
self.typename = typename
|
||||
self.val = val
|
||||
|
||||
def hashtable (self):
|
||||
if self.typename.startswith('std::tr1'):
|
||||
return self.val
|
||||
return self.val['_M_h']
|
||||
|
||||
def to_string (self):
|
||||
return '%s with %d elements' % (self.typename, self.val['_M_element_count'])
|
||||
return '%s with %d elements' % (self.typename, self.hashtable()['_M_element_count'])
|
||||
|
||||
@staticmethod
|
||||
def flatten (list):
|
||||
@ -671,7 +681,7 @@ class Tr1UnorderedMapPrinter:
|
||||
def children (self):
|
||||
counter = itertools.imap (self.format_count, itertools.count())
|
||||
# Map over the hash table and flatten the result.
|
||||
data = self.flatten (itertools.imap (self.format_one, Tr1HashtableIterator (self.val)))
|
||||
data = self.flatten (itertools.imap (self.format_one, Tr1HashtableIterator (self.hashtable())))
|
||||
# Zip the two iterators together.
|
||||
return itertools.izip (counter, data)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user