mirror of
https://gcc.gnu.org/git/gcc.git
synced 2025-01-21 20:04:02 +08:00
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
This commit is contained in:
parent
b6ec437a14
commit
3b007b5d6b
@ -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...
|
||||
|
@ -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 \
|
||||
|
@ -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 \
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
86
libstdc++-v3/include/ext/rb_tree
Normal file
86
libstdc++-v3/include/ext/rb_tree
Normal file
@ -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 */
|
@ -30,6 +30,7 @@
|
||||
#include <ext/iterator>
|
||||
#include <ext/memory>
|
||||
#include <ext/numeric>
|
||||
#include <ext/rb_tree>
|
||||
#include <ext/rope>
|
||||
#include <ext/slist>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user