Commit 937b190d by Jonathan Wakely Committed by Jonathan Wakely

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
parent bf3f6510
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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment