1 #ifndef DOXYGEN_BOOST_DOC_HH 2 #define DOXYGEN_BOOST_DOC_HH 5 #error "You should have included doxygen.hh first." 6 #endif // DOXYGEN_DOC_HH 8 #include <boost/python.hpp> 14 template <
typename function_type,
15 typename policy_type = boost::python::default_call_policies>
17 member_func_impl<function_type, policy_type> > {
24 template <
class classT>
25 inline void visit(classT& c)
const {
30 template <
class classT, std::
size_t nkeywords>
32 classT& c,
const boost::python::detail::keywords<nkeywords>&
args)
const {
36 template <
class classT>
42 const function_type&
function;
48 template <
typename function_type>
50 const char*
name,
const function_type&
function) {
54 template <
typename function_type,
typename policy_type>
56 const char*
name,
const function_type&
function,
57 const policy_type&
policy) {
61 #define DOXYGEN_DOC_DECLARE_INIT_VISITOR(z, nargs, unused) \ 62 template <typename Class BOOST_PP_COMMA_IF(nargs) \ 63 BOOST_PP_ENUM_PARAMS(nargs, class Arg)> \ 64 struct init_##nargs##_impl \ 65 : boost::python::def_visitor< \ 66 init_##nargs##_impl<Class BOOST_PP_COMMA_IF(nargs) \ 67 BOOST_PP_ENUM_PARAMS(nargs, Arg)> > { \ 68 typedef constructor_##nargs##_impl<Class BOOST_PP_COMMA_IF(nargs) \ 69 BOOST_PP_ENUM_PARAMS(nargs, Arg)> \ 71 typedef boost::python::init<BOOST_PP_ENUM_PARAMS(nargs, Arg)> init_base; \ 73 template <class classT> \ 74 inline void visit(classT& c) const { \ 75 call(c, constructor::args()); \ 78 template <class classT> \ 79 void call(classT& c, \ 80 const boost::python::detail::keywords<nargs + 1>& args) const { \ 81 c.def(init_base(constructor::doc(), args)); \ 84 template <class classT> \ 85 void call(classT& c, const void_&) const { \ 86 c.def(init_base(constructor::doc())); \ 90 template <typename Class BOOST_PP_COMMA_IF(nargs) \ 91 BOOST_PP_ENUM_PARAMS(nargs, class Arg)> \ 92 inline init_##nargs##_impl<Class BOOST_PP_COMMA_IF(nargs) \ 93 BOOST_PP_ENUM_PARAMS(nargs, Arg)> \ 95 return init_##nargs##_impl<Class BOOST_PP_COMMA_IF(nargs) \ 96 BOOST_PP_ENUM_PARAMS(nargs, Arg)>(); \ 101 #undef DOXYGEN_DOC_DECLARE_INIT_VISITOR 105 template <
typename Func>
112 #endif // DOXYGEN_BOOST_DOC_HH #define DOXYGEN_DOC_MAX_NUMBER_OF_ARGUMENTS_IN_CONSTRUCTOR
const char * member_func_doc(FuncPtr)
const function_type & function
void def(const char *name, Func func)
BOOST_PP_REPEAT(DOXYGEN_DOC_MAX_NUMBER_OF_ARGUMENTS_IN_CONSTRUCTOR, DOXYGEN_DOC_DECLARE_CONSTRUCTOR, ~) template< typename Class > struct destructor_doc_impl
member_func_impl(const char *n, const function_type &f)
member_func_impl(const char *n, const function_type &f, policy_type p)
void call(classT &c, const void_ &) const
void call(classT &c, const boost::python::detail::keywords< nkeywords > &args) const
#define DOXYGEN_DOC_DECLARE_INIT_VISITOR(z, nargs, unused)
void visit(classT &c) const
member_func_impl< function_type > member_func(const char *name, const function_type &function)
void_ member_func_args(FuncPtr)