serialize.cpp
来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 80 行
CPP
80 行
// (C) Copyright 2006 Douglas Gregor <doug.gregor -at- gmail.com>// Use, modification and distribution is subject to 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)// Authors: Douglas Gregor/** @file serialize.cpp * * This file provides Boost.Serialization support for Python objects. */#include <boost/mpi/python/serialize.hpp>#include <boost/mpi/python/skeleton_and_content.hpp>#include <boost/mpi.hpp>namespace boost { namespace python {struct pickle::data_t { object module; object dumps; object loads;};/// Data used for communicating with the Python `pickle' module.pickle::data_t* pickle::data;str pickle::dumps(object obj, int protocol){ if (!data) initialize_data(); return extract<str>((data->dumps)(obj, protocol));}object pickle::loads(str s){ if (!data) initialize_data(); return ((data->loads)(s));}void pickle::initialize_data(){ data = new data_t; data->module = object(handle<>(PyImport_ImportModule("pickle"))); data->dumps = data->module.attr("dumps"); data->loads = data->module.attr("loads");}} } // end namespace boost::pythonBOOST_PYTHON_DIRECT_SERIALIZATION_ARCHIVE_IMPL( ::boost::mpi::packed_iarchive, ::boost::mpi::packed_oarchive)namespace boost { namespace mpi { namespace python { namespace detail { boost::python::object skeleton_proxy_base_type; // A map from Python type objects to skeleton/content handlers typedef std::map<PyTypeObject*, skeleton_content_handler> skeleton_content_handlers_type; BOOST_MPI_PYTHON_DECL skeleton_content_handlers_type skeleton_content_handlers; bool skeleton_and_content_handler_registered(PyTypeObject* type) { return skeleton_content_handlers.find(type) != skeleton_content_handlers.end(); } void register_skeleton_and_content_handler(PyTypeObject* type, const skeleton_content_handler& handler) { skeleton_content_handlers[type] = handler; }} } } } // end namespace boost::mpi::python::detail
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?