diff options
author | Paolo Carlini <pcarlini@unitus.it> | 2002-01-04 18:02:28 +0100 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2002-01-04 17:02:28 +0000 |
commit | 3b007b5d6bcefa3c87a920e834a7b1d0a34f38e5 (patch) | |
tree | ef4219bcfd9e1b5a7f08cc328f044c7aa65ed663 | |
parent | b6ec437a14a6a4774e07529aaeaa8879bf379011 (diff) | |
download | gcc-3b007b5d6bcefa3c87a920e834a7b1d0a34f38e5.zip gcc-3b007b5d6bcefa3c87a920e834a7b1d0a34f38e5.tar.gz gcc-3b007b5d6bcefa3c87a920e834a7b1d0a34f38e5.tar.bz2 |
stl_tree.h (rb_tree): Move to...
2002-01-04 Paolo Carlini <pcarlini@unitus.it>
* include/bits/stl_tree.h (rb_tree): Move to...
* include/ext/rb_tree: ...here, new file.
* include/Makefile.am (ext_headers): Add new file.
* include/Makefile.in: Regenerate.
* include/bits/stl_tempbuf.h (get_temporary_buffer + helper,
return_temporary_buffer, struct temporary_buffer): Move to...
* include/ext/memory: ...here.
* testsuite/ext/headers.cc: Include <ext/rb_tree>.
* include/backward/tempbuf.h: Include <ext/memory>, tweak.
* include/backward/tree.h: Include <ext/rb_tree), tweak.
From-SVN: r48538
-rw-r--r-- | libstdc++-v3/ChangeLog | 13 | ||||
-rw-r--r-- | libstdc++-v3/include/Makefile.am | 1 | ||||
-rw-r--r-- | libstdc++-v3/include/Makefile.in | 1 | ||||
-rw-r--r-- | libstdc++-v3/include/backward/tempbuf.h | 8 | ||||
-rw-r--r-- | libstdc++-v3/include/backward/tree.h | 4 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/stl_tempbuf.h | 47 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/stl_tree.h | 17 | ||||
-rw-r--r-- | libstdc++-v3/include/ext/memory | 48 | ||||
-rw-r--r-- | libstdc++-v3/include/ext/rb_tree | 86 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/ext/headers.cc | 1 |
10 files changed, 156 insertions, 70 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index bead9f7..776bbfe 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,16 @@ +2002-01-04 Paolo Carlini <pcarlini@unitus.it> + + * include/bits/stl_tree.h (rb_tree): Move to... + * include/ext/rb_tree: ...here, new file. + * include/Makefile.am (ext_headers): Add new file. + * include/Makefile.in: Regenerate. + * include/bits/stl_tempbuf.h (get_temporary_buffer + helper, + return_temporary_buffer, struct temporary_buffer): Move to... + * include/ext/memory: ...here. + * testsuite/ext/headers.cc: Include <ext/rb_tree>. + * include/backward/tempbuf.h: Include <ext/memory>, tweak. + * include/backward/tree.h: Include <ext/rb_tree), tweak. + 2002-01-03 Paolo Carlini <pcarlini@unitus.it> * include/bits/stl_numeric.h (power + helpers, iota): Move to... diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am index a4a4e44..17c4baa 100644 --- a/libstdc++-v3/include/Makefile.am +++ b/libstdc++-v3/include/Makefile.am @@ -179,6 +179,7 @@ ext_headers = \ ${ext_srcdir}/iterator \ ${ext_srcdir}/memory \ ${ext_srcdir}/numeric \ + ${ext_srcdir}/rb_tree \ ${ext_srcdir}/rope \ ${ext_srcdir}/ropeimpl.h \ ${ext_srcdir}/slist \ diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in index 46d1093..f07088c 100644 --- a/libstdc++-v3/include/Makefile.in +++ b/libstdc++-v3/include/Makefile.in @@ -309,6 +309,7 @@ ext_headers = \ ${ext_srcdir}/iterator \ ${ext_srcdir}/memory \ ${ext_srcdir}/numeric \ + ${ext_srcdir}/rb_tree \ ${ext_srcdir}/rope \ ${ext_srcdir}/ropeimpl.h \ ${ext_srcdir}/slist \ diff --git a/libstdc++-v3/include/backward/tempbuf.h b/libstdc++-v3/include/backward/tempbuf.h index eb46ea8..617cbc3 100644 --- a/libstdc++-v3/include/backward/tempbuf.h +++ b/libstdc++-v3/include/backward/tempbuf.h @@ -65,11 +65,11 @@ #include <bits/type_traits.h> #include <bits/stl_construct.h> #include <bits/stl_uninitialized.h> -#include <bits/stl_tempbuf.h> +#include <ext/memory> -using std::get_temporary_buffer; -using std::return_temporary_buffer; -using std::temporary_buffer; +using __gnu_cxx::get_temporary_buffer; +using __gnu_cxx::return_temporary_buffer; +using __gnu_cxx::temporary_buffer; #endif /* _CPP_BACKWARD_TEMPBUF_H */ diff --git a/libstdc++-v3/include/backward/tree.h b/libstdc++-v3/include/backward/tree.h index d88dbcb..f3ee652 100644 --- a/libstdc++-v3/include/backward/tree.h +++ b/libstdc++-v3/include/backward/tree.h @@ -45,9 +45,9 @@ #define _CPP_EXT_TREE 1 #include "backward_warning.h" -#include <bits/stl_tree.h> +#include <ext/rb_tree> -using std::rb_tree; +using __gnu_cxx::rb_tree; #endif // Local Variables: diff --git a/libstdc++-v3/include/bits/stl_tempbuf.h b/libstdc++-v3/include/bits/stl_tempbuf.h index 794b6ac..05565e0 100644 --- a/libstdc++-v3/include/bits/stl_tempbuf.h +++ b/libstdc++-v3/include/bits/stl_tempbuf.h @@ -64,40 +64,6 @@ namespace std { -template <class _Tp> -pair<_Tp*, ptrdiff_t> -__get_temporary_buffer(ptrdiff_t __len, _Tp*) -{ - if (__len > ptrdiff_t(INT_MAX / sizeof(_Tp))) - __len = INT_MAX / sizeof(_Tp); - - while (__len > 0) { - _Tp* __tmp = (_Tp*) malloc((size_t)__len * sizeof(_Tp)); - if (__tmp != 0) - return pair<_Tp*, ptrdiff_t>(__tmp, __len); - __len /= 2; - } - - return pair<_Tp*, ptrdiff_t>((_Tp*)0, 0); -} - -/** - * This is a mostly-useless wrapper around malloc(). -*/ -template <class _Tp> -inline pair<_Tp*, ptrdiff_t> get_temporary_buffer(ptrdiff_t __len) { - return __get_temporary_buffer(__len, (_Tp*) 0); -} - -/** - * The companion to get_temporary_buffer(). -*/ -template <class _Tp> -void return_temporary_buffer(_Tp* __p) { - free(__p); -} - - template <class _ForwardIterator, class _Tp> class _Temporary_buffer { private: @@ -161,19 +127,6 @@ private: _Temporary_buffer(const _Temporary_buffer&) {} void operator=(const _Temporary_buffer&) {} }; - -// Class temporary_buffer is not part of the standard. It is an extension. - -template <class _ForwardIterator, - class _Tp - = typename iterator_traits<_ForwardIterator>::value_type - > -struct temporary_buffer : public _Temporary_buffer<_ForwardIterator, _Tp> -{ - temporary_buffer(_ForwardIterator __first, _ForwardIterator __last) - : _Temporary_buffer<_ForwardIterator, _Tp>(__first, __last) {} - ~temporary_buffer() {} -}; } // namespace std diff --git a/libstdc++-v3/include/bits/stl_tree.h b/libstdc++-v3/include/bits/stl_tree.h index 0ef936a..5a0b948 100644 --- a/libstdc++-v3/include/bits/stl_tree.h +++ b/libstdc++-v3/include/bits/stl_tree.h @@ -1288,23 +1288,6 @@ bool _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const return true; } -// Class rb_tree is not part of the C++ standard. It is provided for -// compatibility with the HP STL. - -template <class _Key, class _Value, class _KeyOfValue, class _Compare, - class _Alloc = allocator<_Value> > -struct rb_tree : public _Rb_tree<_Key, _Value, _KeyOfValue, _Compare, _Alloc> -{ - typedef _Rb_tree<_Key, _Value, _KeyOfValue, _Compare, _Alloc> _Base; - typedef typename _Base::allocator_type allocator_type; - - rb_tree(const _Compare& __comp = _Compare(), - const allocator_type& __a = allocator_type()) - : _Base(__comp, __a) {} - - ~rb_tree() {} -}; - } // namespace std #endif /* __GLIBCPP_INTERNAL_TREE_H */ diff --git a/libstdc++-v3/include/ext/memory b/libstdc++-v3/include/ext/memory index e8b8574..84c31f0 100644 --- a/libstdc++-v3/include/ext/memory +++ b/libstdc++-v3/include/ext/memory @@ -61,8 +61,10 @@ namespace __gnu_cxx { + using std::ptrdiff_t; using std::pair; using std::__iterator_category; + using std::_Temporary_buffer; // uninitialized_copy_n (not part of the C++ standard) @@ -122,6 +124,52 @@ namespace __gnu_cxx __iterator_category(__first)); } + template <class _Tp> + pair<_Tp*, ptrdiff_t> + __get_temporary_buffer(ptrdiff_t __len, _Tp*) + { + if (__len > ptrdiff_t(INT_MAX / sizeof(_Tp))) + __len = INT_MAX / sizeof(_Tp); + + while (__len > 0) { + _Tp* __tmp = (_Tp*) std::malloc((std::size_t)__len * sizeof(_Tp)); + if (__tmp != 0) + return pair<_Tp*, ptrdiff_t>(__tmp, __len); + __len /= 2; + } + + return pair<_Tp*, ptrdiff_t>((_Tp*)0, 0); + } + + /** + * This is a mostly-useless wrapper around malloc(). + */ + template <class _Tp> + inline pair<_Tp*, ptrdiff_t> get_temporary_buffer(ptrdiff_t __len) { + return __get_temporary_buffer(__len, (_Tp*) 0); + } + + /** + * The companion to get_temporary_buffer(). + */ + template <class _Tp> + void return_temporary_buffer(_Tp* __p) { + std::free(__p); + } + + // Class temporary_buffer is not part of the standard. It is an extension. + + template <class _ForwardIterator, + class _Tp + = typename std::iterator_traits<_ForwardIterator>::value_type + > + struct temporary_buffer : public _Temporary_buffer<_ForwardIterator, _Tp> + { + temporary_buffer(_ForwardIterator __first, _ForwardIterator __last) + : _Temporary_buffer<_ForwardIterator, _Tp>(__first, __last) {} + ~temporary_buffer() {} + }; + } // namespace __gnu_cxx #endif /* _EXT_MEMORY */ diff --git a/libstdc++-v3/include/ext/rb_tree b/libstdc++-v3/include/ext/rb_tree new file mode 100644 index 0000000..103900e --- /dev/null +++ b/libstdc++-v3/include/ext/rb_tree @@ -0,0 +1,86 @@ +// rb_tree extension -*- C++ -*- + +// Copyright (C) 2002 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 +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +#ifndef _EXT_RB_TREE +#define _EXT_RB_TREE + +#pragma GCC system_header +#include <bits/stl_tree.h> + +namespace __gnu_cxx +{ +using std::_Rb_tree; +using std::allocator; + +// Class rb_tree is not part of the C++ standard. It is provided for +// compatibility with the HP STL. + +template <class _Key, class _Value, class _KeyOfValue, class _Compare, + class _Alloc = allocator<_Value> > +struct rb_tree : public _Rb_tree<_Key, _Value, _KeyOfValue, _Compare, _Alloc> +{ + typedef _Rb_tree<_Key, _Value, _KeyOfValue, _Compare, _Alloc> _Base; + typedef typename _Base::allocator_type allocator_type; + + rb_tree(const _Compare& __comp = _Compare(), + const allocator_type& __a = allocator_type()) + : _Base(__comp, __a) {} + + ~rb_tree() {} +}; + +} // namespace __gnu_cxx + +#endif /* _EXT_RB_TREE */ diff --git a/libstdc++-v3/testsuite/ext/headers.cc b/libstdc++-v3/testsuite/ext/headers.cc index f63b4ab..a2c1233 100644 --- a/libstdc++-v3/testsuite/ext/headers.cc +++ b/libstdc++-v3/testsuite/ext/headers.cc @@ -30,6 +30,7 @@ #include <ext/iterator> #include <ext/memory> #include <ext/numeric> +#include <ext/rb_tree> #include <ext/rope> #include <ext/slist> |