python_boost_模板代码,

namespace boost { namespace python
{
  template <class T
      , class Bases = bases<>
            , class HeldType = T
            , class NonCopyable = unspecified
           >
  class class_ : public object
  {
    // Constructors with default __init__
    class_(char const* name);
    class_(char const* name, char const* docstring);

    // Constructors, specifying non-default __init__
    template <class Init>
    class_(char const* name, Init);
    template <class Init>
    class_(char const* name, char const* docstring, Init);

    // Exposing additional __init__ functions
    template <class Init>
    class_& def(Init);

    // defining methods
    template <class F>
    class_& def(char const* name, F f);
    template <class Fn, class A1>
    class_& def(char const* name, Fn fn, A1 const&);
    template <class Fn, class A1, class A2>
    class_& def(char const* name, Fn fn, A1 const&, A2 const&);
    template <class Fn, class A1, class A2, class A3>
    class_& def(char const* name, Fn fn, A1 const&, A2 const&, A3 const&);

    // declaring method as static
    class_& staticmethod(char const* name);
    
    // exposing operators
    template <unspecified>
    class_& def(detail::operator_<unspecified>);

    // Raw attribute modification
    template <class U>
    class_& setattr(char const* name, U const&);

    // exposing data members
    template <class D>
    class_& def_readonly(char const* name, D T::*pm);

    template <class D>
    class_& def_readwrite(char const* name, D T::*pm);

    // exposing static data members
    template <class D>
    class_& def_readonly(char const* name, D const& d);
    template <class D>
    class_& def_readwrite(char const* name, D& d);

    // property creation
    template <class Get>
    void add_property(char const* name, Get const& fget);
    template <class Get, class Set>
    void add_property(char const* name, Get const& fget, Set const& fset);

    template <class Get>
    void add_static_property(char const* name, Get const& fget);
    template <class Get, class Set>
    void add_static_property(char const* name, Get const& fget, Set const& fset);

    // pickle support
    template <typename PickleSuite>
    self& def_pickle(PickleSuite const&);
    self& enable_pickling();
  };
}}

转载于:https://cs.brown.edu/~jwicks/boost/libs/python/doc/v2/class.html#bases-spec

发布了5 篇原创文章 · 获赞 0 · 访问量 53

猜你喜欢

转载自blog.csdn.net/qq_40715157/article/details/105658156
今日推荐