2008-10-20 Paolo Carlini <paolo.carlini@oracle.com>
* include/tr1_impl/hashtable_policy.h (_Hash_node<>::_Hash_node<> (_Args&&...)): Add in C++0x mode. * include/tr1_impl/hashtable (_Hashtable<>::_M_allocate_node, _Hashtable<>::_M_deallocate_node): Use _M_get_Node_allocator in C++0x mode. * include/tr1_impl/hashtable (_Hashtable<>::max_size): Use Node_allocator for improved accuracy. * testsuite/tr1/6_containers/unordered_multimap/capacity/ 29134-multimap.cc: Adjust. * testsuite/tr1/6_containers/unordered_multimap/capacity/ 29134-map.cc: Likewise. * testsuite/tr1/6_containers/unordered_multimap/capacity/ 29134-multiset.cc: Adjust. * testsuite/tr1/6_containers/unordered_multimap/capacity/ 29134-set.cc: Likewise. From-SVN: r141242
This commit is contained in:
parent
c02c7cb1e3
commit
d090f47ae0
@ -1,3 +1,22 @@
|
||||
2008-10-20 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
* include/tr1_impl/hashtable_policy.h (_Hash_node<>::_Hash_node<>
|
||||
(_Args&&...)): Add in C++0x mode.
|
||||
* include/tr1_impl/hashtable (_Hashtable<>::_M_allocate_node,
|
||||
_Hashtable<>::_M_deallocate_node): Use _M_get_Node_allocator in
|
||||
C++0x mode.
|
||||
|
||||
* include/tr1_impl/hashtable (_Hashtable<>::max_size): Use
|
||||
Node_allocator for improved accuracy.
|
||||
* testsuite/tr1/6_containers/unordered_multimap/capacity/
|
||||
29134-multimap.cc: Adjust.
|
||||
* testsuite/tr1/6_containers/unordered_multimap/capacity/
|
||||
29134-map.cc: Likewise.
|
||||
* testsuite/tr1/6_containers/unordered_multimap/capacity/
|
||||
29134-multiset.cc: Adjust.
|
||||
* testsuite/tr1/6_containers/unordered_multimap/capacity/
|
||||
29134-set.cc: Likewise.
|
||||
|
||||
2008-10-19 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
* include/bits/stl_tree.h (_Rb_tree_node<>::_Rb_tree_node<>
|
||||
|
@ -296,7 +296,7 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1
|
||||
|
||||
size_type
|
||||
max_size() const
|
||||
{ return _M_get_Value_allocator().max_size(); }
|
||||
{ return _M_node_allocator.max_size(); }
|
||||
|
||||
// Observers
|
||||
key_equal
|
||||
@ -484,7 +484,11 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1
|
||||
_Node* __n = _M_node_allocator.allocate(1);
|
||||
try
|
||||
{
|
||||
#ifdef _GLIBCXX_INCLUDE_AS_CXX0X
|
||||
_M_node_allocator.construct(__n, __v);
|
||||
#else
|
||||
_M_get_Value_allocator().construct(&__n->_M_v, __v);
|
||||
#endif
|
||||
__n->_M_next = 0;
|
||||
return __n;
|
||||
}
|
||||
@ -504,7 +508,11 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1
|
||||
_H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
|
||||
_M_deallocate_node(_Node* __n)
|
||||
{
|
||||
#ifdef _GLIBCXX_INCLUDE_AS_CXX0X
|
||||
_M_node_allocator.destroy(__n);
|
||||
#else
|
||||
_M_get_Value_allocator().destroy(&__n->_M_v);
|
||||
#endif
|
||||
_M_node_allocator.deallocate(__n, 1);
|
||||
}
|
||||
|
||||
|
@ -99,6 +99,13 @@ namespace __detail
|
||||
_Value _M_v;
|
||||
std::size_t _M_hash_code;
|
||||
_Hash_node* _M_next;
|
||||
|
||||
#ifdef _GLIBCXX_INCLUDE_AS_CXX0X
|
||||
template<typename... _Args>
|
||||
_Hash_node(_Args&&... __args)
|
||||
: _M_v(std::forward<_Args>(__args)...),
|
||||
_M_hash_code(), _M_next() { }
|
||||
#endif
|
||||
};
|
||||
|
||||
template<typename _Value>
|
||||
@ -106,6 +113,13 @@ namespace __detail
|
||||
{
|
||||
_Value _M_v;
|
||||
_Hash_node* _M_next;
|
||||
|
||||
#ifdef _GLIBCXX_INCLUDE_AS_CXX0X
|
||||
template<typename... _Args>
|
||||
_Hash_node(_Args&&... __args)
|
||||
: _M_v(std::forward<_Args>(__args)...),
|
||||
_M_next() { }
|
||||
#endif
|
||||
};
|
||||
|
||||
// Local iterators, used to iterate within a bucket but not between
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
// Copyright (C) 2006, 2007, 2008 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
|
||||
@ -28,7 +28,8 @@ void test01()
|
||||
|
||||
std::tr1::unordered_map<int, int> um;
|
||||
|
||||
VERIFY( um.max_size() == um.get_allocator().max_size() );
|
||||
VERIFY( (um.max_size() == std::allocator<std::tr1::__detail::_Hash_node<
|
||||
std::pair<const int, int>, false> >().max_size()));
|
||||
}
|
||||
|
||||
int main()
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
// Copyright (C) 2006, 2007, 2008 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
|
||||
@ -28,7 +28,8 @@ void test01()
|
||||
|
||||
std::tr1::unordered_multimap<int, int> umm;
|
||||
|
||||
VERIFY( umm.max_size() == umm.get_allocator().max_size() );
|
||||
VERIFY( (umm.max_size() == std::allocator<std::tr1::__detail::_Hash_node<
|
||||
std::pair<const int, int>, false> >().max_size()) );
|
||||
}
|
||||
|
||||
int main()
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
// Copyright (C) 2006, 2007, 2008 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
|
||||
@ -28,7 +28,8 @@ void test01()
|
||||
|
||||
std::tr1::unordered_multiset<int> ums;
|
||||
|
||||
VERIFY( ums.max_size() == ums.get_allocator().max_size() );
|
||||
VERIFY( (ums.max_size() == std::allocator<std::tr1::__detail::_Hash_node<
|
||||
int, false> >().max_size()) );
|
||||
}
|
||||
|
||||
int main()
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
// Copyright (C) 2006, 2007, 2008 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
|
||||
@ -28,7 +28,8 @@ void test01()
|
||||
|
||||
std::tr1::unordered_set<int> us;
|
||||
|
||||
VERIFY( us.max_size() == us.get_allocator().max_size() );
|
||||
VERIFY( (us.max_size() == std::allocator<std::tr1::__detail::_Hash_node<
|
||||
int, false> >().max_size()) );
|
||||
}
|
||||
|
||||
int main()
|
||||
|
Loading…
Reference in New Issue
Block a user