diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/stdapis/boost/ptr_container/clone_allocator.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/epoc32/include/stdapis/boost/ptr_container/clone_allocator.hpp Tue Mar 16 16:12:26 2010 +0000 @@ -0,0 +1,80 @@ +// +// Boost.Pointer Container +// +// Copyright Thorsten Ottosen 2003-2005. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org/libs/ptr_container/ +// + +#ifndef BOOST_PTR_CONTAINER_CLONE_ALLOCATOR_HPP +#define BOOST_PTR_CONTAINER_CLONE_ALLOCATOR_HPP + +#include +#include +#include + +namespace boost +{ + ///////////////////////////////////////////////////////////////////////// + // Clonable concept + ///////////////////////////////////////////////////////////////////////// + + template< class T > + inline T* new_clone( const T& r ) + { + T* res = new T( r ); + BOOST_ASSERT( typeid(r) == typeid(*res) && + "Default new_clone() sliced object!" ); + return res; + } + + template< class T > + inline void delete_clone( const T* r ) + { + checked_delete( r ); + } + + ///////////////////////////////////////////////////////////////////////// + // CloneAllocator concept + ///////////////////////////////////////////////////////////////////////// + + struct heap_clone_allocator + { + template< class U > + static U* allocate_clone( const U& r ) + { + return new_clone( r ); + } + + template< class U > + static void deallocate_clone( const U* r ) + { + delete_clone( r ); + } + + }; + + + + struct view_clone_allocator + { + template< class U > + static U* allocate_clone( const U& r ) + { + return const_cast( &r ); + } + + template< class U > + static void deallocate_clone( const U* r ) + { + // do nothing + } + }; + +} // namespace 'boost' + +#endif +