summaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2012-03-19 21:41:15 +0000
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2012-03-19 21:41:15 +0000
commit1582dcc673de5e34d3d9bcd5539c8a92e967151c (patch)
treea25bde2c6975376b92832dbfd126d51967d53370 /libstdc++-v3
parentabcd1339c27a1d270eb16aee2c3ffba3e9461a37 (diff)
downloadgcc-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/ChangeLog14
-rw-r--r--libstdc++-v3/config/allocator/bitmap_allocator_base.h24
-rw-r--r--libstdc++-v3/config/allocator/malloc_allocator_base.h24
-rw-r--r--libstdc++-v3/config/allocator/mt_allocator_base.h24
-rw-r--r--libstdc++-v3/config/allocator/new_allocator_base.h24
-rw-r--r--libstdc++-v3/config/allocator/pool_allocator_base.h24
-rw-r--r--libstdc++-v3/include/bits/allocator.h18
-rw-r--r--libstdc++-v3/include/ext/new_allocator.h2
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