Added boost header
This commit is contained in:
61
test/external/boost/python/raw_function.hpp
vendored
Normal file
61
test/external/boost/python/raw_function.hpp
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
// Copyright David Abrahams 2003.
|
||||
// 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 RAW_FUNCTION_DWA200336_HPP
|
||||
# define RAW_FUNCTION_DWA200336_HPP
|
||||
|
||||
# include <boost/python/detail/prefix.hpp>
|
||||
|
||||
# include <boost/python/tuple.hpp>
|
||||
# include <boost/python/dict.hpp>
|
||||
# include <boost/python/object/py_function.hpp>
|
||||
# include <boost/mpl/vector/vector10.hpp>
|
||||
|
||||
# include <boost/limits.hpp>
|
||||
# include <cstddef>
|
||||
|
||||
namespace boost { namespace python {
|
||||
|
||||
namespace detail
|
||||
{
|
||||
template <class F>
|
||||
struct raw_dispatcher
|
||||
{
|
||||
raw_dispatcher(F f) : f(f) {}
|
||||
|
||||
PyObject* operator()(PyObject* args, PyObject* keywords)
|
||||
{
|
||||
return incref(
|
||||
object(
|
||||
f(
|
||||
tuple(borrowed_reference(args))
|
||||
, keywords ? dict(borrowed_reference(keywords)) : dict()
|
||||
)
|
||||
).ptr()
|
||||
);
|
||||
}
|
||||
|
||||
private:
|
||||
F f;
|
||||
};
|
||||
|
||||
object BOOST_PYTHON_DECL make_raw_function(objects::py_function);
|
||||
}
|
||||
|
||||
template <class F>
|
||||
object raw_function(F f, std::size_t min_args = 0)
|
||||
{
|
||||
return detail::make_raw_function(
|
||||
objects::py_function(
|
||||
detail::raw_dispatcher<F>(f)
|
||||
, mpl::vector1<PyObject*>()
|
||||
, min_args
|
||||
, (std::numeric_limits<unsigned>::max)()
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
}} // namespace boost::python
|
||||
|
||||
#endif // RAW_FUNCTION_DWA200336_HPP
|
||||
Reference in New Issue
Block a user