// 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 MAKE_KEYWORD_RANGE_FN_DWA2002927_HPP # define MAKE_KEYWORD_RANGE_FN_DWA2002927_HPP # include # include # include # include namespace boost { namespace python { namespace detail { // Think of this as a version of make_function without a compile-time // check that the size of kw is no greater than the expected arity of // F. This version is needed when defining functions with default // arguments, because compile-time information about the number of // keywords is missing for all but the initial function definition. // // @group make_keyword_range_function { template object make_keyword_range_function( F f , Policies const& policies , keyword_range const& kw) { return detail::make_function_aux( f, policies, detail::get_signature(f), kw, mpl::int_<0>()); } template object make_keyword_range_function( F f , Policies const& policies , keyword_range const& kw , Signature const& sig) { return detail::make_function_aux( f, policies, sig, kw, mpl::int_<0>()); } // } // Builds an '__init__' function which inserts the given Holder type // in a wrapped C++ class instance. ArgList is an MPL type sequence // describing the C++ argument types to be passed to Holder's // constructor. // // Holder and ArgList are intended to be explicitly specified. template object make_keyword_range_constructor( CallPolicies const& policies // The CallPolicies with which to invoke the Holder's constructor , detail::keyword_range const& kw // The (possibly empty) set of associated argument keywords , Holder* = 0 , ArgList* = 0, Arity* = 0) { #if !defined( BOOST_PYTHON_NO_PY_SIGNATURES) && defined( BOOST_PYTHON_PY_SIGNATURES_PROPER_INIT_SELF_TYPE) python_class::register_(); #endif return detail::make_keyword_range_function( objects::make_holder ::template apply::execute , policies , kw); } }}} // namespace boost::python::detail #endif // MAKE_KEYWORD_RANGE_FN_DWA2002927_HPP