stl_alloc.h: Deprecate all 'reallocate' memfns.

2002-06-27  Phil Edwards  <pme@gcc.gnu.org>

	* include/bits/stl_alloc.h:  Deprecate all 'reallocate' memfns.
	* docs/html/ext/howto.html:  Update allocator notes.

From-SVN: r55044
This commit is contained in:
Phil Edwards 2002-06-27 22:09:02 +00:00
parent 5ce49b4b08
commit 07a6e20be9
3 changed files with 276 additions and 245 deletions

View file

@ -1,3 +1,8 @@
2002-06-27 Phil Edwards <pme@gcc.gnu.org>
* include/bits/stl_alloc.h: Deprecate all 'reallocate' memfns.
* docs/html/ext/howto.html: Update allocator notes.
2002-06-26 Benjamin Kosnik <bkoz@redhat.com> 2002-06-26 Benjamin Kosnik <bkoz@redhat.com>
* configure.in (INTERFACE): Remove. * configure.in (INTERFACE): Remove.

View file

@ -37,7 +37,8 @@
<ul> <ul>
<li><a href="#1">Ropes and trees and hashes, oh my!</a> <li><a href="#1">Ropes and trees and hashes, oh my!</a>
<li><a href="#2">Added members and types</a> <li><a href="#2">Added members and types</a>
<li><a href="#3">Allocators</a> <li><a href="#3">Allocators (versions 3.0, 3.1, 3.2)</a>
<li><a href="#6">Allocators (version 3.3)</a>
<li><a href="#4">Compile-time checks</a> <li><a href="#4">Compile-time checks</a>
<li><a href="#5">LWG Issues</a> <li><a href="#5">LWG Issues</a>
</ul> </ul>
@ -154,7 +155,7 @@
</p> </p>
<hr> <hr>
<h2><a name="3">Allocators</a></h2> <h2><a name="3">Allocators (versions 3.0, 3.1, 3.2)</a></h2>
<p>Thread-safety, space efficiency, high speed, portability... this is a <p>Thread-safety, space efficiency, high speed, portability... this is a
mess. Where to begin? mess. Where to begin?
</p> </p>
@ -220,17 +221,18 @@
</p> </p>
<h3>Available allocators in namespace std</h3> <h3>Available allocators in namespace std</h3>
<p>First I'll describe the situation as it exists for the code which <p>First I'll describe the situation as it exists for the code which
was released in GCC 3.1. Then I'll was released in GCC 3.1 and 3.2. Then I'll describe the differences
describe the differences for 3.0.x, which will not change much in for 3.0. The allocator classes also have source documentation,
this respect. which is described <a href="../documentation.html#4">here</a> (you
will need to retrieve the maintainer-level docs, as almost none of
these entities are in the ISO standard).
</p> </p>
<p>As a general rule of thumb, users are not allowed to use names which <p>As a general rule of thumb, users are not allowed to use names which
begin with an underscore. This means that to be portable between begin with an underscore. This means that to be portable between
compilers, none of the following may be used in your program directly. compilers, none of the following may be used in your program directly.
(If you decide to be unportable, then you're free do do what you want, (If you decide to be unportable, then you're free do do what you want,
but it's not our fault if stuff breaks.) They are presented here for but it's not our fault if stuff breaks.) They are presented here for
information for maintainers and contributors in addition to users, but information for maintainers and contributors in addition to users.
we will probably make them available for users in 3.2 somehow.
</p> </p>
<p>These classes are always available: <p>These classes are always available:
<ul> <ul>
@ -301,7 +303,7 @@
<li><code>__single_client_alloc</code> are all typedef'd to <li><code>__single_client_alloc</code> are all typedef'd to
<code>__malloc_alloc_template</code>. <code>__malloc_alloc_template</code>.
<li><code>__default_alloc_template</code> is no longer available. <li><code>__default_alloc_template</code> is no longer available.
At all. Anywhere. <!-- might change? --> At all. Anywhere.
</ol> </ol>
</p> </p>
<h3>Writing your own allocators</h3> <h3>Writing your own allocators</h3>
@ -359,7 +361,13 @@
can affect the 3.0.x allocators. Do not use them. Those macros have can affect the 3.0.x allocators. Do not use them. Those macros have
been completely removed for 3.1. been completely removed for 3.1.
</p> </p>
<p>More notes as we remember them... <p>Return <a href="#top">to top of page</a> or
<a href="../faq/index.html">to the FAQ</a>.
</p>
<hr>
<h2><a name="6">Allocators (version 3.3)</a></h2>
<p>Changes are coming...
</p> </p>
<p>Return <a href="#top">to top of page</a> or <p>Return <a href="#top">to top of page</a> or
<a href="../faq/index.html">to the FAQ</a>. <a href="../faq/index.html">to the FAQ</a>.
@ -540,6 +548,7 @@
</dl></p> </dl></p>
<p>Return <a href="#top">to top of page</a> or <p>Return <a href="#top">to top of page</a> or
<a href="../faq/index.html">to the FAQ</a>. <a href="../faq/index.html">to the FAQ</a>.
</p>
<!-- ####################################################### --> <!-- ####################################################### -->

View file

@ -74,6 +74,10 @@
* into a "standard" one. * into a "standard" one.
* @endif * @endif
* *
* @note The @c reallocate member functions have been deprecated for 3.2
* and will be removed in 3.3. You must define @c _GLIBCPP_DEPRECATED
* to make this visible in 3.2; see c++config.h.
*
* The canonical description of these classes is in docs/html/ext/howto.html * The canonical description of these classes is in docs/html/ext/howto.html
* or online at http://gcc.gnu.org/onlinedocs/libstdc++/ext/howto.html#3 * or online at http://gcc.gnu.org/onlinedocs/libstdc++/ext/howto.html#3
*/ */
@ -122,7 +126,9 @@ namespace std
{ {
private: private:
static void* _S_oom_malloc(size_t); static void* _S_oom_malloc(size_t);
#ifdef _GLIBCPP_DEPRECATED
static void* _S_oom_realloc(void*, size_t); static void* _S_oom_realloc(void*, size_t);
#endif
static void (* __malloc_alloc_oom_handler)(); static void (* __malloc_alloc_oom_handler)();
public: public:
@ -138,6 +144,7 @@ namespace std
deallocate(void* __p, size_t /* __n */) deallocate(void* __p, size_t /* __n */)
{ free(__p); } { free(__p); }
#ifdef _GLIBCPP_DEPRECATED
static void* static void*
reallocate(void* __p, size_t /* old_sz */, size_t __new_sz) reallocate(void* __p, size_t /* old_sz */, size_t __new_sz)
{ {
@ -146,6 +153,7 @@ namespace std
__result = _S_oom_realloc(__p, __new_sz); __result = _S_oom_realloc(__p, __new_sz);
return __result; return __result;
} }
#endif
static void (* __set_malloc_handler(void (*__f)()))() static void (* __set_malloc_handler(void (*__f)()))()
{ {
@ -161,7 +169,8 @@ namespace std
template<int __inst> template<int __inst>
void* void*
__malloc_alloc_template<__inst>::_S_oom_malloc(size_t __n) __malloc_alloc_template<__inst>::
_S_oom_malloc(size_t __n)
{ {
void (* __my_malloc_handler)(); void (* __my_malloc_handler)();
void* __result; void* __result;
@ -178,6 +187,7 @@ namespace std
} }
} }
#ifdef _GLIBCPP_DEPRECATED
template<int __inst> template<int __inst>
void* void*
__malloc_alloc_template<__inst>:: __malloc_alloc_template<__inst>::
@ -197,6 +207,7 @@ namespace std
return(__result); return(__result);
} }
} }
#endif
// Determines the underlying allocator choice for the node allocator. // Determines the underlying allocator choice for the node allocator.
@ -278,6 +289,7 @@ namespace std
_Alloc::deallocate(__real_p, __n + (int) _S_extra); _Alloc::deallocate(__real_p, __n + (int) _S_extra);
} }
#ifdef _GLIBCPP_DEPRECATED
static void* static void*
reallocate(void* __p, size_t __old_sz, size_t __new_sz) reallocate(void* __p, size_t __old_sz, size_t __new_sz)
{ {
@ -289,6 +301,7 @@ namespace std
*(size_t*)__result = __new_sz; *(size_t*)__result = __new_sz;
return __result + (int) _S_extra; return __result + (int) _S_extra;
} }
#endif
}; };
@ -429,8 +442,10 @@ namespace std
} }
} }
#ifdef _GLIBCPP_DEPRECATED
static void* static void*
reallocate(void* __p, size_t __old_sz, size_t __new_sz); reallocate(void* __p, size_t __old_sz, size_t __new_sz);
#endif
}; };
@ -560,6 +575,7 @@ namespace std
} }
#ifdef _GLIBCPP_DEPRECATED
template<bool threads, int inst> template<bool threads, int inst>
void* void*
__default_alloc_template<threads, inst>:: __default_alloc_template<threads, inst>::
@ -578,6 +594,7 @@ namespace std
deallocate(__p, __old_sz); deallocate(__p, __old_sz);
return(__result); return(__result);
} }
#endif
template<bool __threads, int __inst> template<bool __threads, int __inst>
_STL_mutex_lock _STL_mutex_lock