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:
parent
5ce49b4b08
commit
07a6e20be9
3 changed files with 276 additions and 245 deletions
|
@ -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.
|
||||||
|
|
|
@ -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>
|
||||||
|
|
||||||
|
|
||||||
<!-- ####################################################### -->
|
<!-- ####################################################### -->
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue