Chris@16: // Distributed under the Boost Software License, Version 1.0. (See Chris@16: // accompanying file LICENSE_1_0.txt or copy at Chris@16: // http://www.boost.org/LICENSE_1_0.txt) Chris@16: // (C) Copyright 2008 Anthony Williams Chris@16: #ifndef THREAD_HEAP_ALLOC_PTHREAD_HPP Chris@16: #define THREAD_HEAP_ALLOC_PTHREAD_HPP Chris@16: Chris@16: #include Chris@16: Chris@16: namespace boost Chris@16: { Chris@16: namespace detail Chris@16: { Chris@16: template Chris@16: inline T* heap_new() Chris@16: { Chris@16: return new T(); Chris@16: } Chris@16: Chris@16: #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES Chris@16: template Chris@16: inline T* heap_new(A1&& a1) Chris@16: { Chris@16: return new T(static_cast(a1)); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1&& a1,A2&& a2) Chris@16: { Chris@16: return new T(static_cast(a1),static_cast(a2)); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1&& a1,A2&& a2,A3&& a3) Chris@16: { Chris@16: return new T(static_cast(a1),static_cast(a2), Chris@16: static_cast(a3)); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1&& a1,A2&& a2,A3&& a3,A4&& a4) Chris@16: { Chris@16: return new T(static_cast(a1),static_cast(a2), Chris@16: static_cast(a3),static_cast(a4)); Chris@16: } Chris@16: #else Chris@16: template Chris@16: inline T* heap_new_impl(A1 a1) Chris@16: { Chris@16: return new T(a1); Chris@16: } Chris@16: template Chris@16: inline T* heap_new_impl(A1 a1,A2 a2) Chris@16: { Chris@16: return new T(a1,a2); Chris@16: } Chris@16: template Chris@16: inline T* heap_new_impl(A1 a1,A2 a2,A3 a3) Chris@16: { Chris@16: return new T(a1,a2,a3); Chris@16: } Chris@16: template Chris@16: inline T* heap_new_impl(A1 a1,A2 a2,A3 a3,A4 a4) Chris@16: { Chris@16: return new T(a1,a2,a3,a4); Chris@16: } Chris@16: Chris@16: template Chris@16: inline T* heap_new(A1 const& a1) Chris@16: { Chris@16: return heap_new_impl(a1); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1& a1) Chris@16: { Chris@16: return heap_new_impl(a1); Chris@16: } Chris@16: Chris@16: template Chris@16: inline T* heap_new(A1 const& a1,A2 const& a2) Chris@16: { Chris@16: return heap_new_impl(a1,a2); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1& a1,A2 const& a2) Chris@16: { Chris@16: return heap_new_impl(a1,a2); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1 const& a1,A2& a2) Chris@16: { Chris@16: return heap_new_impl(a1,a2); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1& a1,A2& a2) Chris@16: { Chris@16: return heap_new_impl(a1,a2); Chris@16: } Chris@16: Chris@16: template Chris@16: inline T* heap_new(A1 const& a1,A2 const& a2,A3 const& a3) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1& a1,A2 const& a2,A3 const& a3) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1 const& a1,A2& a2,A3 const& a3) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1& a1,A2& a2,A3 const& a3) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3); Chris@16: } Chris@16: Chris@16: template Chris@16: inline T* heap_new(A1 const& a1,A2 const& a2,A3& a3) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1& a1,A2 const& a2,A3& a3) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1 const& a1,A2& a2,A3& a3) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1& a1,A2& a2,A3& a3) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3); Chris@16: } Chris@16: Chris@16: template Chris@16: inline T* heap_new(A1 const& a1,A2 const& a2,A3 const& a3,A4 const& a4) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3,a4); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1& a1,A2 const& a2,A3 const& a3,A4 const& a4) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3,a4); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1 const& a1,A2& a2,A3 const& a3,A4 const& a4) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3,a4); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1& a1,A2& a2,A3 const& a3,A4 const& a4) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3,a4); Chris@16: } Chris@16: Chris@16: template Chris@16: inline T* heap_new(A1 const& a1,A2 const& a2,A3& a3,A4 const& a4) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3,a4); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1& a1,A2 const& a2,A3& a3,A4 const& a4) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3,a4); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1 const& a1,A2& a2,A3& a3,A4 const& a4) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3,a4); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1& a1,A2& a2,A3& a3,A4 const& a4) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3,a4); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1 const& a1,A2 const& a2,A3 const& a3,A4& a4) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3,a4); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1& a1,A2 const& a2,A3 const& a3,A4& a4) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3,a4); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1 const& a1,A2& a2,A3 const& a3,A4& a4) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3,a4); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1& a1,A2& a2,A3 const& a3,A4& a4) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3,a4); Chris@16: } Chris@16: Chris@16: template Chris@16: inline T* heap_new(A1 const& a1,A2 const& a2,A3& a3,A4& a4) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3,a4); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1& a1,A2 const& a2,A3& a3,A4& a4) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3,a4); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1 const& a1,A2& a2,A3& a3,A4& a4) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3,a4); Chris@16: } Chris@16: template Chris@16: inline T* heap_new(A1& a1,A2& a2,A3& a3,A4& a4) Chris@16: { Chris@16: return heap_new_impl(a1,a2,a3,a4); Chris@16: } Chris@16: Chris@16: #endif Chris@16: template Chris@16: inline void heap_delete(T* data) Chris@16: { Chris@16: delete data; Chris@16: } Chris@16: Chris@16: template Chris@16: struct do_heap_delete Chris@16: { Chris@16: void operator()(T* data) const Chris@16: { Chris@16: detail::heap_delete(data); Chris@16: } Chris@16: }; Chris@16: } Chris@16: } Chris@16: Chris@16: #include Chris@16: Chris@16: #endif