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 + -
显示快捷键?