py_request.cpp
来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 103 行
CPP
103 行
// (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 request.cpp * * This file reflects the Boost.MPI @c request class into * Python. */#include <boost/python.hpp>#include <boost/mpi.hpp>#include "request_with_value.hpp"using namespace boost::python;using namespace boost::mpi;const object python::request_with_value::get_value() const { if (m_internal_value.get()) return *m_internal_value; else if (m_external_value) return *m_external_value; else { PyErr_SetString(PyExc_ValueError, "request value not available"); throw boost::python::error_already_set(); }}const object python::request_with_value::get_value_or_none() const { if (m_internal_value.get()) return *m_internal_value; else if (m_external_value) return *m_external_value; else return object();}const object python::request_with_value::wrap_wait(){ status stat = request::wait(); if (m_internal_value.get() || m_external_value) return boost::python::make_tuple(get_value(), stat); else return object(stat);}const object python::request_with_value::wrap_test(){ ::boost::optional<status> stat = request::test(); if (stat) { if (m_internal_value.get() || m_external_value) return boost::python::make_tuple(get_value(), *stat); else return object(*stat); } else return object();}namespace boost { namespace mpi { namespace python {extern const char* request_docstring;extern const char* request_with_value_docstring;extern const char* request_wait_docstring;extern const char* request_test_docstring;extern const char* request_cancel_docstring;extern const char* request_value_docstring;void export_request(){ using boost::python::arg; using boost::python::object; { typedef request cl; class_<cl>("Request", request_docstring, no_init) .def("wait", &cl::wait, request_wait_docstring) .def("test", &cl::test, request_test_docstring) .def("cancel", &cl::cancel, request_cancel_docstring) ; } { typedef request_with_value cl; class_<cl, bases<request> >( "RequestWithValue", request_with_value_docstring, no_init) .def("wait", &cl::wrap_wait, request_wait_docstring) .def("test", &cl::wrap_test, request_test_docstring) ; } implicitly_convertible<request, request_with_value>();}} } } // end namespace boost::mpi::python
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?