#ifndef BORROWED_PTR_DWA20020601_HPP # define BORROWED_PTR_DWA20020601_HPP // Copyright David Abrahams 2002. // Distributed under 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) # include # include # include # include # include namespace boost { namespace python { namespace detail { template class borrowed { typedef T type; }; template struct is_borrowed_ptr { BOOST_STATIC_CONSTANT(bool, value = false); }; # if !defined(__MWERKS__) || __MWERKS__ > 0x3000 template struct is_borrowed_ptr*> { BOOST_STATIC_CONSTANT(bool, value = true); }; template struct is_borrowed_ptr const*> { BOOST_STATIC_CONSTANT(bool, value = true); }; template struct is_borrowed_ptr volatile*> { BOOST_STATIC_CONSTANT(bool, value = true); }; template struct is_borrowed_ptr const volatile*> { BOOST_STATIC_CONSTANT(bool, value = true); }; # else template struct is_borrowed { BOOST_STATIC_CONSTANT(bool, value = false); }; template struct is_borrowed > { BOOST_STATIC_CONSTANT(bool, value = true); }; template struct is_borrowed_ptr : is_borrowed::type> { }; # endif } template inline T* get_managed_object(detail::borrowed const volatile* p, tag_t) { return (T*)p; } }} // namespace boost::python::detail #endif // #ifndef BORROWED_PTR_DWA20020601_HPP