annotate DEPENDENCIES/generic/include/boost/python/raw_function.hpp @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents 2665513ce2d3
children
rev   line source
Chris@16 1 // Copyright David Abrahams 2003.
Chris@16 2 // Distributed under the Boost Software License, Version 1.0. (See
Chris@16 3 // accompanying file LICENSE_1_0.txt or copy at
Chris@16 4 // http://www.boost.org/LICENSE_1_0.txt)
Chris@16 5 #ifndef RAW_FUNCTION_DWA200336_HPP
Chris@16 6 # define RAW_FUNCTION_DWA200336_HPP
Chris@16 7
Chris@16 8 # include <boost/python/detail/prefix.hpp>
Chris@16 9
Chris@16 10 # include <boost/python/tuple.hpp>
Chris@16 11 # include <boost/python/dict.hpp>
Chris@16 12 # include <boost/python/object/py_function.hpp>
Chris@16 13 # include <boost/mpl/vector/vector10.hpp>
Chris@16 14
Chris@16 15 # include <boost/limits.hpp>
Chris@16 16 # include <cstddef>
Chris@16 17
Chris@16 18 namespace boost { namespace python {
Chris@16 19
Chris@16 20 namespace detail
Chris@16 21 {
Chris@16 22 template <class F>
Chris@16 23 struct raw_dispatcher
Chris@16 24 {
Chris@16 25 raw_dispatcher(F f) : f(f) {}
Chris@16 26
Chris@16 27 PyObject* operator()(PyObject* args, PyObject* keywords)
Chris@16 28 {
Chris@16 29 return incref(
Chris@16 30 object(
Chris@16 31 f(
Chris@16 32 tuple(borrowed_reference(args))
Chris@16 33 , keywords ? dict(borrowed_reference(keywords)) : dict()
Chris@16 34 )
Chris@16 35 ).ptr()
Chris@16 36 );
Chris@16 37 }
Chris@16 38
Chris@16 39 private:
Chris@16 40 F f;
Chris@16 41 };
Chris@16 42
Chris@16 43 object BOOST_PYTHON_DECL make_raw_function(objects::py_function);
Chris@16 44 }
Chris@16 45
Chris@16 46 template <class F>
Chris@16 47 object raw_function(F f, std::size_t min_args = 0)
Chris@16 48 {
Chris@16 49 return detail::make_raw_function(
Chris@16 50 objects::py_function(
Chris@16 51 detail::raw_dispatcher<F>(f)
Chris@16 52 , mpl::vector1<PyObject*>()
Chris@16 53 , min_args
Chris@16 54 , (std::numeric_limits<unsigned>::max)()
Chris@16 55 )
Chris@16 56 );
Chris@16 57 }
Chris@16 58
Chris@16 59 }} // namespace boost::python
Chris@16 60
Chris@16 61 #endif // RAW_FUNCTION_DWA200336_HPP