From 0fc125eaee86d038abe5edfb479dc830089a69f4 Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Wed, 10 May 2006 18:37:54 +0000 Subject: [PATCH] hashtable (hashtable_iterator<>::hashtable_iterator(), [...]): Add. 2006-05-10 Paolo Carlini Peter Doerfler * include/tr1/hashtable (hashtable_iterator<>::hashtable_iterator(), hashtable_const_iterator<>::hashtable_const_iterator(), node_iterator<>::node_iterator(), node_const_iterator<>::node_const_iterator()): Add. (node_iterator<>::node_iterator(hash_node<>*), node_const_iterator<>::node_const_iterator(hash_node<>*)): Tweak, remove default. * testsuite/tr1/6_containers/unordered/hashtable/ iterators_default_constructor.c: New. Co-Authored-By: Peter Doerfler From-SVN: r113681 --- libstdc++-v3/ChangeLog | 13 ++++++++ libstdc++-v3/include/tr1/hashtable | 23 +++++++++---- .../iterators_default_constructor.cc | 32 +++++++++++++++++++ 3 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 libstdc++-v3/testsuite/tr1/6_containers/unordered/hashtable/iterators_default_constructor.cc diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index b2694b9aa7d..71c8b1e69dd 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,16 @@ +2006-05-10 Paolo Carlini + Peter Doerfler + + * include/tr1/hashtable (hashtable_iterator<>::hashtable_iterator(), + hashtable_const_iterator<>::hashtable_const_iterator(), + node_iterator<>::node_iterator(), + node_const_iterator<>::node_const_iterator()): Add. + (node_iterator<>::node_iterator(hash_node<>*), + node_const_iterator<>::node_const_iterator(hash_node<>*)): Tweak, + remove default. + * testsuite/tr1/6_containers/unordered/hashtable/ + iterators_default_constructor.c: New. + 2006-05-10 Marc Glisse * include/ext/pool_allocator.h: Add missing std:: qualifications. diff --git a/libstdc++-v3/include/tr1/hashtable b/libstdc++-v3/include/tr1/hashtable index 3b8bcef8f7d..ad34a9c9a59 100644 --- a/libstdc++-v3/include/tr1/hashtable +++ b/libstdc++-v3/include/tr1/hashtable @@ -171,8 +171,11 @@ namespace Internal typedef std::ptrdiff_t difference_type; typedef std::forward_iterator_tag iterator_category; + node_iterator() + : node_iterator_base(0) { } + explicit - node_iterator(hash_node* p = 0) + node_iterator(hash_node* p) : node_iterator_base(p) { } reference @@ -209,8 +212,11 @@ namespace Internal typedef std::ptrdiff_t difference_type; typedef std::forward_iterator_tag iterator_category; + node_const_iterator() + : node_iterator_base(0) { } + explicit - node_const_iterator(hash_node* p = 0) + node_const_iterator(hash_node* p) : node_iterator_base(p) { } node_const_iterator(const node_iterator* node, hash_node** bucket) - : m_cur_node(node), m_cur_bucket(bucket) - { } + : m_cur_node(node), m_cur_bucket(bucket) { } void incr() @@ -303,6 +308,9 @@ namespace Internal typedef std::ptrdiff_t difference_type; typedef std::forward_iterator_tag iterator_category; + hashtable_iterator() + : hashtable_iterator_base(0, 0) { } + hashtable_iterator(hash_node* p, hash_node** b) : hashtable_iterator_base(p, b) { } @@ -310,7 +318,7 @@ namespace Internal explicit hashtable_iterator(hash_node** b) : hashtable_iterator_base(*b, b) { } - + reference operator*() const { return this->m_cur_node->m_v; } @@ -345,6 +353,9 @@ namespace Internal typedef std::ptrdiff_t difference_type; typedef std::forward_iterator_tag iterator_category; + hashtable_const_iterator() + : hashtable_iterator_base(0, 0) { } + hashtable_const_iterator(hash_node* p, hash_node** b) : hashtable_iterator_base(p, b) { } @@ -352,7 +363,7 @@ namespace Internal explicit hashtable_const_iterator(hash_node** b) : hashtable_iterator_base(*b, b) { } - + hashtable_const_iterator(const hashtable_iterator& x) : hashtable_iterator_base(x.m_cur_node, x.m_cur_bucket) { } diff --git a/libstdc++-v3/testsuite/tr1/6_containers/unordered/hashtable/iterators_default_constructor.cc b/libstdc++-v3/testsuite/tr1/6_containers/unordered/hashtable/iterators_default_constructor.cc new file mode 100644 index 00000000000..17705aee04c --- /dev/null +++ b/libstdc++-v3/testsuite/tr1/6_containers/unordered/hashtable/iterators_default_constructor.cc @@ -0,0 +1,32 @@ +// { dg-do compile } + +// Copyright (C) 2006 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 +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// 6.3 Unordered associative containers + +#include + +void +test01() +{ + std::tr1::unordered_set::iterator it; + std::tr1::unordered_set::const_iterator cit; + std::tr1::unordered_set::local_iterator lit; + std::tr1::unordered_set::const_local_iterator clit; +} -- 2.30.2