diff options
author | Benjamin Kosnik <bkoz@gcc.gnu.org> | 2000-04-21 20:33:34 +0000 |
---|---|---|
committer | Benjamin Kosnik <bkoz@gcc.gnu.org> | 2000-04-21 20:33:34 +0000 |
commit | b2dad0e3727cadca78d4c2cc51596d1ef1bf0946 (patch) | |
tree | e72cc26bb321e8bf90f4e68330674848db54eddf /libstdc++-v3/bits/stl_construct.h | |
parent | 051d082b263958a8524d91066f5c481b9e048bfd (diff) | |
download | gcc-b2dad0e3727cadca78d4c2cc51596d1ef1bf0946.zip gcc-b2dad0e3727cadca78d4c2cc51596d1ef1bf0946.tar.gz gcc-b2dad0e3727cadca78d4c2cc51596d1ef1bf0946.tar.bz2 |
libstdc++-v3: New directory.
2000-04-21 Benjamin Kosnik <bkoz@redhat.com>
* libstdc++-v3: New directory.
From-SVN: r33317
Diffstat (limited to 'libstdc++-v3/bits/stl_construct.h')
-rw-r--r-- | libstdc++-v3/bits/stl_construct.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/libstdc++-v3/bits/stl_construct.h b/libstdc++-v3/bits/stl_construct.h new file mode 100644 index 0000000..b77bf15 --- /dev/null +++ b/libstdc++-v3/bits/stl_construct.h @@ -0,0 +1,90 @@ +/* + * + * 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,1997 + * 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. + */ + +/* NOTE: This is an internal header file, included by other STL headers. + * You should not attempt to use it directly. + */ + +#ifndef _CPP_BITS_STL_CONSTRUCT_H +#define _CPP_BITS_STL_CONSTRUCT_H 1 + +#include <bits/std_new.h> + +__STL_BEGIN_NAMESPACE + +// construct and destroy. These functions are not part of the C++ standard, +// and are provided for backward compatibility with the HP STL. + +template <class _Tp> +inline void destroy(_Tp* __pointer) { + __pointer->_Tp::~_Tp(); +} + +template <class _Tp1, class _Tp2> +inline void construct(_Tp1* __p, const _Tp2& __value) { + new (__p) _Tp1(__value); +} + +template <class _Tp1> +inline void construct(_Tp1* __p) { + new (__p) _Tp1(); +} + +template <class _ForwardIterator> +void +__destroy_aux(_ForwardIterator __first, _ForwardIterator __last, __false_type) +{ + for ( ; __first != __last; ++__first) + destroy(&*__first); +} + +template <class _ForwardIterator> +inline void __destroy_aux(_ForwardIterator, _ForwardIterator, __true_type) {} + +template <class _ForwardIterator, class _Tp> +inline void +__destroy(_ForwardIterator __first, _ForwardIterator __last, _Tp*) +{ + typedef typename __type_traits<_Tp>::has_trivial_destructor + _Trivial_destructor; + __destroy_aux(__first, __last, _Trivial_destructor()); +} + +template <class _ForwardIterator> +inline void destroy(_ForwardIterator __first, _ForwardIterator __last) { + __destroy(__first, __last, __VALUE_TYPE(__first)); +} + +inline void destroy(char*, char*) {} +inline void destroy(wchar_t*, wchar_t*) {} + +__STL_END_NAMESPACE + +#endif /* _CPP_BITS_STL_CONSTRUCT_H */ + +// Local Variables: +// mode:C++ +// End: |