diff options
author | Tom Tromey <tromey@redhat.com> | 2012-02-14 20:38:39 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2012-02-14 20:38:39 +0000 |
commit | d25b1e3a80b442b145cbcd57c234393a70ec4605 (patch) | |
tree | 1fa0e0f794e19c0319ce2d56c75a4b04dfbbe30a | |
parent | 7a07ae52847ee08f47746f4b7cddd394839a3d6e (diff) | |
download | gcc-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/ChangeLog | 9 | ||||
-rw-r--r-- | libstdc++-v3/python/libstdcxx/v6/printers.py | 32 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc | 20 |
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); |