diff options
author | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-03-19 21:41:15 +0000 |
---|---|---|
committer | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-03-19 21:41:15 +0000 |
commit | 1582dcc673de5e34d3d9bcd5539c8a92e967151c (patch) | |
tree | a25bde2c6975376b92832dbfd126d51967d53370 /libstdc++-v3 | |
parent | abcd1339c27a1d270eb16aee2c3ffba3e9461a37 (diff) | |
download | gcc-1582dcc673de5e34d3d9bcd5539c8a92e967151c.tar.gz |
2012-03-19 Benjamin Kosnik <bkoz@redhat.com>
* include/bits/allocator.h (std::allocator): Base class is
__allocator_base.
(uses_allocator): Add to sub-grouping.
* include/ext/new_allocator.h: Doxygen markup for tparm.
* config/allocator/bitmap_allocator_base.h: Use __allocator_base
template alias in C++11.
* config/allocator/malloc_allocator_base.h: Same.
* config/allocator/mt_allocator_base.h: Same.
* config/allocator/new_allocator_base.h: Same.
* config/allocator/pool_allocator_base.h: Same.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@185544 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 14 | ||||
-rw-r--r-- | libstdc++-v3/config/allocator/bitmap_allocator_base.h | 24 | ||||
-rw-r--r-- | libstdc++-v3/config/allocator/malloc_allocator_base.h | 24 | ||||
-rw-r--r-- | libstdc++-v3/config/allocator/mt_allocator_base.h | 24 | ||||
-rw-r--r-- | libstdc++-v3/config/allocator/new_allocator_base.h | 24 | ||||
-rw-r--r-- | libstdc++-v3/config/allocator/pool_allocator_base.h | 24 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/allocator.h | 18 | ||||
-rw-r--r-- | libstdc++-v3/include/ext/new_allocator.h | 2 |
8 files changed, 131 insertions, 23 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index a4ffc02b35a..80e6de9b0d8 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,19 @@ 2012-03-19 Benjamin Kosnik <bkoz@redhat.com> + * include/bits/allocator.h (std::allocator): Base class is + __allocator_base. + (uses_allocator): Add to sub-grouping. + * include/ext/new_allocator.h: Doxygen markup for tparm. + + * config/allocator/bitmap_allocator_base.h: Use __allocator_base + template alias in C++11. + * config/allocator/malloc_allocator_base.h: Same. + * config/allocator/mt_allocator_base.h: Same. + * config/allocator/new_allocator_base.h: Same. + * config/allocator/pool_allocator_base.h: Same. + +2012-03-19 Benjamin Kosnik <bkoz@redhat.com> + * include/ext/pb_ds/detail/pat_trie_/ constructors_destructor_fn_imps.hpp: Increment after recursion. * include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp: Convert diff --git a/libstdc++-v3/config/allocator/bitmap_allocator_base.h b/libstdc++-v3/config/allocator/bitmap_allocator_base.h index 3ae4cff6ccc..4abe615274b 100644 --- a/libstdc++-v3/config/allocator/bitmap_allocator_base.h +++ b/libstdc++-v3/config/allocator/bitmap_allocator_base.h @@ -1,6 +1,6 @@ // Base to std::allocator -*- C++ -*- -// Copyright (C) 2004, 2005, 2009, 2010 Free Software Foundation, Inc. +// Copyright (C) 2004, 2005, 2009, 2010, 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 @@ -30,8 +30,26 @@ #ifndef _GLIBCXX_CXX_ALLOCATOR_H #define _GLIBCXX_CXX_ALLOCATOR_H 1 -// Define bitmap_allocator as the base class to std::allocator. #include <ext/bitmap_allocator.h> -#define __glibcxx_base_allocator __gnu_cxx::bitmap_allocator + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::bitmap_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template<typename _Tp> + using __allocator_base = __gnu_cxx::bitmap_allocator<_Tp>; +} +#else +// Define bitmap_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::bitmap_allocator +#endif #endif diff --git a/libstdc++-v3/config/allocator/malloc_allocator_base.h b/libstdc++-v3/config/allocator/malloc_allocator_base.h index 1192b95596e..e40f424b60b 100644 --- a/libstdc++-v3/config/allocator/malloc_allocator_base.h +++ b/libstdc++-v3/config/allocator/malloc_allocator_base.h @@ -1,6 +1,6 @@ // Base to std::allocator -*- C++ -*- -// Copyright (C) 2004, 2005, 2009, 2010 Free Software Foundation, Inc. +// Copyright (C) 2004, 2005, 2009, 2010, 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 @@ -30,8 +30,26 @@ #ifndef _GLIBCXX_CXX_ALLOCATOR_H #define _GLIBCXX_CXX_ALLOCATOR_H 1 -// Define new_allocator as the base class to std::allocator. #include <ext/malloc_allocator.h> -#define __glibcxx_base_allocator __gnu_cxx::malloc_allocator + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::malloc_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template<typename _Tp> + using __allocator_base = __gnu_cxx::malloc_allocator<_Tp>; +} +#else +// Define malloc_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::malloc_allocator +#endif #endif diff --git a/libstdc++-v3/config/allocator/mt_allocator_base.h b/libstdc++-v3/config/allocator/mt_allocator_base.h index 9cd8f8a6f0d..66ab6a05245 100644 --- a/libstdc++-v3/config/allocator/mt_allocator_base.h +++ b/libstdc++-v3/config/allocator/mt_allocator_base.h @@ -1,6 +1,6 @@ // Base to std::allocator -*- C++ -*- -// Copyright (C) 2004, 2005, 2009, 2010 Free Software Foundation, Inc. +// Copyright (C) 2004, 2005, 2009, 2010, 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 @@ -30,8 +30,26 @@ #ifndef _GLIBCXX_CXX_ALLOCATOR_H #define _GLIBCXX_CXX_ALLOCATOR_H 1 -// Define mt_allocator as the base class to std::allocator. #include <ext/mt_allocator.h> -#define __glibcxx_base_allocator __gnu_cxx::__mt_alloc + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::__mt_alloc. + * + * @tparam _Tp Type of allocated object. + */ + template<typename _Tp> + using __allocator_base = __gnu_cxx::__mt_alloc<_Tp>; +} +#else +// Define __mt_alloc as the base class to std::allocator. +# define __allocator_base __gnu_cxx::__mt_alloc +#endif #endif diff --git a/libstdc++-v3/config/allocator/new_allocator_base.h b/libstdc++-v3/config/allocator/new_allocator_base.h index 6f8aef360a6..7a0b71becaf 100644 --- a/libstdc++-v3/config/allocator/new_allocator_base.h +++ b/libstdc++-v3/config/allocator/new_allocator_base.h @@ -1,6 +1,6 @@ // Base to std::allocator -*- C++ -*- -// Copyright (C) 2004, 2005, 2009, 2010 Free Software Foundation, Inc. +// Copyright (C) 2004, 2005, 2009, 2010, 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 @@ -30,8 +30,26 @@ #ifndef _GLIBCXX_CXX_ALLOCATOR_H #define _GLIBCXX_CXX_ALLOCATOR_H 1 -// Define new_allocator as the base class to std::allocator. #include <ext/new_allocator.h> -#define __glibcxx_base_allocator __gnu_cxx::new_allocator + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template<typename _Tp> + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif #endif diff --git a/libstdc++-v3/config/allocator/pool_allocator_base.h b/libstdc++-v3/config/allocator/pool_allocator_base.h index 55aec79bcdf..2fc49e2eccb 100644 --- a/libstdc++-v3/config/allocator/pool_allocator_base.h +++ b/libstdc++-v3/config/allocator/pool_allocator_base.h @@ -1,6 +1,6 @@ // Base to std::allocator -*- C++ -*- -// Copyright (C) 2004, 2005, 2009, 2010 Free Software Foundation, Inc. +// Copyright (C) 2004, 2005, 2009, 2010, 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 @@ -30,8 +30,26 @@ #ifndef _GLIBCXX_CXX_ALLOCATOR_H #define _GLIBCXX_CXX_ALLOCATOR_H 1 -// Define new_allocator as the base class to std::allocator. #include <ext/pool_allocator.h> -#define __glibcxx_base_allocator __gnu_cxx::__pool_alloc + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::__pool_alloc. + * + * @tparam _Tp Type of allocated object. + */ + template<typename _Tp> + using __allocator_base = __gnu_cxx::__pool_alloc<_Tp>; +} +#else +// Define __pool_alloc as the base class to std::allocator. +# define __allocator_base __gnu_cxx::__pool_alloc +#endif #endif diff --git a/libstdc++-v3/include/bits/allocator.h b/libstdc++-v3/include/bits/allocator.h index b985d3f5e6f..49ba0b5be4f 100644 --- a/libstdc++-v3/include/bits/allocator.h +++ b/libstdc++-v3/include/bits/allocator.h @@ -1,7 +1,7 @@ // Allocators -*- C++ -*- // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -// 2011 Free Software Foundation, Inc. +// 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 @@ -84,9 +84,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * * See http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt04ch11.html * for further details. + * + * @tparam _Tp Type of allocated object. */ template<typename _Tp> - class allocator: public __glibcxx_base_allocator<_Tp> + class allocator: public __allocator_base<_Tp> { public: typedef size_t size_type; @@ -104,7 +106,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION allocator() throw() { } allocator(const allocator& __a) throw() - : __glibcxx_base_allocator<_Tp>(__a) { } + : __allocator_base<_Tp>(__a) { } template<typename _Tp1> allocator(const allocator<_Tp1>&) throw() { } @@ -134,6 +136,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION operator!=(const allocator<_Tp>&, const allocator<_Tp>&) { return false; } + /// Declare uses_allocator so it can be specialized in <queue> etc. + template<typename, typename> + struct uses_allocator; + /** * @} */ @@ -146,7 +152,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif // Undefine. -#undef __glibcxx_base_allocator +#undef __allocator_base // To implement Option 3 of DR 431. template<typename _Alloc, bool = __is_empty(_Alloc)> @@ -206,10 +212,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { return false; } } }; - - // Declare uses_allocator so it can be specialized in <queue> etc. - template<typename, typename> - struct uses_allocator; #endif _GLIBCXX_END_NAMESPACE_VERSION diff --git a/libstdc++-v3/include/ext/new_allocator.h b/libstdc++-v3/include/ext/new_allocator.h index 0c82bd0ae90..1e4069df922 100644 --- a/libstdc++-v3/include/ext/new_allocator.h +++ b/libstdc++-v3/include/ext/new_allocator.h @@ -49,6 +49,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * This is precisely the allocator defined in the C++ Standard. * - all allocation calls operator new * - all deallocation calls operator delete + * + * @tparam _Tp Type of allocated object. */ template<typename _Tp> class new_allocator |