diff -r 000000000000 -r bde4ae8d615e os/ossrv/ossrv_pub/boost_apis/boost/python/ptr.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/ossrv/ossrv_pub/boost_apis/boost/python/ptr.hpp Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,128 @@ +#ifndef PTR_DWA20020601_HPP +# define PTR_DWA20020601_HPP + +# include +// 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) +// +// Based on boost/ref.hpp, thus: +// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi@cs.utu.fi) +// Copyright (C) 2001 Peter Dimov + +# if _MSC_VER+0 >= 1020 +# pragma once +# endif + +# include +# include + +namespace boost { namespace python { + +template class pointer_wrapper +{ + public: + typedef Ptr type; + + explicit pointer_wrapper(Ptr x): p_(x) {} + operator Ptr() const { return p_; } + Ptr get() const { return p_; } + private: + Ptr p_; +}; + +template +inline pointer_wrapper ptr(T t) +{ + return pointer_wrapper(t); +} + +# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +template +class is_pointer_wrapper + : public mpl::false_ +{ +}; + +template +class is_pointer_wrapper > + : public mpl::true_ +{ +}; + +template +class unwrap_pointer +{ + public: + typedef T type; +}; + +template +class unwrap_pointer > +{ + public: + typedef T type; +}; +# else // no partial specialization + +}} // namespace boost::python + +#include + +namespace boost { namespace python { + +namespace detail +{ + typedef char (&yes_pointer_wrapper_t)[1]; + typedef char (&no_pointer_wrapper_t)[2]; + + no_pointer_wrapper_t is_pointer_wrapper_test(...); + + template + yes_pointer_wrapper_t is_pointer_wrapper_test(boost::type< pointer_wrapper >); + + template + struct pointer_unwrapper + { + template + struct apply + { + typedef T type; + }; + }; + + template<> + struct pointer_unwrapper + { + template + struct apply + { + typedef typename T::type type; + }; + }; +} + +template +class is_pointer_wrapper +{ + public: + BOOST_STATIC_CONSTANT( + bool, value = ( + sizeof(detail::is_pointer_wrapper_test(boost::type())) + == sizeof(detail::yes_pointer_wrapper_t))); + typedef mpl::bool_ type; +}; + +template +class unwrap_pointer + : public detail::pointer_unwrapper< + is_pointer_wrapper::value + >::template apply +{}; + +# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + +}} // namespace boost::python + +#endif // #ifndef PTR_DWA20020601_HPP