aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2012-02-14 20:38:39 +0000
committerTom Tromey <tromey@gcc.gnu.org>2012-02-14 20:38:39 +0000
commitd25b1e3a80b442b145cbcd57c234393a70ec4605 (patch)
tree1fa0e0f794e19c0319ce2d56c75a4b04dfbbe30a
parent7a07ae52847ee08f47746f4b7cddd394839a3d6e (diff)
downloadgcc-d25b1e3a80b442b145cbcd57c234393a70ec4605.zip
gcc-d25b1e3a80b442b145cbcd57c234393a70ec4605.tar.gz
gcc-d25b1e3a80b442b145cbcd57c234393a70ec4605.tar.bz2
cxx11.cc (main): Add new tests.
* testsuite/libstdc++-prettyprinters/cxx11.cc (main): Add new tests. * python/libstdcxx/v6/printers.py (Tr1HashtableIterator.__init__): Rewrite. (Tr1HashtableIterator.update): Remove. (Tr1HashtableIterator.next): Rewrite. From-SVN: r184233
-rw-r--r--libstdc++-v3/ChangeLog9
-rw-r--r--libstdc++-v3/python/libstdcxx/v6/printers.py32
-rw-r--r--libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc20
3 files changed, 34 insertions, 27 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index ba29465..92edfce 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,12 @@
+2012-02-14 Tom Tromey <tromey@redhat.com>
+
+ * testsuite/libstdc++-prettyprinters/cxx11.cc (main): Add new
+ tests.
+ * python/libstdcxx/v6/printers.py (Tr1HashtableIterator.__init__):
+ Rewrite.
+ (Tr1HashtableIterator.update): Remove.
+ (Tr1HashtableIterator.next): Rewrite.
+
2012-02-13 Benjamin Kosnik <bkoz@redhat.com>
* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust line numbers.
diff --git a/libstdc++-v3/python/libstdcxx/v6/printers.py b/libstdc++-v3/python/libstdcxx/v6/printers.py
index f47da61..76c54b1 100644
--- a/libstdc++-v3/python/libstdcxx/v6/printers.py
+++ b/libstdc++-v3/python/libstdcxx/v6/printers.py
@@ -610,38 +610,18 @@ class StdStringPrinter:
class Tr1HashtableIterator:
def __init__ (self, hash):
- self.count = 0
- self.n_buckets = hash['_M_element_count']
- if self.n_buckets == 0:
- self.node = False
- else:
- self.bucket = hash['_M_buckets']
- self.node = self.bucket[0]
- self.update ()
+ self.node = hash['_M_before_begin']['_M_nxt']
+ self.node_type = find_type(hash.type, '_Node').pointer()
def __iter__ (self):
return self
- def update (self):
- # If we advanced off the end of the chain, move to the next
- # bucket.
- while self.node == 0:
- self.bucket = self.bucket + 1
- self.node = self.bucket[0]
-
- # If we advanced off the end of the bucket array, then
- # we're done.
- if self.count == self.n_buckets:
- self.node = False
- else:
- self.count = self.count + 1
-
def next (self):
- if not self.node:
+ if self.node == 0:
raise StopIteration
- result = self.node.dereference()['_M_v']
- self.node = self.node.dereference()['_M_next']
- self.update ()
+ node = self.node.cast(self.node_type)
+ result = node.dereference()['_M_v']
+ self.node = node.dereference()['_M_nxt']
return result
class Tr1UnorderedSetPrinter:
diff --git a/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc b/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc
index 6915526..54b3275 100644
--- a/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc
+++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc
@@ -1,7 +1,7 @@
// { dg-do run }
// { dg-options "-std=gnu++11 -g" }
-// Copyright (C) 2011 Free Software Foundation, Inc.
+// Copyright (C) 2011, 2012 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -68,6 +68,24 @@ main()
std::unordered_multiset<int> eums;
// { dg-final { note-test eums "std::unordered_multiset with 0 elements" } }
+ std::unordered_map<int, std::string> uom;
+ uom[5] = "three";
+ uom[3] = "seven";
+// { dg-final { note-test uom {std::unordered_map with 2 elements = {[3] = "seven", [5] = "three"}} } }
+
+ std::unordered_multimap<int, std::string> uomm;
+ uomm.insert(std::pair<int, std::string> (5, "three"));
+ uomm.insert(std::pair<int, std::string> (5, "seven"));
+// { dg-final { note-test uomm {std::unordered_multimap with 2 elements = {[5] = "seven", [5] = "three"}} } }
+
+ std::unordered_set<int> uos;
+ uos.insert(5);
+// { dg-final { note-test uos {std::unordered_set with 1 elements = {[0] = 5}} } }
+
+ std::unordered_multiset<int> uoms;
+ uoms.insert(5);
+// { dg-final { note-test uoms {std::unordered_multiset with 1 elements = {[0] = 5}} } }
+
placeholder(""); // Mark SPOT
use(efl);
use(fl);