1 // Copyright David Abrahams 2002.
2 // Distributed under the Boost Software License, Version 1.0. (See
3 // accompanying file LICENSE_1_0.txt or copy at
4 // http://www.boost.org/LICENSE_1_0.txt)
5 #ifndef ARG_FROM_PYTHON_DWA2002128_HPP
6 # define ARG_FROM_PYTHON_DWA2002128_HPP
8 # include <boost/python/detail/prefix.hpp>
9 # include <boost/python/converter/arg_from_python.hpp>
10 # if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
11 || BOOST_WORKAROUND(BOOST_INTEL_WIN, BOOST_TESTED_AT(800))
12 # include <boost/type_traits/remove_cv.hpp>
15 namespace boost { namespace python {
18 struct arg_from_python
19 : converter::select_arg_from_python<
20 # if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
21 || BOOST_WORKAROUND(BOOST_INTEL_WIN, BOOST_TESTED_AT(800))
22 typename boost::remove_cv<T>::type
28 typedef typename converter::select_arg_from_python<
29 # if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
30 || BOOST_WORKAROUND(BOOST_INTEL_WIN, BOOST_TESTED_AT(800))
31 typename boost::remove_cv<T>::type
37 arg_from_python(PyObject*);
40 // specialization for PyObject*
42 struct arg_from_python<PyObject*>
44 typedef PyObject* result_type;
46 arg_from_python(PyObject* p) : m_source(p) {}
47 bool convertible() const { return true; }
48 PyObject* operator()() const { return m_source; }
54 struct arg_from_python<PyObject* const&>
56 typedef PyObject* const& result_type;
58 arg_from_python(PyObject* p) : m_source(p) {}
59 bool convertible() const { return true; }
60 PyObject*const& operator()() const { return m_source; }
69 inline arg_from_python<T>::arg_from_python(PyObject* source)
74 }} // namespace boost::python
76 #endif // ARG_FROM_PYTHON_DWA2002128_HPP