diff -r 000000000000 -r bde4ae8d615e os/ossrv/ossrv_pub/boost_apis/boost/python/back_reference.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/ossrv/ossrv_pub/boost_apis/boost/python/back_reference.hpp Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,102 @@ +// 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) +#ifndef BACK_REFERENCE_DWA2002510_HPP +# define BACK_REFERENCE_DWA2002510_HPP + +# include + +# include +# include +# include + +namespace boost { namespace python { + +template +struct back_reference +{ + private: // types + typedef typename detail::dependent::type source_t; + public: + typedef T type; + + back_reference(PyObject*, T); + source_t const& source() const; + T get() const; + private: + source_t m_source; + T m_value; +}; + +# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +template +class is_back_reference +{ + public: + BOOST_STATIC_CONSTANT(bool, value = false); +}; + +template +class is_back_reference > +{ + public: + BOOST_STATIC_CONSTANT(bool, value = true); +}; + +# else // no partial specialization + +}} // namespace boost::python + +#include + +namespace boost { namespace python { + +namespace detail +{ + typedef char (&yes_back_reference_t)[1]; + typedef char (&no_back_reference_t)[2]; + + no_back_reference_t is_back_reference_test(...); + + template + yes_back_reference_t is_back_reference_test(boost::type< back_reference >); +} + +template +class is_back_reference +{ + public: + BOOST_STATIC_CONSTANT( + bool, value = ( + sizeof(detail::is_back_reference_test(boost::type())) + == sizeof(detail::yes_back_reference_t))); +}; + +# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + +// +// implementations +// +template +back_reference::back_reference(PyObject* p, T x) + : m_source(detail::borrowed_reference(p)) + , m_value(x) +{ +} + +template +typename back_reference::source_t const& back_reference::source() const +{ + return m_source; +} + +template +T back_reference::get() const +{ + return m_value; +} + +}} // namespace boost::python + +#endif // BACK_REFERENCE_DWA2002510_HPP