⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 defaults_gen.hpp

📁 CGAL is a collaborative effort of several sites in Europe and Israel. The goal is to make the most i
💻 HPP
📖 第 1 页 / 共 2 页
字号:
                0)                                                              \                                                                                \            BOOST_PP_REPEAT_FROM_TO_2(                                          \                BOOST_PP_SUB_D(1, n_args, n_dflts),                             \                BOOST_PP_INC(n_args),                                           \                BOOST_PYTHON_MEM_FUNC_WRAPPER_GEN,                              \                (fname, BOOST_PP_SUB_D(1, n_args, n_dflts), ret))               \        };                                                                      \    };#define BOOST_PYTHON_OVERLOAD_CONSTRUCTORS(fstubs_name, n_args, n_dflts)                    \    fstubs_name(char const* doc = 0)                                                        \        : ::boost::python::detail::overloads_common<fstubs_name>(doc) {}                    \    template <std::size_t N>                                                                \    fstubs_name(char const* doc, ::boost::python::detail::keywords<N> const& keywords)      \        : ::boost::python::detail::overloads_common<fstubs_name>(                           \            doc, keywords.range())                                                          \    {                                                                                       \        typedef typename ::boost::python::detail::                                          \            error::more_keywords_than_function_arguments<                                   \                N,n_args>::too_many_keywords assertion;                                     \    }                                                                                       \    template <std::size_t N>                                                                \    fstubs_name(::boost::python::detail::keywords<N> const& keywords, char const* doc = 0)  \        : ::boost::python::detail::overloads_common<fstubs_name>(                           \            doc, keywords.range())                                                          \    {                                                                                       \        typedef typename ::boost::python::detail::                                          \            error::more_keywords_than_function_arguments<                                   \                N,n_args>::too_many_keywords assertion;                                     \    }# if defined(BOOST_NO_VOID_RETURNS)#  define BOOST_PYTHON_GEN_FUNCTION_STUB(fname, fstubs_name, n_args, n_dflts)   \    struct fstubs_name                                                          \        : public ::boost::python::detail::overloads_common<fstubs_name>         \    {                                                                           \        BOOST_PYTHON_GEN_FUNCTION(                                              \            fname, non_void_return_type, n_args, n_dflts, return)               \        BOOST_PYTHON_GEN_FUNCTION(                                              \            fname, void_return_type, n_args, n_dflts, ;)                        \                                                                                \        BOOST_PYTHON_OVERLOAD_CONSTRUCTORS(fstubs_name, n_args, n_dflts)        \    };#  define BOOST_PYTHON_GEN_MEM_FUNCTION_STUB(fname, fstubs_name, n_args, n_dflts)       \    struct fstubs_name                                                                  \        : public ::boost::python::detail::overloads_common<fstubs_name>                 \    {                                                                                   \        BOOST_PYTHON_GEN_MEM_FUNCTION(                                                  \            fname, non_void_return_type, n_args, n_dflts, return)                       \        BOOST_PYTHON_GEN_MEM_FUNCTION(                                                  \            fname, void_return_type, n_args, n_dflts, ;)                                \                                                                                        \        BOOST_PYTHON_OVERLOAD_CONSTRUCTORS(fstubs_name, n_args, n_dflts)                \    };# else // !defined(BOOST_NO_VOID_RETURNS)#  define BOOST_PYTHON_GEN_FUNCTION_STUB(fname, fstubs_name, n_args, n_dflts)   \    struct fstubs_name                                                          \        : public ::boost::python::detail::overloads_common<fstubs_name>         \    {                                                                           \        BOOST_PYTHON_GEN_FUNCTION(                                              \            fname, non_void_return_type, n_args, n_dflts, return)               \                                                                                \        typedef non_void_return_type void_return_type;                          \        BOOST_PYTHON_OVERLOAD_CONSTRUCTORS(fstubs_name, n_args, n_dflts)        \    };#  define BOOST_PYTHON_GEN_MEM_FUNCTION_STUB(fname, fstubs_name, n_args, n_dflts)       \    struct fstubs_name                                                                  \        : public ::boost::python::detail::overloads_common<fstubs_name>                 \    {                                                                                   \        BOOST_PYTHON_GEN_MEM_FUNCTION(                                                  \            fname, non_void_return_type, n_args, n_dflts, return)                       \                                                                                        \        typedef non_void_return_type void_return_type;                                  \        BOOST_PYTHON_OVERLOAD_CONSTRUCTORS(fstubs_name, n_args, n_dflts)                \    };# endif // !defined(BOOST_NO_VOID_RETURNS)///////////////////////////////////////////////////////////////////////////////////  MAIN MACROS////      Given generator_name, fname, min_args and max_args, These macros//      generate function stubs that forward to a function or member function//      named fname. max_args is the arity of the function or member function//      fname. fname can have default arguments. min_args is the minimum//      arity that fname can accept.////      There are two versions:////          1. BOOST_PYTHON_FUNCTION_OVERLOADS for free functions//          2. BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS for member functions.////      For instance, given a function:////      int//      foo(int a, char b = 1, unsigned c = 2, double d = 3)//      {//          return a + b + c + int(d);//      }////      The macro invocation:////          BOOST_PYTHON_FUNCTION_OVERLOADS(foo_stubs, foo, 1, 4)////      Generates this code:////      struct foo_stubsNonVoid//      {//          static const int n_funcs = 4;//          static const int max_args = n_funcs;////          template <typename SigT>//          struct gen//          {//              typedef typename ::boost::mpl::begin<SigT>::type    rt_iter;//              typedef typename rt_iter::type                      RT;//              typedef typename rt_iter::next                      iter0;//              typedef typename iter0::type                        T0;//              typedef typename iter0::next                        iter1;//              typedef typename iter1::type                        T1;//              typedef typename iter1::next                        iter2;//              typedef typename iter2::type                        T2;//              typedef typename iter2::next                        iter3;//              typedef typename iter3::type                        T3;//              typedef typename iter3::next                        iter4;////              static RT func_0(T0 arg0)//              { return foo(arg0); }////              static RT func_1(T0 arg0, T1 arg1)//              { return foo(arg0, arg1); }////              static RT func_2(T0 arg0, T1 arg1, T2 arg2)//              { return foo(arg0, arg1, arg2); }////              static RT func_3(T0 arg0, T1 arg1, T2 arg2, T3 arg3)//              { return foo(arg0, arg1, arg2, arg3); }//          };//      };////      struct foo_overloads//          : public boost::python::detail::overloads_common<foo_overloads>//      {//          typedef foo_overloadsNonVoid    non_void_return_type;//          typedef foo_overloadsNonVoid    void_return_type;////          foo_overloads(char const* doc = 0)//             : boost::python::detail::overloads_common<foo_overloads>(doc) {}//      };////      The typedefs non_void_return_type and void_return_type are//      used to handle compilers that do not support void returns. The//      example above typedefs non_void_return_type and//      void_return_type to foo_overloadsNonVoid. On compilers that do//      not support void returns, there are two versions://      foo_overloadsNonVoid and foo_overloadsVoid.  The "Void"//      version is almost identical to the "NonVoid" version except//      for the return type (void) and the lack of the return keyword.////      See the overloads_common above for a description of the//      foo_overloads' base class./////////////////////////////////////////////////////////////////////////////////#define BOOST_PYTHON_FUNCTION_OVERLOADS(generator_name, fname, min_args, max_args)          \    BOOST_PYTHON_GEN_FUNCTION_STUB(                                                         \        fname,                                                                              \        generator_name,                                                                     \        max_args,                                                                           \        BOOST_PP_SUB_D(1, max_args, min_args))#define BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(generator_name, fname, min_args, max_args)   \    BOOST_PYTHON_GEN_MEM_FUNCTION_STUB(                                                     \        fname,                                                                              \        generator_name,                                                                     \        max_args,                                                                           \        BOOST_PP_SUB_D(1, max_args, min_args))// deprecated macro names (to be removed)#define BOOST_PYTHON_FUNCTION_GENERATOR BOOST_PYTHON_FUNCTION_OVERLOADS#define BOOST_PYTHON_MEM_FUN_GENERATOR BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS///////////////////////////////////////////////////////////////////////////////#endif // DEFAULTS_GEN_JDG20020807_HPP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -