pickle_support.hpp

来自「CGAL is a collaborative effort of severa」· HPP 代码 · 共 125 行

HPP
125
字号
//  (C) Copyright R.W. Grosse-Kunstleve 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 BOOST_PYTHON_OBJECT_PICKLE_SUPPORT_RWGK20020603_HPP# define BOOST_PYTHON_OBJECT_PICKLE_SUPPORT_RWGK20020603_HPP# include <boost/python/detail/prefix.hpp>namespace boost { namespace python {namespace api{  class object;}using api::object;class tuple;BOOST_PYTHON_DECL object const& make_instance_reduce_function();struct pickle_suite;namespace error_messages {  template <class T>  struct missing_pickle_suite_function_or_incorrect_signature {};  inline void must_be_derived_from_pickle_suite(pickle_suite const&) {}}namespace detail { struct pickle_suite_registration; }struct pickle_suite{  private:    struct inaccessible {};    friend struct detail::pickle_suite_registration;  public:    static inaccessible* getinitargs() { return 0; }    static inaccessible* getstate() { return 0; }    static inaccessible* setstate() { return 0; }    static bool getstate_manages_dict() { return false; }};namespace detail {  struct pickle_suite_registration  {    typedef pickle_suite::inaccessible inaccessible;    template <class Class_, class Tgetinitargs>    static    void    register_(      Class_& cl,      tuple (*getinitargs_fn)(Tgetinitargs),      inaccessible* (*getstate_fn)(),      inaccessible* (*setstate_fn)(),      bool)    {      cl.enable_pickling_(false);      cl.def("__getinitargs__", getinitargs_fn);    }    template <class Class_,              class Rgetstate, class Tgetstate,              class Tsetstate, class Ttuple>    static    void    register_(      Class_& cl,      inaccessible* (*getinitargs_fn)(),      Rgetstate (*getstate_fn)(Tgetstate),      void (*setstate_fn)(Tsetstate, Ttuple),      bool getstate_manages_dict)    {      cl.enable_pickling_(getstate_manages_dict);      cl.def("__getstate__", getstate_fn);      cl.def("__setstate__", setstate_fn);    }    template <class Class_,              class Tgetinitargs,              class Rgetstate, class Tgetstate,              class Tsetstate, class Ttuple>    static    void    register_(      Class_& cl,      tuple (*getinitargs_fn)(Tgetinitargs),      Rgetstate (*getstate_fn)(Tgetstate),      void (*setstate_fn)(Tsetstate, Ttuple),      bool getstate_manages_dict)    {      cl.enable_pickling_(getstate_manages_dict);      cl.def("__getinitargs__", getinitargs_fn);      cl.def("__getstate__", getstate_fn);      cl.def("__setstate__", setstate_fn);    }    template <class Class_>    static    void    register_(      Class_&,      ...)    {      typedef typename        error_messages::missing_pickle_suite_function_or_incorrect_signature<          Class_>::error_type error_type;    }  };  template <typename PickleSuiteType>  struct pickle_suite_finalize  : PickleSuiteType,    pickle_suite_registration  {};} // namespace detail}} // namespace boost::python#endif // BOOST_PYTHON_OBJECT_PICKLE_SUPPORT_RWGK20020603_HPP

⌨️ 快捷键说明

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