/* Generated by Cython 0.15.1 on Fri Jan 20 16:08:20 2012 */

#define PY_SSIZE_T_CLEAN
#include "Python.h"
#ifndef Py_PYTHON_H
    #error Python headers needed to compile C extensions, please install development version of Python.
#else

#include <stddef.h> /* For offsetof */
#ifndef offsetof
#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
#endif

#if !defined(WIN32) && !defined(MS_WINDOWS)
  #ifndef __stdcall
    #define __stdcall
  #endif
  #ifndef __cdecl
    #define __cdecl
  #endif
  #ifndef __fastcall
    #define __fastcall
  #endif
#endif

#ifndef DL_IMPORT
  #define DL_IMPORT(t) t
#endif
#ifndef DL_EXPORT
  #define DL_EXPORT(t) t
#endif

#ifndef PY_LONG_LONG
  #define PY_LONG_LONG LONG_LONG
#endif

#if PY_VERSION_HEX < 0x02040000
  #define METH_COEXIST 0
  #define PyDict_CheckExact(op) (Py_TYPE(op) == &PyDict_Type)
  #define PyDict_Contains(d,o)   PySequence_Contains(d,o)
#endif

#if PY_VERSION_HEX < 0x02050000
  typedef int Py_ssize_t;
  #define PY_SSIZE_T_MAX INT_MAX
  #define PY_SSIZE_T_MIN INT_MIN
  #define PY_FORMAT_SIZE_T ""
  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
  #define PyNumber_Index(o)    PyNumber_Int(o)
  #define PyIndex_Check(o)     PyNumber_Check(o)
  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
#endif

#if PY_VERSION_HEX < 0x02060000
  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
  #define PyVarObject_HEAD_INIT(type, size) \
          PyObject_HEAD_INIT(type) size,
  #define PyType_Modified(t)

  typedef struct {
     void *buf;
     PyObject *obj;
     Py_ssize_t len;
     Py_ssize_t itemsize;
     int readonly;
     int ndim;
     char *format;
     Py_ssize_t *shape;
     Py_ssize_t *strides;
     Py_ssize_t *suboffsets;
     void *internal;
  } Py_buffer;

  #define PyBUF_SIMPLE 0
  #define PyBUF_WRITABLE 0x0001
  #define PyBUF_FORMAT 0x0004
  #define PyBUF_ND 0x0008
  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)

#endif

#if PY_MAJOR_VERSION < 3
  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
#else
  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
#endif

#if PY_MAJOR_VERSION >= 3
  #define Py_TPFLAGS_CHECKTYPES 0
  #define Py_TPFLAGS_HAVE_INDEX 0
#endif

#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
#endif

#if PY_MAJOR_VERSION >= 3
  #define PyBaseString_Type            PyUnicode_Type
  #define PyStringObject               PyUnicodeObject
  #define PyString_Type                PyUnicode_Type
  #define PyString_Check               PyUnicode_Check
  #define PyString_CheckExact          PyUnicode_CheckExact
#endif

#if PY_VERSION_HEX < 0x02060000
  #define PyBytesObject                PyStringObject
  #define PyBytes_Type                 PyString_Type
  #define PyBytes_Check                PyString_Check
  #define PyBytes_CheckExact           PyString_CheckExact
  #define PyBytes_FromString           PyString_FromString
  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
  #define PyBytes_FromFormat           PyString_FromFormat
  #define PyBytes_DecodeEscape         PyString_DecodeEscape
  #define PyBytes_AsString             PyString_AsString
  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
  #define PyBytes_Size                 PyString_Size
  #define PyBytes_AS_STRING            PyString_AS_STRING
  #define PyBytes_GET_SIZE             PyString_GET_SIZE
  #define PyBytes_Repr                 PyString_Repr
  #define PyBytes_Concat               PyString_Concat
  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
#endif

#if PY_VERSION_HEX < 0x02060000
  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
#endif
#ifndef PySet_CheckExact
  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
#endif

#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)

#if PY_MAJOR_VERSION >= 3
  #define PyIntObject                  PyLongObject
  #define PyInt_Type                   PyLong_Type
  #define PyInt_Check(op)              PyLong_Check(op)
  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
  #define PyInt_FromString             PyLong_FromString
  #define PyInt_FromUnicode            PyLong_FromUnicode
  #define PyInt_FromLong               PyLong_FromLong
  #define PyInt_FromSize_t             PyLong_FromSize_t
  #define PyInt_FromSsize_t            PyLong_FromSsize_t
  #define PyInt_AsLong                 PyLong_AsLong
  #define PyInt_AS_LONG                PyLong_AS_LONG
  #define PyInt_AsSsize_t              PyLong_AsSsize_t
  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
#endif

#if PY_MAJOR_VERSION >= 3
  #define PyBoolObject                 PyLongObject
#endif

#if PY_VERSION_HEX < 0x03020000
  typedef long Py_hash_t;
  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
#else
  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
#endif


#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
#else
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
#endif

#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
#else
  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
#endif

#if PY_MAJOR_VERSION >= 3
  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
#endif

#if PY_VERSION_HEX < 0x02050000
  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
#else
  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
#endif

#if PY_VERSION_HEX < 0x02050000
  #define __Pyx_NAMESTR(n) ((char *)(n))
  #define __Pyx_DOCSTR(n)  ((char *)(n))
#else
  #define __Pyx_NAMESTR(n) (n)
  #define __Pyx_DOCSTR(n)  (n)
#endif

#ifndef __PYX_EXTERN_C
  #ifdef __cplusplus
    #define __PYX_EXTERN_C extern "C"
  #else
    #define __PYX_EXTERN_C extern
  #endif
#endif

#if defined(WIN32) || defined(MS_WINDOWS)
#define _USE_MATH_DEFINES
#endif
#include <math.h>
#define __PYX_HAVE__mpi4py__MPI
#define __PYX_HAVE_API__mpi4py__MPI
#include "mpi.h"
#include "atimport.h"
#include "vendor.h"
#ifdef _OPENMP
#include <omp.h>
#endif /* _OPENMP */

#ifdef PYREX_WITHOUT_ASSERTIONS
#define CYTHON_WITHOUT_ASSERTIONS
#endif


/* inline attribute */
#ifndef CYTHON_INLINE
  #if defined(__GNUC__)
    #define CYTHON_INLINE __inline__
  #elif defined(_MSC_VER)
    #define CYTHON_INLINE __inline
  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define CYTHON_INLINE inline
  #else
    #define CYTHON_INLINE
  #endif
#endif

/* unused attribute */
#ifndef CYTHON_UNUSED
# if defined(__GNUC__)
#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
#     define CYTHON_UNUSED __attribute__ ((__unused__))
#   else
#     define CYTHON_UNUSED
#   endif
# elif defined(__ICC) || defined(__INTEL_COMPILER)
#   define CYTHON_UNUSED __attribute__ ((__unused__))
# else
#   define CYTHON_UNUSED
# endif
#endif

typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/


/* Type Conversion Predeclarations */

#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))

#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);

static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);

#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))


#ifdef __GNUC__
  /* Test for GCC > 2.95 */
  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
    #define likely(x)   __builtin_expect(!!(x), 1)
    #define unlikely(x) __builtin_expect(!!(x), 0)
  #else /* __GNUC__ > 2 ... */
    #define likely(x)   (x)
    #define unlikely(x) (x)
  #endif /* __GNUC__ > 2 ... */
#else /* __GNUC__ */
  #define likely(x)   (x)
  #define unlikely(x) (x)
#endif /* __GNUC__ */
    
static PyObject *__pyx_m;
static PyObject *__pyx_b;
static PyObject *__pyx_empty_tuple;
static PyObject *__pyx_empty_bytes;
static int __pyx_lineno;
static int __pyx_clineno = 0;
static const char * __pyx_cfilenm= __FILE__;
static const char *__pyx_filename;


static const char *__pyx_f[] = {
  "pickled.pxi",
  "ExceptionP.pyx",
  "asbuffer.pxi",
  "asarray.pxi",
  "typeimpl.pxi",
  "Errhandler.pyx",
  "Comm.pyx",
  "atimport.pxi",
  "asmpistr.pxi",
  "asmemory.pxi",
  "helpers.pxi",
  "reqimpl.pxi",
  "opimpl.pxi",
  "commimpl.pxi",
  "winimpl.pxi",
  "message.pxi",
  "CAPI.pxi",
  "Exception.pyx",
  "Datatype.pyx",
  "typemap.pxi",
  "Status.pyx",
  "Request.pyx",
  "Info.pyx",
  "Op.pyx",
  "Group.pyx",
  "Win.pyx",
  "File.pyx",
  "MPI.pyx",
  "mpi4py.MPI.pyx",
};

/*--- Type declarations ---*/
struct PyMPIGroupObject;
struct PyMPIFileObject;
struct PyMPIWinObject;
struct PyMPIInfoObject;
struct PyMPICommObject;
struct PyMPIIntracommObject;
struct PyMPICartcommObject;
struct __pyx_obj_6mpi4py_3MPI__p_Pickle;
struct __pyx_obj_6mpi4py_3MPI__p_message;
struct __pyx_obj_6mpi4py_3MPI__p_greq;
struct __pyx_obj_6mpi4py_3MPI__p_msg_io;
struct PyMPIOpObject;
struct PyMPIErrhandlerObject;
struct PyMPIRequestObject;
struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p;
struct PyMPIPrequestObject;
struct __pyx_obj_6mpi4py_3MPI__p_msg_rma;
struct PyMPIIntercommObject;
struct PyMPIGrequestObject;
struct PyMPIDatatypeObject;
struct PyMPIDistgraphcommObject;
struct __pyx_obj_6mpi4py_3MPI__p_msg_cco;
struct PyMPIGraphcommObject;
struct PyMPIStatusObject;
struct __pyx_obj_6mpi4py_3MPI__p_buffer;
struct __pyx_t_6mpi4py_3MPI_RCParams;
typedef struct __pyx_t_6mpi4py_3MPI_RCParams __pyx_t_6mpi4py_3MPI_RCParams;

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":13
 * #------------------------------------------------------------------------------
 * 
 * cdef enum PyMPI_OBJECT_FLAGS:             # <<<<<<<<<<<<<<
 *     PyMPI_OWNED = 1<<1
 * 
 */
enum __pyx_t_6mpi4py_3MPI_PyMPI_OBJECT_FLAGS {

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":14
 * 
 * cdef enum PyMPI_OBJECT_FLAGS:
 *     PyMPI_OWNED = 1<<1             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
  __pyx_e_6mpi4py_3MPI_PyMPI_OWNED = (1 << 1)
};

/* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":19
 * # -----------------------------------------------------------------------------
 * 
 * ctypedef struct RCParams:             # <<<<<<<<<<<<<<
 *     int initialize
 *     int threaded
 */
struct __pyx_t_6mpi4py_3MPI_RCParams {
  int initialize;
  int threaded;
  int thread_level;
  int finalize;
};

/* "mpi4py/MPI.pxd":92
 *     cdef int    ob_usrid
 * 
 * ctypedef public api class Group [             # <<<<<<<<<<<<<<
 *     type   PyMPIGroup_Type,
 *     object PyMPIGroupObject,
 */
struct PyMPIGroupObject {
  PyObject_HEAD
  MPI_Group ob_mpi;
  int flags;
};
typedef struct PyMPIGroupObject PyMPIGroupObject;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIGroup_Type;

/* "mpi4py/MPI.pxd":157
 *     cdef int     flags
 * 
 * ctypedef public api class File [             # <<<<<<<<<<<<<<
 *     type   PyMPIFile_Type,
 *     object PyMPIFileObject,
 */
struct PyMPIFileObject {
  PyObject_HEAD
  MPI_File ob_mpi;
  int flags;
};
typedef struct PyMPIFileObject PyMPIFileObject;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIFile_Type;

/* "mpi4py/MPI.pxd":150
 *     pass
 * 
 * ctypedef public api class Win [             # <<<<<<<<<<<<<<
 *     type   PyMPIWin_Type,
 *     object PyMPIWinObject,
 */
struct PyMPIWinObject {
  PyObject_HEAD
  MPI_Win ob_mpi;
  int flags;
};
typedef struct PyMPIWinObject PyMPIWinObject;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIWin_Type;

/* "mpi4py/MPI.pxd":99
 *     cdef int       flags
 * 
 * ctypedef public api class Info [             # <<<<<<<<<<<<<<
 *     type   PyMPIInfo_Type,
 *     object PyMPIInfoObject,
 */
struct PyMPIInfoObject {
  PyObject_HEAD
  MPI_Info ob_mpi;
  int flags;
};
typedef struct PyMPIInfoObject PyMPIInfoObject;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIInfo_Type;

/* "mpi4py/MPI.pxd":113
 *     cdef int            flags
 * 
 * ctypedef public api class Comm [             # <<<<<<<<<<<<<<
 *     type   PyMPIComm_Type,
 *     object PyMPICommObject,
 */
struct PyMPICommObject {
  PyObject_HEAD
  MPI_Comm ob_mpi;
  int flags;
};
typedef struct PyMPICommObject PyMPICommObject;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIComm_Type;

/* "mpi4py/MPI.pxd":120
 *     cdef int      flags
 * 
 * ctypedef public api class Intracomm(Comm) [             # <<<<<<<<<<<<<<
 *     type   PyMPIIntracomm_Type,
 *     object PyMPIIntracommObject,
 */
struct PyMPIIntracommObject {
  struct PyMPICommObject __pyx_base;
};
typedef struct PyMPIIntracommObject PyMPIIntracommObject;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIIntracomm_Type;

/* "mpi4py/MPI.pxd":126
 *     pass
 * 
 * ctypedef public api class Cartcomm(Intracomm) [             # <<<<<<<<<<<<<<
 *     type   PyMPICartcomm_Type,
 *     object PyMPICartcommObject,
 */
struct PyMPICartcommObject {
  struct PyMPIIntracommObject __pyx_base;
};
typedef struct PyMPICartcommObject PyMPICartcommObject;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPICartcomm_Type;

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":33
 *     pass
 * 
 * cdef class _p_Pickle:             # <<<<<<<<<<<<<<
 * 
 *     cdef object ob_dumps
 */
struct __pyx_obj_6mpi4py_3MPI__p_Pickle {
  PyObject_HEAD
  struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *__pyx_vtab;
  PyObject *ob_dumps;
  PyObject *ob_loads;
  PyObject *ob_PROTOCOL;
};


/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":20
 * #------------------------------------------------------------------------------
 * 
 * cdef class _p_message:             # <<<<<<<<<<<<<<
 *     cdef _p_buffer buf
 *     cdef object count
 */
struct __pyx_obj_6mpi4py_3MPI__p_message {
  PyObject_HEAD
  struct __pyx_obj_6mpi4py_3MPI__p_buffer *buf;
  PyObject *count;
  PyObject *displ;
  struct PyMPIDatatypeObject *type;
};


/* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":54
 * # -----------------------------------------------------------------------------
 * 
 * cdef class _p_greq:             # <<<<<<<<<<<<<<
 * 
 *     cdef object query_fn
 */
struct __pyx_obj_6mpi4py_3MPI__p_greq {
  PyObject_HEAD
  struct __pyx_vtabstruct_6mpi4py_3MPI__p_greq *__pyx_vtab;
  PyObject *query_fn;
  PyObject *free_fn;
  PyObject *cancel_fn;
  PyObject *args;
  PyObject *kargs;
};


/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":793
 * #------------------------------------------------------------------------------
 * 
 * cdef class _p_msg_io:             # <<<<<<<<<<<<<<
 * 
 *     # raw C-side data
 */
struct __pyx_obj_6mpi4py_3MPI__p_msg_io {
  PyObject_HEAD
  struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_io *__pyx_vtab;
  void *buf;
  int count;
  MPI_Datatype dtype;
  PyObject *_msg;
};


/* "mpi4py/MPI.pxd":83
 *     cdef MPI_Request ob_grequest
 * 
 * ctypedef public api class Op [             # <<<<<<<<<<<<<<
 *     type   PyMPIOp_Type,
 *     object PyMPIOpObject,
 */
struct PyMPIOpObject {
  PyObject_HEAD
  MPI_Op ob_mpi;
  int flags;
  PyObject *(*ob_func)(PyObject *, PyObject *);
  int ob_usrid;
};
typedef struct PyMPIOpObject PyMPIOpObject;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIOp_Type;

/* "mpi4py/MPI.pxd":106
 *     cdef int      flags
 * 
 * ctypedef public api class Errhandler [             # <<<<<<<<<<<<<<
 *     type   PyMPIErrhandler_Type,
 *     object PyMPIErrhandlerObject,
 */
struct PyMPIErrhandlerObject {
  PyObject_HEAD
  MPI_Errhandler ob_mpi;
  int flags;
};
typedef struct PyMPIErrhandlerObject PyMPIErrhandlerObject;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIErrhandler_Type;

/* "mpi4py/MPI.pxd":63
 *     cdef int          flags
 * 
 * ctypedef public api class Request [             # <<<<<<<<<<<<<<
 *     type   PyMPIRequest_Type,
 *     object PyMPIRequestObject,
 */
struct PyMPIRequestObject {
  PyObject_HEAD
  MPI_Request ob_mpi;
  int flags;
  PyObject *ob_buf;
};
typedef struct PyMPIRequestObject PyMPIRequestObject;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIRequest_Type;

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":286
 * #------------------------------------------------------------------------------
 * 
 * cdef class _p_msg_p2p:             # <<<<<<<<<<<<<<
 * 
 *     # raw C-side arguments
 */
struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p {
  PyObject_HEAD
  struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_p2p *__pyx_vtab;
  void *buf;
  int count;
  MPI_Datatype dtype;
  PyObject *_msg;
};


/* "mpi4py/MPI.pxd":71
 *     cdef object      ob_buf
 * 
 * ctypedef public api class Prequest(Request) [             # <<<<<<<<<<<<<<
 *     type   PyMPIPrequest_Type,
 *     object PyMPIPrequestObject,
 */
struct PyMPIPrequestObject {
  struct PyMPIRequestObject __pyx_base;
};
typedef struct PyMPIPrequestObject PyMPIPrequestObject;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIPrequest_Type;

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":721
 * #------------------------------------------------------------------------------
 * 
 * cdef class _p_msg_rma:             # <<<<<<<<<<<<<<
 * 
 *     # raw origin arguments
 */
struct __pyx_obj_6mpi4py_3MPI__p_msg_rma {
  PyObject_HEAD
  struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_rma *__pyx_vtab;
  void *oaddr;
  int ocount;
  MPI_Datatype otype;
  MPI_Aint tdisp;
  int tcount;
  MPI_Datatype ttype;
  PyObject *_origin;
  PyObject *_target;
};


/* "mpi4py/MPI.pxd":144
 *     pass
 * 
 * ctypedef public api class Intercomm(Comm) [             # <<<<<<<<<<<<<<
 *     type   PyMPIIntercomm_Type,
 *     object PyMPIIntercommObject,
 */
struct PyMPIIntercommObject {
  struct PyMPICommObject __pyx_base;
};
typedef struct PyMPIIntercommObject PyMPIIntercommObject;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIIntercomm_Type;

/* "mpi4py/MPI.pxd":77
 *     pass
 * 
 * ctypedef public api class Grequest(Request) [             # <<<<<<<<<<<<<<
 *     type   PyMPIGrequest_Type,
 *     object PyMPIGrequestObject,
 */
struct PyMPIGrequestObject {
  struct PyMPIRequestObject __pyx_base;
  MPI_Request ob_grequest;
};
typedef struct PyMPIGrequestObject PyMPIGrequestObject;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIGrequest_Type;

/* "mpi4py/MPI.pxd":56
 *     cdef int        flags
 * 
 * ctypedef public api class Datatype [             # <<<<<<<<<<<<<<
 *     type   PyMPIDatatype_Type,
 *     object PyMPIDatatypeObject,
 */
struct PyMPIDatatypeObject {
  PyObject_HEAD
  MPI_Datatype ob_mpi;
  int flags;
};
typedef struct PyMPIDatatypeObject PyMPIDatatypeObject;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIDatatype_Type;

/* "mpi4py/MPI.pxd":138
 *     pass
 * 
 * ctypedef public api class Distgraphcomm(Intracomm) [             # <<<<<<<<<<<<<<
 *     type   PyMPIDistgraphcomm_Type,
 *     object PyMPIDistgraphcommObject,
 */
struct PyMPIDistgraphcommObject {
  struct PyMPIIntracommObject __pyx_base;
};
typedef struct PyMPIDistgraphcommObject PyMPIDistgraphcommObject;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIDistgraphcomm_Type;

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":328
 * #------------------------------------------------------------------------------
 * 
 * cdef class _p_msg_cco:             # <<<<<<<<<<<<<<
 * 
 *     # raw C-side arguments
 */
struct __pyx_obj_6mpi4py_3MPI__p_msg_cco {
  PyObject_HEAD
  struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *__pyx_vtab;
  void *sbuf;
  void *rbuf;
  int scount;
  int rcount;
  int *scounts;
  int *rcounts;
  int *sdispls;
  int *rdispls;
  MPI_Datatype stype;
  MPI_Datatype rtype;
  PyObject *_smsg;
  PyObject *_rmsg;
  PyObject *_rcnt;
};


/* "mpi4py/MPI.pxd":132
 *     pass
 * 
 * ctypedef public api class Graphcomm(Intracomm) [             # <<<<<<<<<<<<<<
 *     type   PyMPIGraphcomm_Type,
 *     object PyMPIGraphcommObject,
 */
struct PyMPIGraphcommObject {
  struct PyMPIIntracommObject __pyx_base;
};
typedef struct PyMPIGraphcommObject PyMPIGraphcommObject;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIGraphcomm_Type;

/* "mpi4py/MPI.pxd":49
 *     ctypedef MPI_Offset Offset "MPI_Offset"
 * 
 * ctypedef public api class Status [             # <<<<<<<<<<<<<<
 *     type   PyMPIStatus_Type,
 *     object PyMPIStatusObject,
 */
struct PyMPIStatusObject {
  PyObject_HEAD
  MPI_Status ob_mpi;
  int flags;
};
typedef struct PyMPIStatusObject PyMPIStatusObject;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIStatus_Type;

/* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":57
 *     return 0
 * 
 * cdef class _p_buffer:             # <<<<<<<<<<<<<<
 *     cdef Py_buffer view
 * 
 */
struct __pyx_obj_6mpi4py_3MPI__p_buffer {
  PyObject_HEAD
  Py_buffer view;
};



/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":328
 * #------------------------------------------------------------------------------
 * 
 * cdef class _p_msg_cco:             # <<<<<<<<<<<<<<
 * 
 *     # raw C-side arguments
 */

struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco {
  int (*for_cco_send)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, int, int);
  int (*for_cco_recv)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, int, int);
  int (*for_bcast)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, int, MPI_Comm);
  int (*for_gather)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, int, MPI_Comm);
  int (*for_scatter)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, int, MPI_Comm);
  int (*for_allgather)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, MPI_Comm);
  int (*for_alltoall)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, MPI_Comm);
  int (*for_cro_send)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, int);
  int (*for_cro_recv)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, int);
  int (*for_reduce)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, int, MPI_Comm);
  int (*for_allreduce)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm);
  int (*for_reduce_scatter_block)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm);
  int (*for_reduce_scatter)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, PyObject *, MPI_Comm);
  int (*for_scan)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm);
  int (*for_exscan)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm);
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *__pyx_vtabptr_6mpi4py_3MPI__p_msg_cco;


/* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":54
 * # -----------------------------------------------------------------------------
 * 
 * cdef class _p_greq:             # <<<<<<<<<<<<<<
 * 
 *     cdef object query_fn
 */

struct __pyx_vtabstruct_6mpi4py_3MPI__p_greq {
  int (*query)(struct __pyx_obj_6mpi4py_3MPI__p_greq *, MPI_Status *);
  int (*free)(struct __pyx_obj_6mpi4py_3MPI__p_greq *);
  int (*cancel)(struct __pyx_obj_6mpi4py_3MPI__p_greq *, int);
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_greq *__pyx_vtabptr_6mpi4py_3MPI__p_greq;


/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":286
 * #------------------------------------------------------------------------------
 * 
 * cdef class _p_msg_p2p:             # <<<<<<<<<<<<<<
 * 
 *     # raw C-side arguments
 */

struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_p2p {
  int (*for_send)(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *, PyObject *, int);
  int (*for_recv)(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *, PyObject *, int);
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_p2p *__pyx_vtabptr_6mpi4py_3MPI__p_msg_p2p;


/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":721
 * #------------------------------------------------------------------------------
 * 
 * cdef class _p_msg_rma:             # <<<<<<<<<<<<<<
 * 
 *     # raw origin arguments
 */

struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_rma {
  int (*for_rma)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, int, PyObject *, int, PyObject *);
  int (*for_put)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int, PyObject *);
  int (*for_get)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int, PyObject *);
  int (*for_acc)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int, PyObject *);
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_rma *__pyx_vtabptr_6mpi4py_3MPI__p_msg_rma;



/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":33
 *     pass
 * 
 * cdef class _p_Pickle:             # <<<<<<<<<<<<<<
 * 
 *     cdef object ob_dumps
 */

struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle {
  PyObject *(*dump)(struct __pyx_obj_6mpi4py_3MPI__p_Pickle *, PyObject *, void **, int *);
  PyObject *(*alloc)(struct __pyx_obj_6mpi4py_3MPI__p_Pickle *, void **, int);
  PyObject *(*load)(struct __pyx_obj_6mpi4py_3MPI__p_Pickle *, PyObject *);
  PyObject *(*dumpv)(struct __pyx_obj_6mpi4py_3MPI__p_Pickle *, PyObject *, void **, int, int *, int *);
  PyObject *(*allocv)(struct __pyx_obj_6mpi4py_3MPI__p_Pickle *, void **, int, int *, int *);
  PyObject *(*loadv)(struct __pyx_obj_6mpi4py_3MPI__p_Pickle *, PyObject *, int, int *, int *);
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *__pyx_vtabptr_6mpi4py_3MPI__p_Pickle;


/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":793
 * #------------------------------------------------------------------------------
 * 
 * cdef class _p_msg_io:             # <<<<<<<<<<<<<<
 * 
 *     # raw C-side data
 */

struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_io {
  int (*for_read)(struct __pyx_obj_6mpi4py_3MPI__p_msg_io *, PyObject *);
  int (*for_write)(struct __pyx_obj_6mpi4py_3MPI__p_msg_io *, PyObject *);
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_io *__pyx_vtabptr_6mpi4py_3MPI__p_msg_io;

#ifndef CYTHON_REFNANNY
  #define CYTHON_REFNANNY 0
#endif

#if CYTHON_REFNANNY
  typedef struct {
    void (*INCREF)(void*, PyObject*, int);
    void (*DECREF)(void*, PyObject*, int);
    void (*GOTREF)(void*, PyObject*, int);
    void (*GIVEREF)(void*, PyObject*, int);
    void* (*SetupContext)(const char*, int, const char*);
    void (*FinishContext)(void**);
  } __Pyx_RefNannyAPIStruct;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
  #define __Pyx_RefNannySetupContext(name)           __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
  #define __Pyx_RefNannyFinishContext()           __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
#else
  #define __Pyx_RefNannyDeclarations
  #define __Pyx_RefNannySetupContext(name)
  #define __Pyx_RefNannyFinishContext()
  #define __Pyx_INCREF(r) Py_INCREF(r)
  #define __Pyx_DECREF(r) Py_DECREF(r)
  #define __Pyx_GOTREF(r)
  #define __Pyx_GIVEREF(r)
  #define __Pyx_XINCREF(r) Py_XINCREF(r)
  #define __Pyx_XDECREF(r) Py_XDECREF(r)
  #define __Pyx_XGOTREF(r)
  #define __Pyx_XGIVEREF(r)
#endif /* CYTHON_REFNANNY */

static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/

static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/

static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/

static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/

#ifndef __PYX_FORCE_INIT_THREADS
  #if PY_VERSION_HEX < 0x02040200
    #define __PYX_FORCE_INIT_THREADS 1
  #else
    #define __PYX_FORCE_INIT_THREADS 0
  #endif
#endif

static CYTHON_INLINE PyObject* __Pyx_tp_new(PyObject* type_obj) {
    return (PyObject*) (((PyTypeObject*)(type_obj))->tp_new(
        (PyTypeObject*)(type_obj), __pyx_empty_tuple, NULL));
}


static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
    PyObject *r;
    if (!j) return NULL;
    r = PyObject_GetItem(o, j);
    Py_DECREF(j);
    return r;
}


#define __Pyx_GetItemInt_List(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
                                                    __Pyx_GetItemInt_List_Fast(o, i) : \
                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))

static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i) {
    if (likely(o != Py_None)) {
        if (likely((0 <= i) & (i < PyList_GET_SIZE(o)))) {
            PyObject *r = PyList_GET_ITEM(o, i);
            Py_INCREF(r);
            return r;
        }
        else if ((-PyList_GET_SIZE(o) <= i) & (i < 0)) {
            PyObject *r = PyList_GET_ITEM(o, PyList_GET_SIZE(o) + i);
            Py_INCREF(r);
            return r;
        }
    }
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
}

#define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
                                                    __Pyx_GetItemInt_Tuple_Fast(o, i) : \
                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))

static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i) {
    if (likely(o != Py_None)) {
        if (likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
            PyObject *r = PyTuple_GET_ITEM(o, i);
            Py_INCREF(r);
            return r;
        }
        else if ((-PyTuple_GET_SIZE(o) <= i) & (i < 0)) {
            PyObject *r = PyTuple_GET_ITEM(o, PyTuple_GET_SIZE(o) + i);
            Py_INCREF(r);
            return r;
        }
    }
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
}


#define __Pyx_GetItemInt(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
                                                    __Pyx_GetItemInt_Fast(o, i) : \
                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))

static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i) {
    PyObject *r;
    if (PyList_CheckExact(o) && ((0 <= i) & (i < PyList_GET_SIZE(o)))) {
        r = PyList_GET_ITEM(o, i);
        Py_INCREF(r);
    }
    else if (PyTuple_CheckExact(o) && ((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
        r = PyTuple_GET_ITEM(o, i);
        Py_INCREF(r);
    }
    else if (Py_TYPE(o)->tp_as_sequence && Py_TYPE(o)->tp_as_sequence->sq_item && (likely(i >= 0))) {
        r = PySequence_GetItem(o, i);
    }
    else {
        r = __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
    }
    return r;
}

static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/

#define __Pyx_SetItemInt(o, i, v, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
                                                    __Pyx_SetItemInt_Fast(o, i, v) : \
                                                    __Pyx_SetItemInt_Generic(o, to_py_func(i), v))

static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
    int r;
    if (!j) return -1;
    r = PyObject_SetItem(o, j, v);
    Py_DECREF(j);
    return r;
}

static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v) {
    if (PyList_CheckExact(o) && ((0 <= i) & (i < PyList_GET_SIZE(o)))) {
        Py_INCREF(v);
        Py_DECREF(PyList_GET_ITEM(o, i));
        PyList_SET_ITEM(o, i, v);
        return 1;
    }
    else if (Py_TYPE(o)->tp_as_sequence && Py_TYPE(o)->tp_as_sequence->sq_ass_item && (likely(i >= 0)))
        return PySequence_SetItem(o, i, v);
    else {
        PyObject *j = PyInt_FromSsize_t(i);
        return __Pyx_SetItemInt_Generic(o, j, v);
    }
}

#define __Pyx_DelItemInt(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
                                                    __Pyx_DelItemInt_Fast(o, i) : \
                                                    __Pyx_DelItem_Generic(o, to_py_func(i)))

static CYTHON_INLINE int __Pyx_DelItem_Generic(PyObject *o, PyObject *j) {
    int r;
    if (!j) return -1;
    r = PyObject_DelItem(o, j);
    Py_DECREF(j);
    return r;
}

static CYTHON_INLINE int __Pyx_DelItemInt_Fast(PyObject *o, Py_ssize_t i) {
    if (Py_TYPE(o)->tp_as_sequence && Py_TYPE(o)->tp_as_sequence->sq_ass_item && likely(i >= 0))
        return PySequence_DelItem(o, i);
    else {
        PyObject *j = PyInt_FromSsize_t(i);
        return __Pyx_DelItem_Generic(o, j);
    }
}

static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) {
    PyObject* value;
#if PY_MAJOR_VERSION >= 3
    value = PyDict_GetItemWithError(d, key);
    if (unlikely(!value)) {
        if (unlikely(PyErr_Occurred()))
            return NULL;
        value = default_value;
    }
    Py_INCREF(value);
#else
    if (PyString_CheckExact(key) || PyUnicode_CheckExact(key) || PyInt_CheckExact(key)) {
        /* these presumably have safe hash functions */
        value = PyDict_GetItem(d, key);
        if (unlikely(!value)) {
            value = default_value;
        }
        Py_INCREF(value);
    } else {
        PyObject *m;
        m = __Pyx_GetAttrString(d, "get");
        if (!m) return NULL;
        value = PyObject_CallFunctionObjArgs(m, key,
            (default_value == Py_None) ? NULL : default_value, NULL);
        Py_DECREF(m);
    }
#endif
    return value;
}

static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/

static void __Pyx_RaiseDoubleKeywordsError(
    const char* func_name, PyObject* kw_name); /*proto*/

static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],     PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,     const char* function_name); /*proto*/

static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);

static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);

static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); /*proto*/

static CYTHON_INLINE void __Pyx_RaiseNoneIndexingError(void);

#if PY_MAJOR_VERSION >= 3
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
    PyObject *value;
    if (unlikely(d == Py_None)) {
        __Pyx_RaiseNoneIndexingError();
        return NULL;
    }
    value = PyDict_GetItemWithError(d, key);
    if (unlikely(!value)) {
        if (!PyErr_Occurred())
            PyErr_SetObject(PyExc_KeyError, key);
        return NULL;
    }
    Py_INCREF(value);
    return value;
}
#else
    #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
#endif

static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict,
    const char* function_name, int kw_allowed); /*proto*/

static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname);

static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
    const char *name, int exact); /*proto*/

static CYTHON_INLINE int __Pyx_NegateNonNeg(int b) { 
    return unlikely(b < 0) ? b : !b; 
}
static CYTHON_INLINE PyObject* __Pyx_PyBoolOrNull_FromLong(long b) {
    return unlikely(b < 0) ? NULL : __Pyx_PyBool_FromLong(b);
}

static int __Pyx_RegisterCleanup(void); /*proto*/
static PyObject* __pyx_module_cleanup(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef cleanup_def = {__Pyx_NAMESTR("__cleanup"), (PyCFunction)&__pyx_module_cleanup, METH_NOARGS, 0};

static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/

static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, long level); /*proto*/

static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_MPI_Aint(MPI_Aint);

static PyObject *__Pyx_FindPy2Metaclass(PyObject *bases); /*proto*/

static PyObject *__Pyx_CreateClass(PyObject *bases, PyObject *dict, PyObject *name,
                                   PyObject *modname); /*proto*/

#define __pyx_binding_PyCFunctionType_USED 1

typedef struct {
    PyCFunctionObject func;
} __pyx_binding_PyCFunctionType_object;

static PyTypeObject __pyx_binding_PyCFunctionType_type;
static PyTypeObject *__pyx_binding_PyCFunctionType = NULL;

static PyObject *__pyx_binding_PyCFunctionType_NewEx(PyMethodDef *ml, PyObject *self, PyObject *module); /* proto */
#define __pyx_binding_PyCFunctionType_New(ml, self) __pyx_binding_PyCFunctionType_NewEx(ml, self, NULL)

static int __pyx_binding_PyCFunctionType_init(void); /* proto */

#include "descrobject.h"
static PyObject* __Pyx_Method_ClassMethod(PyObject *method); /*proto*/

#include <string.h>

static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); /*proto*/

static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); /*proto*/

#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
#else
#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
#endif

static CYTHON_INLINE MPI_Aint __Pyx_PyInt_from_py_MPI_Aint(PyObject *);

static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_MPI_Fint(MPI_Fint);

static CYTHON_INLINE MPI_Fint __Pyx_PyInt_from_py_MPI_Fint(PyObject *);

static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_MPI_Offset(MPI_Offset);

static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);

static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);

static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);

static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);

static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);

static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);

static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);

static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);

static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);

static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);

static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);

static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);

static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);

static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);

static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);

static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);

static void __Pyx_WriteUnraisable(const char *name, int clineno,
                                  int lineno, const char *filename); /*proto*/

static CYTHON_INLINE MPI_Offset __Pyx_PyInt_from_py_MPI_Offset(PyObject *);

static int __Pyx_check_binary_version(void);

static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); /*proto*/

static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/

static PyObject *__Pyx_ImportModule(const char *name); /*proto*/

static void __Pyx_AddTraceback(const char *funcname, int __pyx_clineno,
                               int __pyx_lineno, const char *__pyx_filename); /*proto*/

static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/

/* Module declarations from 'cython.cython.view' */

/* Module declarations from 'cython' */

/* Module declarations from 'mpi4py.MPI' */
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Status = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Datatype = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Request = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Prequest = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Grequest = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Op = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Group = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Info = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Errhandler = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Comm = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Intracomm = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Cartcomm = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Graphcomm = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Distgraphcomm = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Intercomm = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Win = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI_File = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI__p_buffer = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI__p_greq = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI__p_message = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI__p_msg_p2p = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI__p_msg_cco = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI__p_msg_rma = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI__p_msg_io = 0;
static PyTypeObject *__pyx_ptype_6mpi4py_3MPI__p_Pickle = 0;
static int __pyx_v_6mpi4py_3MPI_inited_atimport;
static int __pyx_v_6mpi4py_3MPI_finalize_atexit;
static PyObject *__pyx_v_6mpi4py_3MPI_MPIException = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_arraytype = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_type_keyval = 0;
static MPI_Status __pyx_v_6mpi4py_3MPI_empty_status;
static PyObject *__pyx_v_6mpi4py_3MPI_op_user_registry = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_comm_keyval = 0;
static struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_v_6mpi4py_3MPI__buffer = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_win_keyval = 0;
static PyObject *__pyx_v_6mpi4py_3MPI___BOTTOM__ = 0;
static PyObject *__pyx_v_6mpi4py_3MPI___IN_PLACE__ = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_PyPickle_dumps = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_PyPickle_loads = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_PyStringIO_New = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_PyPickle_loadf = 0;
static struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE = 0;
static struct PyMPIErrhandlerObject *__pyx_v_6mpi4py_3MPI___ERRHANDLER_NULL__ = 0;
static struct PyMPIErrhandlerObject *__pyx_v_6mpi4py_3MPI___ERRORS_RETURN__ = 0;
static struct PyMPIErrhandlerObject *__pyx_v_6mpi4py_3MPI___ERRORS_ARE_FATAL__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___DATATYPE_NULL__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UB__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LB__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___PACKED__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___BYTE__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___AINT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___OFFSET__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___CHAR__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___WCHAR__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___SHORT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LONG__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LONG_LONG__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UNSIGNED__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___FLOAT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___DOUBLE__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___C_BOOL__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INT8_T__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INT16_T__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INT32_T__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INT64_T__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UINT8_T__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UINT16_T__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UINT32_T__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UINT64_T__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___C_COMPLEX__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___SHORT_INT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___TWOINT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LONG_INT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___FLOAT_INT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___DOUBLE_INT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LONG_DOUBLE_INT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___CHARACTER__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LOGICAL__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INTEGER__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___REAL__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___COMPLEX__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LOGICAL1__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LOGICAL2__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LOGICAL4__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LOGICAL8__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INTEGER1__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INTEGER2__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INTEGER4__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INTEGER8__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INTEGER16__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___REAL2__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___REAL4__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___REAL8__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___REAL16__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___COMPLEX4__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___COMPLEX8__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___COMPLEX16__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___COMPLEX32__ = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_TypeDict = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_CTypeDict = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_FTypeDict = 0;
static struct PyMPIRequestObject *__pyx_v_6mpi4py_3MPI___REQUEST_NULL__ = 0;
static struct PyMPIInfoObject *__pyx_v_6mpi4py_3MPI___INFO_NULL__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___OP_NULL__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___MAX__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___MIN__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___SUM__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___PROD__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___LAND__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___BAND__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___LOR__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___BOR__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___LXOR__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___BXOR__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___MAXLOC__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___MINLOC__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___REPLACE__ = 0;
static struct PyMPIGroupObject *__pyx_v_6mpi4py_3MPI___GROUP_NULL__ = 0;
static struct PyMPIGroupObject *__pyx_v_6mpi4py_3MPI___GROUP_EMPTY__ = 0;
static struct PyMPICommObject *__pyx_v_6mpi4py_3MPI___COMM_NULL__ = 0;
static struct PyMPIIntracommObject *__pyx_v_6mpi4py_3MPI___COMM_SELF__ = 0;
static struct PyMPIIntracommObject *__pyx_v_6mpi4py_3MPI___COMM_WORLD__ = 0;
static struct PyMPIIntercommObject *__pyx_v_6mpi4py_3MPI___COMM_PARENT__ = 0;
static struct PyMPIWinObject *__pyx_v_6mpi4py_3MPI___WIN_NULL__ = 0;
static struct PyMPIFileObject *__pyx_v_6mpi4py_3MPI___FILE_NULL__ = 0;
static int __pyx_f_6mpi4py_3MPI_warnRC(PyObject *, PyObject *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_getRCParams(__pyx_t_6mpi4py_3MPI_RCParams *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_initialize(void); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_mpi_active(void); /*proto*/
static void __pyx_f_6mpi4py_3MPI_startup(void); /*proto*/
static void __pyx_f_6mpi4py_3MPI_cleanup(void); /*proto*/
static void __pyx_f_6mpi4py_3MPI_atexit(void); /*proto*/
static int __pyx_f_6mpi4py_3MPI_PyMPI_Raise(int); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_CHKERR(int); /*proto*/
static CYTHON_INLINE void __pyx_f_6mpi4py_3MPI_print_traceback(void); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asmpistr(PyObject *, char **, int *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_tompistr(const char *, int); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_mpistr(const char *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_PyObject_GetBufferEx(PyObject *, Py_buffer *, int); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_f_6mpi4py_3MPI_newbuffer(void); /*proto*/
static struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_f_6mpi4py_3MPI_getbuffer(PyObject *, int, int); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_getformat(struct __pyx_obj_6mpi4py_3MPI__p_buffer *); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_f_6mpi4py_3MPI_tobuffer(void *, Py_ssize_t, int); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_f_6mpi4py_3MPI_getbuffer_r(PyObject *, void **, MPI_Aint *); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_f_6mpi4py_3MPI_getbuffer_w(PyObject *, void **, MPI_Aint *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asmemory(PyObject *, void **, MPI_Aint *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_tomemory(void *, MPI_Aint); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_allocate_int(int, int **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_newarray_int(Py_ssize_t, int **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_getarray_int(PyObject *, int *, int **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_chkarray_int(PyObject *, Py_ssize_t, int **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_int(PyObject *, Py_ssize_t, int **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_Aint(PyObject *, Py_ssize_t, MPI_Aint **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_Datatype(PyObject *, Py_ssize_t, MPI_Datatype **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_Info(PyObject *, Py_ssize_t, MPI_Info **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_str(PyObject *, Py_ssize_t, char ***); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_argv(PyObject *, char ***); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_argvs(PyObject *, Py_ssize_t, char ****); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_nprocs(PyObject *, Py_ssize_t, int **); /*proto*/
static CYTHON_INLINE MPI_Status *__pyx_f_6mpi4py_3MPI_arg_Status(PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_equal_Status(MPI_Status *, MPI_Status *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_type_keyval_new(int, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_type_keyval_del(int); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_type_attr_copy(MPI_Datatype, int, void *, void *, void *, int *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_type_attr_delete(MPI_Datatype, int, void *, void *); /*proto*/
static int PyMPIAPI __pyx_f_6mpi4py_3MPI_type_attr_copy_fn(MPI_Datatype, int, void *, void *, void *, int *); /*proto*/
static int PyMPIAPI __pyx_f_6mpi4py_3MPI_type_attr_delete_fn(MPI_Datatype, int, void *, void *); /*proto*/
static CYTHON_INLINE struct PyMPIDatatypeObject *__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_Datatype); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_del_Datatype(MPI_Datatype *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_named_Datatype(MPI_Datatype); /*proto*/
static void __pyx_f_6mpi4py_3MPI_fix_fileview_Datatype(struct PyMPIDatatypeObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_acquire_rs(PyObject *, PyObject *, int *, MPI_Request **, MPI_Status **); /*proto*/
static int __pyx_f_6mpi4py_3MPI_release_rs(PyObject *, PyObject *, int, MPI_Request *, MPI_Status *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_greq_query(void *, MPI_Status *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_greq_free(void *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_greq_cancel(void *, int); /*proto*/
static int PyMPIAPI __pyx_f_6mpi4py_3MPI_greq_query_fn(void *, MPI_Status *); /*proto*/
static int PyMPIAPI __pyx_f_6mpi4py_3MPI_greq_free_fn(void *); /*proto*/
static int PyMPIAPI __pyx_f_6mpi4py_3MPI_greq_cancel_fn(void *, int); /*proto*/
static CYTHON_INLINE struct PyMPIRequestObject *__pyx_f_6mpi4py_3MPI_new_Request(MPI_Request); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_del_Request(MPI_Request *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI__op_MAX(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI__op_MIN(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI__op_SUM(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI__op_PROD(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI__op_BAND(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI__op_BOR(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI__op_BXOR(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI__op_LAND(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI__op_LOR(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI__op_LXOR(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI__op_MAXLOC(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI__op_MINLOC(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI__op_REPLACE(PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_op_user_py(int, PyObject *, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE void __pyx_f_6mpi4py_3MPI_op_user_mpi(int, void *, void *, MPI_Aint, MPI_Datatype *); /*proto*/
static CYTHON_INLINE void __pyx_f_6mpi4py_3MPI_op_user_call(int, void *, void *, int *, MPI_Datatype *); /*proto*/
static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_01(void *, void *, int *, MPI_Datatype *); /*proto*/
static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_02(void *, void *, int *, MPI_Datatype *); /*proto*/
static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_03(void *, void *, int *, MPI_Datatype *); /*proto*/
static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_04(void *, void *, int *, MPI_Datatype *); /*proto*/
static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_05(void *, void *, int *, MPI_Datatype *); /*proto*/
static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_06(void *, void *, int *, MPI_Datatype *); /*proto*/
static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_07(void *, void *, int *, MPI_Datatype *); /*proto*/
static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_08(void *, void *, int *, MPI_Datatype *); /*proto*/
static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_09(void *, void *, int *, MPI_Datatype *); /*proto*/
static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_10(void *, void *, int *, MPI_Datatype *); /*proto*/
static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_11(void *, void *, int *, MPI_Datatype *); /*proto*/
static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_12(void *, void *, int *, MPI_Datatype *); /*proto*/
static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_13(void *, void *, int *, MPI_Datatype *); /*proto*/
static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_14(void *, void *, int *, MPI_Datatype *); /*proto*/
static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_15(void *, void *, int *, MPI_Datatype *); /*proto*/
static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_16(void *, void *, int *, MPI_Datatype *); /*proto*/
static MPI_User_function *__pyx_f_6mpi4py_3MPI_op_user_map(int); /*proto*/
static int __pyx_f_6mpi4py_3MPI_op_user_new(PyObject *, MPI_User_function **); /*proto*/
static int __pyx_f_6mpi4py_3MPI_op_user_del(int *); /*proto*/
static CYTHON_INLINE struct PyMPIOpObject *__pyx_f_6mpi4py_3MPI_new_Op(MPI_Op); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_del_Op(MPI_Op *); /*proto*/
static CYTHON_INLINE struct PyMPIInfoObject *__pyx_f_6mpi4py_3MPI_new_Info(MPI_Info); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_del_Info(MPI_Info *); /*proto*/
static CYTHON_INLINE MPI_Info __pyx_f_6mpi4py_3MPI_arg_Info(PyObject *); /*proto*/
static CYTHON_INLINE struct PyMPIGroupObject *__pyx_f_6mpi4py_3MPI_new_Group(MPI_Group); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_del_Group(MPI_Group *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_comm_keyval_new(int, PyObject *, PyObject *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_comm_keyval_del(int); /*proto*/
static int __pyx_f_6mpi4py_3MPI_comm_attr_copy(MPI_Comm, int, void *, void *, void *, int *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_comm_attr_delete(MPI_Comm, int, void *, void *); /*proto*/
static int PyMPIAPI __pyx_f_6mpi4py_3MPI_comm_attr_copy_fn(MPI_Comm, int, void *, void *, void *, int *); /*proto*/
static int PyMPIAPI __pyx_f_6mpi4py_3MPI_comm_attr_delete_fn(MPI_Comm, int, void *, void *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_attach_buffer(PyObject *, void **, int *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_detach_buffer(void *, int); /*proto*/
static CYTHON_INLINE struct PyMPICommObject *__pyx_f_6mpi4py_3MPI_new_Comm(MPI_Comm); /*proto*/
static CYTHON_INLINE struct PyMPIIntracommObject *__pyx_f_6mpi4py_3MPI_new_Intracomm(MPI_Comm); /*proto*/
static CYTHON_INLINE struct PyMPIIntercommObject *__pyx_f_6mpi4py_3MPI_new_Intercomm(MPI_Comm); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_del_Comm(MPI_Comm *); /*proto*/
static void __pyx_f_6mpi4py_3MPI_win_memory_decref(void *); /*proto*/
static int PyMPIAPI __pyx_f_6mpi4py_3MPI_win_memory_del(MPI_Win, int, void *, void *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_PyMPI_Win_setup(MPI_Win, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_win_keyval_new(int, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_win_keyval_del(int); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_win_attr_copy(MPI_Win, int, void *, void *, void *, int *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_win_attr_delete(MPI_Win, int, void *, void *); /*proto*/
static int PyMPIAPI __pyx_f_6mpi4py_3MPI_win_attr_copy_fn(MPI_Win, int, void *, void *, void *, int *); /*proto*/
static int PyMPIAPI __pyx_f_6mpi4py_3MPI_win_attr_delete_fn(MPI_Win, int, void *, void *); /*proto*/
static CYTHON_INLINE struct PyMPIWinObject *__pyx_f_6mpi4py_3MPI_new_Win(MPI_Win); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_del_Win(MPI_Win *); /*proto*/
static CYTHON_INLINE struct PyMPIFileObject *__pyx_f_6mpi4py_3MPI_new_File(MPI_File); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_del_File(MPI_File *); /*proto*/
static CYTHON_INLINE struct PyMPIErrhandlerObject *__pyx_f_6mpi4py_3MPI_new_Errhandler(MPI_Errhandler); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_del_Errhandler(MPI_Errhandler *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_buffer(PyObject *); /*proto*/
static struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_f_6mpi4py_3MPI_message_basic(PyObject *, PyObject *, int, void **, MPI_Aint *, MPI_Datatype *); /*proto*/
static struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_f_6mpi4py_3MPI_message_simple(PyObject *, int, int, int, void **, int *, MPI_Datatype *); /*proto*/
static struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_f_6mpi4py_3MPI_message_vector(PyObject *, int, int, int, void **, int **, int **, MPI_Datatype *); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_f_6mpi4py_3MPI_message_p2p_send(PyObject *, int); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_f_6mpi4py_3MPI_message_p2p_recv(PyObject *, int); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_f_6mpi4py_3MPI_message_cco(void); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_f_6mpi4py_3MPI_message_rma(void); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_f_6mpi4py_3MPI_message_io_read(PyObject *); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_f_6mpi4py_3MPI_message_io_write(PyObject *); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_f_6mpi4py_3MPI_PyMPI_pickle(void); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_send(PyObject *, int, int, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_bsend(PyObject *, int, int, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_ssend(PyObject *, int, int, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_recv(PyObject *, int, int, MPI_Comm, MPI_Status *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_sendrecv(PyObject *, int, int, PyObject *, int, int, MPI_Comm, MPI_Status *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_isend(PyObject *, int, int, MPI_Comm, MPI_Request *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_ibsend(PyObject *, int, int, MPI_Comm, MPI_Request *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_issend(PyObject *, int, int, MPI_Comm, MPI_Request *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_irecv(PyObject *, int, int, MPI_Comm, MPI_Request *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_wait(struct PyMPIRequestObject *, struct PyMPIStatusObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_test(struct PyMPIRequestObject *, int *, struct PyMPIStatusObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_waitany(PyObject *, int *, struct PyMPIStatusObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_testany(PyObject *, int *, int *, struct PyMPIStatusObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_waitall(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_testall(PyObject *, int *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_barrier(MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_bcast(PyObject *, int, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_gather(PyObject *, PyObject *, int, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_scatter(PyObject *, PyObject *, int, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_allgather(PyObject *, PyObject *, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_alltoall(PyObject *, PyObject *, MPI_Comm); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI__py_reduce(PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI__py_scan(PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI__py_exscan(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_reduce(PyObject *, PyObject *, PyObject *, int, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_allreduce(PyObject *, PyObject *, PyObject *, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_scan(PyObject *, PyObject *, PyObject *, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_exscan(PyObject *, PyObject *, PyObject *, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIDatatype_New(MPI_Datatype); /*proto*/
static MPI_Datatype *__pyx_f_6mpi4py_3MPI_PyMPIDatatype_Get(PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIStatus_New(MPI_Status *); /*proto*/
static MPI_Status *__pyx_f_6mpi4py_3MPI_PyMPIStatus_Get(PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIRequest_New(MPI_Request); /*proto*/
static MPI_Request *__pyx_f_6mpi4py_3MPI_PyMPIRequest_Get(PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIOp_New(MPI_Op); /*proto*/
static MPI_Op *__pyx_f_6mpi4py_3MPI_PyMPIOp_Get(PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIInfo_New(MPI_Info); /*proto*/
static MPI_Info *__pyx_f_6mpi4py_3MPI_PyMPIInfo_Get(PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIGroup_New(MPI_Group); /*proto*/
static MPI_Group *__pyx_f_6mpi4py_3MPI_PyMPIGroup_Get(PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIComm_New(MPI_Comm); /*proto*/
static MPI_Comm *__pyx_f_6mpi4py_3MPI_PyMPIComm_Get(PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIWin_New(MPI_Win); /*proto*/
static MPI_Win *__pyx_f_6mpi4py_3MPI_PyMPIWin_Get(PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIFile_New(MPI_File); /*proto*/
static MPI_File *__pyx_f_6mpi4py_3MPI_PyMPIFile_Get(PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIErrhandler_New(MPI_Errhandler); /*proto*/
static MPI_Errhandler *__pyx_f_6mpi4py_3MPI_PyMPIErrhandler_Get(PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_AddTypeMap(PyObject *, PyObject *, struct PyMPIDatatypeObject *); /*proto*/
#define __Pyx_MODULE_NAME "mpi4py.MPI"
int __pyx_module_is_main_mpi4py__MPI = 0;

/* Implementation of 'mpi4py.MPI' */
static PyObject *__pyx_builtin_ImportError;
static PyObject *__pyx_builtin_RuntimeError;
static PyObject *__pyx_builtin_property;
static PyObject *__pyx_builtin_SystemError;
static PyObject *__pyx_builtin_TypeError;
static PyObject *__pyx_builtin_AttributeError;
static PyObject *__pyx_builtin_ValueError;
static PyObject *__pyx_builtin_KeyError;
static PyObject *__pyx_builtin_NotImplemented;
static PyObject *__pyx_builtin_NotImplementedError;
static char __pyx_k_1[] = "mpi4py.rc: '%s': unexpected value '%r'";
static char __pyx_k_2[] = "warning: could not register cleanup with Py_AtExit()\n";
static char __pyx_k_3[] = "MPI_Init_thread() failed [error code: %d]";
static char __pyx_k_4[] = "MPI_Init() failed [error code: %d]";
static char __pyx_k_5[] = "accessing non-existent buffer segment";
static char __pyx_k_8[] = "object is not writeable";
static char __pyx_k_10[] = "expecting %d items, got %d";
static char __pyx_k_11[] = "Fatal Python error: exception in user-defined reduction operation\n";
static char __pyx_k_13[] = "cannot create too many user-defined reduction operations";
static char __pyx_k_15[] = "message: expecting 2 to 4 items";
static char __pyx_k_17[] = "message: expecting buffer or list/tuple";
static char __pyx_k_19[] = "message: cannot handle displacement, explicit count required";
static char __pyx_k_21[] = "message: negative count %d";
static char __pyx_k_22[] = "message: negative diplacement %d";
static char __pyx_k_23[] = "message: cannot handle diplacement, datatype is null";
static char __pyx_k_25[] = "message: cannot guess count, datatype is null";
static char __pyx_k_27[] = "message: cannot guess count, datatype extent %d (lb:%d, ub:%d)";
static char __pyx_k_28[] = "message: cannot guess count, buffer length %d is not a multiple of datatype extent %d (lb:%d, ub:%d)";
static char __pyx_k_29[] = "message: cannot guess count, number of datatype items %d is not a multiple ofthe required number of blocks %d";
static char __pyx_k_30[] = "message: buffer is None but count is %d";
static char __pyx_k_31[] = "message: buffer is None but displacement is %d";
static char __pyx_k_35[] = "mismatch in send count %d and receive count %d";
static char __pyx_k_36[] = "mismatch in send and receive MPI datatypes";
static char __pyx_k_39[] = "mismatch in send count %d receive count %d";
static char __pyx_k_41[] = "mismatch in send count %d and sum(counts) %d";
static char __pyx_k_42[] = "mismatch in receive count %d and counts[%d] %d";
static char __pyx_k_43[] = "mismatch in receive count %d and sum(counts) %d";
static char __pyx_k_46[] = "target: expecting 3 items";
static char __pyx_k_48[] = "target: expecting integral or list/tuple";
static char __pyx_k_50[] = "";
static char __pyx_k_53[] = "MPI.Exception(%d)";
static char __pyx_k_54[] = "error code: %d";
static char __pyx_k_55[] = "only '==' and '!='";
static char __pyx_k_66[] = "mismatch in inbuf count %d and inoutbuf count %d";
static char __pyx_k_67[] = "mismatch in inbuf and inoutbuf MPI datatypes";
static char __pyx_k_77[] = "expecting an intracommunicator";
static char __pyx_k_89[] = "expecting a Cartesian communicator";
static char __pyx_k_91[] = "expecting a general graph communicator";
static char __pyx_k_93[] = "expecting a distributed graph communicator";
static char __pyx_k_95[] = "expecting an intercommunicator";
static char __pyx_k__B[] = "B";
static char __pyx_k__D[] = "D";
static char __pyx_k__F[] = "F";
static char __pyx_k__G[] = "G";
static char __pyx_k__H[] = "H";
static char __pyx_k__I[] = "I";
static char __pyx_k__L[] = "L";
static char __pyx_k__Q[] = "Q";
static char __pyx_k__b[] = "b";
static char __pyx_k__c[] = "c";
static char __pyx_k__d[] = "d";
static char __pyx_k__f[] = "f";
static char __pyx_k__g[] = "g";
static char __pyx_k__h[] = "h";
static char __pyx_k__i[] = "i";
static char __pyx_k__l[] = "l";
static char __pyx_k__n[] = "n";
static char __pyx_k__p[] = "p";
static char __pyx_k__q[] = "q";
static char __pyx_k__r[] = "r";
static char __pyx_k__x[] = "x";
static char __pyx_k__y[] = "y";
static char __pyx_k_112[] = "byte count";
static char __pyx_k_113[] = "\n        cancelled state\n        ";
static char __pyx_k_114[] = "lower bound";
static char __pyx_k_115[] = "upper bound";
static char __pyx_k_116[] = "size (in bytes)";
static char __pyx_k_117[] = "true extent";
static char __pyx_k_118[] = "true lower bound";
static char __pyx_k_119[] = "true upper bound";
static char __pyx_k_120[] = "datatype name";
static char __pyx_k_121[] = "is commutative";
static char __pyx_k_122[] = "number of processes in group";
static char __pyx_k_123[] = "rank of this process in group";
static char __pyx_k_124[] = "communicator group";
static char __pyx_k_125[] = "number of processes in communicator";
static char __pyx_k_126[] = "rank of this process in communicator";
static char __pyx_k_127[] = "is intercommunicator";
static char __pyx_k_128[] = "is intracommunicator";
static char __pyx_k_129[] = "communicator topology type";
static char __pyx_k_130[] = "communicator name";
static char __pyx_k_131[] = "number of dimensions";
static char __pyx_k_132[] = "topology information";
static char __pyx_k_133[] = "number of nodes and edges";
static char __pyx_k_134[] = "number of nodes";
static char __pyx_k_135[] = "number of edges";
static char __pyx_k_136[] = "number of neighbors";
static char __pyx_k_137[] = "remote group";
static char __pyx_k_138[] = "number of remote processes";
static char __pyx_k_139[] = "window group";
static char __pyx_k_140[] = "window attributes";
static char __pyx_k_141[] = "window memory buffer";
static char __pyx_k_142[] = "window name";
static char __pyx_k_143[] = "file size";
static char __pyx_k_144[] = "file group";
static char __pyx_k_145[] = "file access mode";
static char __pyx_k_146[] = "file info";
static char __pyx_k_147[] = "\nMessage Passing Interface\n";
static char __pyx_k_148[] = "mpi4py.MPI";
static char __pyx_k_149[] = "error code";
static char __pyx_k_150[] = "error class";
static char __pyx_k_151[] = "error string";
static char __pyx_k_152[] = "\n    Exception\n    ";
static char __pyx_k_153[] = "ERR_UNSUPPORTED_DATAREP";
static char __pyx_k_154[] = "ERR_UNSUPPORTED_OPERATION";
static char __pyx_k_155[] = "DISTRIBUTE_DFLT_DARG";
static char __pyx_k_156[] = "COMBINER_HVECTOR_INTEGER";
static char __pyx_k_157[] = "COMBINER_HINDEXED_INTEGER";
static char __pyx_k_158[] = "COMBINER_INDEXED_BLOCK";
static char __pyx_k_159[] = "COMBINER_STRUCT_INTEGER";
static char __pyx_k_160[] = "COMBINER_F90_COMPLEX";
static char __pyx_k_161[] = "COMBINER_F90_INTEGER";
static char __pyx_k_162[] = "?";
static char __pyx_k_163[] = "C_LONG_DOUBLE_COMPLEX";
static char __pyx_k_164[] = "MODE_DELETE_ON_CLOSE";
static char __pyx_k_165[] = "DISPLACEMENT_CURRENT";
static char __pyx_k__IO[] = "IO";
static char __pyx_k__LB[] = "LB";
static char __pyx_k__UB[] = "UB";
static char __pyx_k__Zd[] = "Zd";
static char __pyx_k__Zf[] = "Zf";
static char __pyx_k__Zg[] = "Zg";
static char __pyx_k__c4[] = "c4";
static char __pyx_k__c8[] = "c8";
static char __pyx_k__f2[] = "f2";
static char __pyx_k__f4[] = "f4";
static char __pyx_k__f8[] = "f8";
static char __pyx_k__fd[] = "fd";
static char __pyx_k__i1[] = "i1";
static char __pyx_k__i2[] = "i2";
static char __pyx_k__i4[] = "i4";
static char __pyx_k__i8[] = "i8";
static char __pyx_k__lb[] = "lb";
static char __pyx_k__no[] = "no";
static char __pyx_k__op[] = "op";
static char __pyx_k__rc[] = "rc";
static char __pyx_k__u1[] = "u1";
static char __pyx_k__u2[] = "u2";
static char __pyx_k__u4[] = "u4";
static char __pyx_k__u8[] = "u8";
static char __pyx_k__BOR[] = "BOR";
static char __pyx_k__DUP[] = "DUP";
static char __pyx_k__Dup[] = "Dup";
static char __pyx_k__Get[] = "Get";
static char __pyx_k__INT[] = "INT";
static char __pyx_k__LOR[] = "LOR";
static char __pyx_k__MAX[] = "MAX";
static char __pyx_k__MIN[] = "MIN";
static char __pyx_k__SUM[] = "SUM";
static char __pyx_k__Set[] = "Set";
static char __pyx_k__arg[] = "arg";
static char __pyx_k__buf[] = "buf";
static char __pyx_k__c16[] = "c16";
static char __pyx_k__c32[] = "c32";
static char __pyx_k__doc[] = "doc";
static char __pyx_k__f16[] = "f16";
static char __pyx_k__i16[] = "i16";
static char __pyx_k__key[] = "key";
static char __pyx_k__obj[] = "obj";
static char __pyx_k__pop[] = "pop";
static char __pyx_k__sys[] = "sys";
static char __pyx_k__tag[] = "tag";
static char __pyx_k__win[] = "win";
static char __pyx_k__yes[] = "yes";
static char __pyx_k__AINT[] = "AINT";
static char __pyx_k__BAND[] = "BAND";
static char __pyx_k__BOOL[] = "BOOL";
static char __pyx_k__BXOR[] = "BXOR";
static char __pyx_k__BYTE[] = "BYTE";
static char __pyx_k__CART[] = "CART";
static char __pyx_k__CHAR[] = "CHAR";
static char __pyx_k__HOST[] = "HOST";
static char __pyx_k__Init[] = "Init";
static char __pyx_k__Join[] = "Join";
static char __pyx_k__LAND[] = "LAND";
static char __pyx_k__LONG[] = "LONG";
static char __pyx_k__LXOR[] = "LXOR";
static char __pyx_k__Open[] = "Open";
static char __pyx_k__PROD[] = "PROD";
static char __pyx_k__REAL[] = "REAL";
static char __pyx_k__ROOT[] = "ROOT";
static char __pyx_k__args[] = "args";
static char __pyx_k__char[] = "char";
static char __pyx_k__comm[] = "comm";
static char __pyx_k__dest[] = "dest";
static char __pyx_k__dims[] = "dims";
static char __pyx_k__disp[] = "disp";
static char __pyx_k__f2py[] = "f2py";
static char __pyx_k__file[] = "file";
static char __pyx_k__flag[] = "flag";
static char __pyx_k__high[] = "high";
static char __pyx_k__ierr[] = "ierr";
static char __pyx_k__info[] = "info";
static char __pyx_k__join[] = "join";
static char __pyx_k__keys[] = "keys";
static char __pyx_k__load[] = "load";
static char __pyx_k__name[] = "name";
static char __pyx_k__rank[] = "rank";
static char __pyx_k__read[] = "read";
static char __pyx_k__root[] = "root";
static char __pyx_k__self[] = "self";
static char __pyx_k__size[] = "size";
static char __pyx_k__warn[] = "warn";
static char __pyx_k__FLOAT[] = "FLOAT";
static char __pyx_k__F_INT[] = "F_INT";
static char __pyx_k__GRAPH[] = "GRAPH";
static char __pyx_k__IDENT[] = "IDENT";
static char __pyx_k__REAL2[] = "REAL2";
static char __pyx_k__REAL4[] = "REAL4";
static char __pyx_k__REAL8[] = "REAL8";
static char __pyx_k__SHORT[] = "SHORT";
static char __pyx_k__Start[] = "Start";
static char __pyx_k__Union[] = "Union";
static char __pyx_k__WCHAR[] = "WCHAR";
static char __pyx_k__Wtick[] = "Wtick";
static char __pyx_k__Wtime[] = "Wtime";
static char __pyx_k__amode[] = "amode";
static char __pyx_k__array[] = "array";
static char __pyx_k__color[] = "color";
static char __pyx_k__comm1[] = "comm1";
static char __pyx_k__comm2[] = "comm2";
static char __pyx_k__count[] = "count";
static char __pyx_k__dargs[] = "dargs";
static char __pyx_k__dtype[] = "dtype";
static char __pyx_k__dumps[] = "dumps";
static char __pyx_k__edges[] = "edges";
static char __pyx_k__error[] = "error";
static char __pyx_k__etype[] = "etype";
static char __pyx_k__flush[] = "flush";
static char __pyx_k__group[] = "group";
static char __pyx_k__inbuf[] = "inbuf";
static char __pyx_k__index[] = "index";
static char __pyx_k__kargs[] = "kargs";
static char __pyx_k__level[] = "level";
static char __pyx_k__loads[] = "loads";
static char __pyx_k__order[] = "order";
static char __pyx_k__other[] = "other";
static char __pyx_k__ranks[] = "ranks";
static char __pyx_k__rtype[] = "rtype";
static char __pyx_k__sizes[] = "sizes";
static char __pyx_k__stype[] = "stype";
static char __pyx_k__value[] = "value";
static char __pyx_k__APPNUM[] = "APPNUM";
static char __pyx_k__BOTTOM[] = "BOTTOM";
static char __pyx_k__C_BOOL[] = "C_BOOL";
static char __pyx_k__Create[] = "Create";
static char __pyx_k__DARRAY[] = "DARRAY";
static char __pyx_k__DOUBLE[] = "DOUBLE";
static char __pyx_k__Delete[] = "Delete";
static char __pyx_k__ERR_IO[] = "ERR_IO";
static char __pyx_k__ERR_OP[] = "ERR_OP";
static char __pyx_k__F_BOOL[] = "F_BOOL";
static char __pyx_k__INT8_T[] = "INT8_T";
static char __pyx_k__MAXLOC[] = "MAXLOC";
static char __pyx_k__MINLOC[] = "MINLOC";
static char __pyx_k__OFFSET[] = "OFFSET";
static char __pyx_k__PACKED[] = "PACKED";
static char __pyx_k__REAL16[] = "REAL16";
static char __pyx_k__STRUCT[] = "STRUCT";
static char __pyx_k__TAG_UB[] = "TAG_UB";
static char __pyx_k__TWOINT[] = "TWOINT";
static char __pyx_k__VECTOR[] = "VECTOR";
static char __pyx_k____eq__[] = "__eq__";
static char __pyx_k____ge__[] = "__ge__";
static char __pyx_k____gt__[] = "__gt__";
static char __pyx_k____le__[] = "__le__";
static char __pyx_k____lt__[] = "__lt__";
static char __pyx_k____ne__[] = "__ne__";
static char __pyx_k__coords[] = "coords";
static char __pyx_k__extent[] = "extent";
static char __pyx_k__group1[] = "group1";
static char __pyx_k__group2[] = "group2";
static char __pyx_k__gsizes[] = "gsizes";
static char __pyx_k__insert[] = "insert";
static char __pyx_k__keyval[] = "keyval";
static char __pyx_k__maxlen[] = "maxlen";
static char __pyx_k__memory[] = "memory";
static char __pyx_k__mpi4py[] = "mpi4py";
static char __pyx_k__native[] = "native";
static char __pyx_k__nnodes[] = "nnodes";
static char __pyx_k__ob_mpi[] = "ob_mpi";
static char __pyx_k__offset[] = "offset";
static char __pyx_k__origin[] = "origin";
static char __pyx_k__outbuf[] = "outbuf";
static char __pyx_k__pickle[] = "pickle";
static char __pyx_k__psizes[] = "psizes";
static char __pyx_k__ranks1[] = "ranks1";
static char __pyx_k__rcount[] = "rcount";
static char __pyx_k__scount[] = "scount";
static char __pyx_k__single[] = "single";
static char __pyx_k__source[] = "source";
static char __pyx_k__starts[] = "starts";
static char __pyx_k__status[] = "status";
static char __pyx_k__stderr[] = "stderr";
static char __pyx_k__stride[] = "stride";
static char __pyx_k__string[] = "string";
static char __pyx_k__target[] = "target";
static char __pyx_k__whence[] = "whence";
static char __pyx_k__ANY_TAG[] = "ANY_TAG";
static char __pyx_k__COMPLEX[] = "COMPLEX";
static char __pyx_k__Compare[] = "Compare";
static char __pyx_k__ERR_ARG[] = "ERR_ARG";
static char __pyx_k__ERR_TAG[] = "ERR_TAG";
static char __pyx_k__ERR_WIN[] = "ERR_WIN";
static char __pyx_k__F_FLOAT[] = "F_FLOAT";
static char __pyx_k__Get_dim[] = "Get_dim";
static char __pyx_k__Get_tag[] = "Get_tag";
static char __pyx_k__HVECTOR[] = "HVECTOR";
static char __pyx_k__INDEXED[] = "INDEXED";
static char __pyx_k__INT16_T[] = "INT16_T";
static char __pyx_k__INT32_T[] = "INT32_T";
static char __pyx_k__INT64_T[] = "INT64_T";
static char __pyx_k__INTEGER[] = "INTEGER";
static char __pyx_k__INT_INT[] = "INT_INT";
static char __pyx_k__LOGICAL[] = "LOGICAL";
static char __pyx_k__OP_NULL[] = "OP_NULL";
static char __pyx_k__ORDER_C[] = "ORDER_C";
static char __pyx_k__ORDER_F[] = "ORDER_F";
static char __pyx_k__REPLACE[] = "REPLACE";
static char __pyx_k__RESIZED[] = "RESIZED";
static char __pyx_k__Resized[] = "Resized";
static char __pyx_k__SIMILAR[] = "SIMILAR";
static char __pyx_k__SINT8_T[] = "SINT8_T";
static char __pyx_k__SUCCESS[] = "SUCCESS";
static char __pyx_k__Set_tag[] = "Set_tag";
static char __pyx_k__Testall[] = "Testall";
static char __pyx_k__Testany[] = "Testany";
static char __pyx_k__UINT8_T[] = "UINT8_T";
static char __pyx_k__UNEQUAL[] = "UNEQUAL";
static char __pyx_k__VERSION[] = "VERSION";
static char __pyx_k__Waitall[] = "Waitall";
static char __pyx_k__Waitany[] = "Waitany";
static char __pyx_k____doc__[] = "__doc__";
static char __pyx_k____int__[] = "__int__";
static char __pyx_k____str__[] = "__str__";
static char __pyx_k__attrval[] = "attrval";
static char __pyx_k__cPickle[] = "cPickle";
static char __pyx_k__command[] = "command";
static char __pyx_k__commute[] = "commute";
static char __pyx_k__copy_fn[] = "copy_fn";
static char __pyx_k__datarep[] = "datarep";
static char __pyx_k__default[] = "default";
static char __pyx_k__degrees[] = "degrees";
static char __pyx_k__free_fn[] = "free_fn";
static char __pyx_k__periods[] = "periods";
static char __pyx_k__recvbuf[] = "recvbuf";
static char __pyx_k__recvobj[] = "recvobj";
static char __pyx_k__recvtag[] = "recvtag";
static char __pyx_k__reorder[] = "reorder";
static char __pyx_k__request[] = "request";
static char __pyx_k__sendbuf[] = "sendbuf";
static char __pyx_k__sendobj[] = "sendobj";
static char __pyx_k__sendtag[] = "sendtag";
static char __pyx_k__sources[] = "sources";
static char __pyx_k__testall[] = "testall";
static char __pyx_k__testany[] = "testany";
static char __pyx_k__waitall[] = "waitall";
static char __pyx_k__waitany[] = "waitany";
static char __pyx_k__weights[] = "weights";
static char __pyx_k__COMPLEX4[] = "COMPLEX4";
static char __pyx_k__COMPLEX8[] = "COMPLEX8";
static char __pyx_k__DISP_CUR[] = "DISP_CUR";
static char __pyx_k__ERR_BASE[] = "ERR_BASE";
static char __pyx_k__ERR_COMM[] = "ERR_COMM";
static char __pyx_k__ERR_DIMS[] = "ERR_DIMS";
static char __pyx_k__ERR_DISP[] = "ERR_DISP";
static char __pyx_k__ERR_FILE[] = "ERR_FILE";
static char __pyx_k__ERR_INFO[] = "ERR_INFO";
static char __pyx_k__ERR_NAME[] = "ERR_NAME";
static char __pyx_k__ERR_PORT[] = "ERR_PORT";
static char __pyx_k__ERR_RANK[] = "ERR_RANK";
static char __pyx_k__ERR_ROOT[] = "ERR_ROOT";
static char __pyx_k__ERR_SIZE[] = "ERR_SIZE";
static char __pyx_k__ERR_TYPE[] = "ERR_TYPE";
static char __pyx_k__F90_REAL[] = "F90_REAL";
static char __pyx_k__F_DOUBLE[] = "F_DOUBLE";
static char __pyx_k__Finalize[] = "Finalize";
static char __pyx_k__Free_mem[] = "Free_mem";
static char __pyx_k__Get_info[] = "Get_info";
static char __pyx_k__Get_name[] = "Get_name";
static char __pyx_k__Get_rank[] = "Get_rank";
static char __pyx_k__Get_size[] = "Get_size";
static char __pyx_k__Get_topo[] = "Get_topo";
static char __pyx_k__HINDEXED[] = "HINDEXED";
static char __pyx_k__INTEGER1[] = "INTEGER1";
static char __pyx_k__INTEGER2[] = "INTEGER2";
static char __pyx_k__INTEGER4[] = "INTEGER4";
static char __pyx_k__INTEGER8[] = "INTEGER8";
static char __pyx_k__IN_PLACE[] = "IN_PLACE";
static char __pyx_k__Is_inter[] = "Is_inter";
static char __pyx_k__Is_intra[] = "Is_intra";
static char __pyx_k__KeyError[] = "KeyError";
static char __pyx_k__LOGICAL1[] = "LOGICAL1";
static char __pyx_k__LOGICAL2[] = "LOGICAL2";
static char __pyx_k__LOGICAL4[] = "LOGICAL4";
static char __pyx_k__LOGICAL8[] = "LOGICAL8";
static char __pyx_k__LONG_INT[] = "LONG_INT";
static char __pyx_k__Pcontrol[] = "Pcontrol";
static char __pyx_k__SEEK_CUR[] = "SEEK_CUR";
static char __pyx_k__SEEK_END[] = "SEEK_END";
static char __pyx_k__SEEK_SET[] = "SEEK_SET";
static char __pyx_k__SINT16_T[] = "SINT16_T";
static char __pyx_k__SINT32_T[] = "SINT32_T";
static char __pyx_k__SINT64_T[] = "SINT64_T";
static char __pyx_k__SUBARRAY[] = "SUBARRAY";
static char __pyx_k__Set_info[] = "Set_info";
static char __pyx_k__Set_name[] = "Set_name";
static char __pyx_k__Startall[] = "Startall";
static char __pyx_k__StringIO[] = "StringIO";
static char __pyx_k__Testsome[] = "Testsome";
static char __pyx_k__UINT16_T[] = "UINT16_T";
static char __pyx_k__UINT32_T[] = "UINT32_T";
static char __pyx_k__UINT64_T[] = "UINT64_T";
static char __pyx_k__UNSIGNED[] = "UNSIGNED";
static char __pyx_k__WIN_BASE[] = "WIN_BASE";
static char __pyx_k__WIN_NULL[] = "WIN_NULL";
static char __pyx_k__WIN_SIZE[] = "WIN_SIZE";
static char __pyx_k__Waitsome[] = "Waitsome";
static char __pyx_k____bool__[] = "__bool__";
static char __pyx_k____call__[] = "__call__";
static char __pyx_k____init__[] = "__init__";
static char __pyx_k____main__[] = "__main__";
static char __pyx_k____repr__[] = "__repr__";
static char __pyx_k__datatype[] = "datatype";
static char __pyx_k__distribs[] = "distribs";
static char __pyx_k__errcodes[] = "errcodes";
static char __pyx_k__filename[] = "filename";
static char __pyx_k__filetype[] = "filetype";
static char __pyx_k__finalize[] = "finalize";
static char __pyx_k__function[] = "function";
static char __pyx_k__funneled[] = "funneled";
static char __pyx_k__inoutbuf[] = "inoutbuf";
static char __pyx_k__location[] = "location";
static char __pyx_k__maxprocs[] = "maxprocs";
static char __pyx_k__multiple[] = "multiple";
static char __pyx_k__position[] = "position";
static char __pyx_k__property[] = "property";
static char __pyx_k__query_fn[] = "query_fn";
static char __pyx_k__requests[] = "requests";
static char __pyx_k__required[] = "required";
static char __pyx_k__statuses[] = "statuses";
static char __pyx_k__subsizes[] = "subsizes";
static char __pyx_k__threaded[] = "threaded";
static char __pyx_k__typecode[] = "typecode";
static char __pyx_k__warnings[] = "warnings";
static char __pyx_k__Alloc_mem[] = "Alloc_mem";
static char __pyx_k__CHARACTER[] = "CHARACTER";
static char __pyx_k__COMM_NULL[] = "COMM_NULL";
static char __pyx_k__COMM_SELF[] = "COMM_SELF";
static char __pyx_k__COMPLEX16[] = "COMPLEX16";
static char __pyx_k__COMPLEX32[] = "COMPLEX32";
static char __pyx_k__CONGRUENT[] = "CONGRUENT";
static char __pyx_k__C_COMPLEX[] = "C_COMPLEX";
static char __pyx_k__ERR_AMODE[] = "ERR_AMODE";
static char __pyx_k__ERR_COUNT[] = "ERR_COUNT";
static char __pyx_k__ERR_GROUP[] = "ERR_GROUP";
static char __pyx_k__ERR_OTHER[] = "ERR_OTHER";
static char __pyx_k__ERR_QUOTA[] = "ERR_QUOTA";
static char __pyx_k__ERR_SPAWN[] = "ERR_SPAWN";
static char __pyx_k__Exception[] = "Exception";
static char __pyx_k__FILE_NULL[] = "FILE_NULL";
static char __pyx_k__FLOAT_INT[] = "FLOAT_INT";
static char __pyx_k__F_COMPLEX[] = "F_COMPLEX";
static char __pyx_k__Get_amode[] = "Get_amode";
static char __pyx_k__Get_count[] = "Get_count";
static char __pyx_k__Get_error[] = "Get_error";
static char __pyx_k__Get_group[] = "Get_group";
static char __pyx_k__Get_nkeys[] = "Get_nkeys";
static char __pyx_k__INFO_NULL[] = "INFO_NULL";
static char __pyx_k__INTEGER16[] = "INTEGER16";
static char __pyx_k__Intersect[] = "Intersect";
static char __pyx_k__LONG_LONG[] = "LONG_LONG";
static char __pyx_k__MODE_EXCL[] = "MODE_EXCL";
static char __pyx_k__MODE_RDWR[] = "MODE_RDWR";
static char __pyx_k__Open_port[] = "Open_port";
static char __pyx_k__PROC_NULL[] = "PROC_NULL";
static char __pyx_k__SHORT_INT[] = "SHORT_INT";
static char __pyx_k__Set_error[] = "Set_error";
static char __pyx_k__TypeError[] = "TypeError";
static char __pyx_k__UNDEFINED[] = "UNDEFINED";
static char __pyx_k___p_pickle[] = "_p_pickle";
static char __pyx_k__assertion[] = "assertion";
static char __pyx_k__atomicity[] = "atomicity";
static char __pyx_k__cStringIO[] = "cStringIO";
static char __pyx_k__cancel_fn[] = "cancel_fn";
static char __pyx_k__datatypes[] = "datatypes";
static char __pyx_k__delete_fn[] = "delete_fn";
static char __pyx_k__direction[] = "direction";
static char __pyx_k__disp_unit[] = "disp_unit";
static char __pyx_k__errorcode[] = "errorcode";
static char __pyx_k__lock_type[] = "lock_type";
static char __pyx_k__neighbors[] = "neighbors";
static char __pyx_k__peer_comm[] = "peer_comm";
static char __pyx_k__port_name[] = "port_name";
static char __pyx_k__print_exc[] = "print_exc";
static char __pyx_k__traceback[] = "traceback";
static char __pyx_k__typeclass[] = "typeclass";
static char __pyx_k__ANY_SOURCE[] = "ANY_SOURCE";
static char __pyx_k__COMM_WORLD[] = "COMM_WORLD";
static char __pyx_k__CONTIGUOUS[] = "CONTIGUOUS";
static char __pyx_k__Close_port[] = "Close_port";
static char __pyx_k__Create_dup[] = "Create_dup";
static char __pyx_k__DIST_GRAPH[] = "DIST_GRAPH";
static char __pyx_k__DOUBLE_INT[] = "DOUBLE_INT";
static char __pyx_k__Difference[] = "Difference";
static char __pyx_k__ERR_ACCESS[] = "ERR_ACCESS";
static char __pyx_k__ERR_ASSERT[] = "ERR_ASSERT";
static char __pyx_k__ERR_BUFFER[] = "ERR_BUFFER";
static char __pyx_k__ERR_INTERN[] = "ERR_INTERN";
static char __pyx_k__ERR_KEYVAL[] = "ERR_KEYVAL";
static char __pyx_k__ERR_NO_MEM[] = "ERR_NO_MEM";
static char __pyx_k__GROUP_NULL[] = "GROUP_NULL";
static char __pyx_k__Get_nthkey[] = "Get_nthkey";
static char __pyx_k__Get_parent[] = "Get_parent";
static char __pyx_k__Get_source[] = "Get_source";
static char __pyx_k__MODE_NOPUT[] = "MODE_NOPUT";
static char __pyx_k__Match_size[] = "Match_size";
static char __pyx_k__SIGNED_INT[] = "SIGNED_INT";
static char __pyx_k__SUBVERSION[] = "SUBVERSION";
static char __pyx_k__Set_source[] = "Set_source";
static char __pyx_k__ValueError[] = "ValueError";
static char __pyx_k__dimensions[] = "dimensions";
static char __pyx_k__errhandler[] = "errhandler";
static char __pyx_k__error_code[] = "error_code";
static char __pyx_k__errorclass[] = "errorclass";
static char __pyx_k__get_vendor[] = "get_vendor";
static char __pyx_k__initialize[] = "initialize";
static char __pyx_k__recvcounts[] = "recvcounts";
static char __pyx_k__serialized[] = "serialized";
static char __pyx_k__ERR_PENDING[] = "ERR_PENDING";
static char __pyx_k__ERR_REQUEST[] = "ERR_REQUEST";
static char __pyx_k__ERR_SERVICE[] = "ERR_SERVICE";
static char __pyx_k__ERR_UNKNOWN[] = "ERR_UNKNOWN";
static char __pyx_k__F90_COMPLEX[] = "F90_COMPLEX";
static char __pyx_k__F90_INTEGER[] = "F90_INTEGER";
static char __pyx_k__Free_keyval[] = "Free_keyval";
static char __pyx_k__GROUP_EMPTY[] = "GROUP_EMPTY";
static char __pyx_k__Get_address[] = "Get_address";
static char __pyx_k__Get_version[] = "Get_version";
static char __pyx_k__ImportError[] = "ImportError";
static char __pyx_k__Init_thread[] = "Init_thread";
static char __pyx_k__LOCK_SHARED[] = "LOCK_SHARED";
static char __pyx_k__LONG_DOUBLE[] = "LONG_DOUBLE";
static char __pyx_k__Lookup_name[] = "Lookup_name";
static char __pyx_k__MODE_APPEND[] = "MODE_APPEND";
static char __pyx_k__MODE_CREATE[] = "MODE_CREATE";
static char __pyx_k__MODE_RDONLY[] = "MODE_RDONLY";
static char __pyx_k__MODE_WRONLY[] = "MODE_WRONLY";
static char __pyx_k__SIGNED_CHAR[] = "SIGNED_CHAR";
static char __pyx_k__SIGNED_LONG[] = "SIGNED_LONG";
static char __pyx_k__SystemError[] = "SystemError";
static char __pyx_k__blocklength[] = "blocklength";
static char __pyx_k__coordinates[] = "coordinates";
static char __pyx_k__destweights[] = "destweights";
static char __pyx_k__error_class[] = "error_class";
static char __pyx_k__periodicity[] = "periodicity";
static char __pyx_k__remain_dims[] = "remain_dims";
static char __pyx_k__target_rank[] = "target_rank";
static char __pyx_k__COMBINER_DUP[] = "COMBINER_DUP";
static char __pyx_k__Compute_dims[] = "Compute_dims";
static char __pyx_k__ERR_BAD_FILE[] = "ERR_BAD_FILE";
static char __pyx_k__ERR_INFO_KEY[] = "ERR_INFO_KEY";
static char __pyx_k__ERR_LASTCODE[] = "ERR_LASTCODE";
static char __pyx_k__ERR_LOCKTYPE[] = "ERR_LOCKTYPE";
static char __pyx_k__ERR_NOT_SAME[] = "ERR_NOT_SAME";
static char __pyx_k__ERR_NO_SPACE[] = "ERR_NO_SPACE";
static char __pyx_k__ERR_RMA_SYNC[] = "ERR_RMA_SYNC";
static char __pyx_k__ERR_TOPOLOGY[] = "ERR_TOPOLOGY";
static char __pyx_k__ERR_TRUNCATE[] = "ERR_TRUNCATE";
static char __pyx_k__Get_topology[] = "Get_topology";
static char __pyx_k__Is_cancelled[] = "Is_cancelled";
static char __pyx_k__Is_finalized[] = "Is_finalized";
static char __pyx_k__LASTUSEDCODE[] = "LASTUSEDCODE";
static char __pyx_k__MAX_INFO_KEY[] = "MAX_INFO_KEY";
static char __pyx_k__MAX_INFO_VAL[] = "MAX_INFO_VAL";
static char __pyx_k__MODE_NOCHECK[] = "MODE_NOCHECK";
static char __pyx_k__MODE_NOSTORE[] = "MODE_NOSTORE";
static char __pyx_k__Publish_name[] = "Publish_name";
static char __pyx_k__Query_thread[] = "Query_thread";
static char __pyx_k__REQUEST_NULL[] = "REQUEST_NULL";
static char __pyx_k__RuntimeError[] = "RuntimeError";
static char __pyx_k__SIGNED_SHORT[] = "SIGNED_SHORT";
static char __pyx_k__UNSIGNED_INT[] = "UNSIGNED_INT";
static char __pyx_k____TypeDict__[] = "__TypeDict__";
static char __pyx_k__blocklengths[] = "blocklengths";
static char __pyx_k__destinations[] = "destinations";
static char __pyx_k__error_string[] = "error_string";
static char __pyx_k__local_leader[] = "local_leader";
static char __pyx_k__service_name[] = "service_name";
static char __pyx_k__thread_level[] = "thread_level";
static char __pyx_k__Attach_buffer[] = "Attach_buffer";
static char __pyx_k__Create_keyval[] = "Create_keyval";
static char __pyx_k__Create_struct[] = "Create_struct";
static char __pyx_k__DATATYPE_NULL[] = "DATATYPE_NULL";
static char __pyx_k__Detach_buffer[] = "Detach_buffer";
static char __pyx_k__ERRORS_RETURN[] = "ERRORS_RETURN";
static char __pyx_k__ERR_IN_STATUS[] = "ERR_IN_STATUS";
static char __pyx_k__ERR_READ_ONLY[] = "ERR_READ_ONLY";
static char __pyx_k__Get_atomicity[] = "Get_atomicity";
static char __pyx_k__Get_neighbors[] = "Get_neighbors";
static char __pyx_k__INDEXED_BLOCK[] = "INDEXED_BLOCK";
static char __pyx_k__MAX_PORT_NAME[] = "MAX_PORT_NAME";
static char __pyx_k__ORDER_FORTRAN[] = "ORDER_FORTRAN";
static char __pyx_k__Set_atomicity[] = "Set_atomicity";
static char __pyx_k__Set_cancelled[] = "Set_cancelled";
static char __pyx_k__THREAD_SINGLE[] = "THREAD_SINGLE";
static char __pyx_k__UNIVERSE_SIZE[] = "UNIVERSE_SIZE";
static char __pyx_k__UNSIGNED_CHAR[] = "UNSIGNED_CHAR";
static char __pyx_k__UNSIGNED_LONG[] = "UNSIGNED_LONG";
static char __pyx_k__WIN_DISP_UNIT[] = "WIN_DISP_UNIT";
static char __pyx_k____CTypeDict__[] = "__CTypeDict__";
static char __pyx_k____FTypeDict__[] = "__FTypeDict__";
static char __pyx_k__displacements[] = "displacements";
static char __pyx_k__remote_leader[] = "remote_leader";
static char __pyx_k__sourceweights[] = "sourceweights";
static char __pyx_k__Add_error_code[] = "Add_error_code";
static char __pyx_k__AttributeError[] = "AttributeError";
static char __pyx_k__BSEND_OVERHEAD[] = "BSEND_OVERHEAD";
static char __pyx_k__COMBINER_NAMED[] = "COMBINER_NAMED";
static char __pyx_k__Create_resized[] = "Create_resized";
static char __pyx_k__DOUBLE_COMPLEX[] = "DOUBLE_COMPLEX";
static char __pyx_k__ERR_CONVERSION[] = "ERR_CONVERSION";
static char __pyx_k__ERR_INFO_NOKEY[] = "ERR_INFO_NOKEY";
static char __pyx_k__ERR_INFO_VALUE[] = "ERR_INFO_VALUE";
static char __pyx_k__Get_error_code[] = "Get_error_code";
static char __pyx_k__Is_commutative[] = "Is_commutative";
static char __pyx_k__Is_initialized[] = "Is_initialized";
static char __pyx_k__Is_thread_main[] = "Is_thread_main";
static char __pyx_k__KEYVAL_INVALID[] = "KEYVAL_INVALID";
static char __pyx_k__LOCK_EXCLUSIVE[] = "LOCK_EXCLUSIVE";
static char __pyx_k__MODE_NOPRECEDE[] = "MODE_NOPRECEDE";
static char __pyx_k__MODE_NOSUCCEED[] = "MODE_NOSUCCEED";
static char __pyx_k__NotImplemented[] = "NotImplemented";
static char __pyx_k__TYPECLASS_REAL[] = "TYPECLASS_REAL";
static char __pyx_k__UNSIGNED_SHORT[] = "UNSIGNED_SHORT";
static char __pyx_k__Unpublish_name[] = "Unpublish_name";
static char __pyx_k__Add_error_class[] = "Add_error_class";
static char __pyx_k__COMBINER_DARRAY[] = "COMBINER_DARRAY";
static char __pyx_k__COMBINER_STRUCT[] = "COMBINER_STRUCT";
static char __pyx_k__COMBINER_VECTOR[] = "COMBINER_VECTOR";
static char __pyx_k__C_FLOAT_COMPLEX[] = "C_FLOAT_COMPLEX";
static char __pyx_k__Create_f90_real[] = "Create_f90_real";
static char __pyx_k__DISTRIBUTE_NONE[] = "DISTRIBUTE_NONE";
static char __pyx_k__ERRHANDLER_NULL[] = "ERRHANDLER_NULL";
static char __pyx_k__ERR_DUP_DATAREP[] = "ERR_DUP_DATAREP";
static char __pyx_k__ERR_FILE_EXISTS[] = "ERR_FILE_EXISTS";
static char __pyx_k__ERR_FILE_IN_USE[] = "ERR_FILE_IN_USE";
static char __pyx_k__F_FLOAT_COMPLEX[] = "F_FLOAT_COMPLEX";
static char __pyx_k__Get_error_class[] = "Get_error_class";
static char __pyx_k__Get_remote_size[] = "Get_remote_size";
static char __pyx_k__LONG_DOUBLE_INT[] = "LONG_DOUBLE_INT";
static char __pyx_k__MAX_OBJECT_NAME[] = "MAX_OBJECT_NAME";
static char __pyx_k__MODE_SEQUENTIAL[] = "MODE_SEQUENTIAL";
static char __pyx_k__THREAD_FUNNELED[] = "THREAD_FUNNELED";
static char __pyx_k__THREAD_MULTIPLE[] = "THREAD_MULTIPLE";
static char __pyx_k__Translate_ranks[] = "Translate_ranks";
static char __pyx_k__WTIME_IS_GLOBAL[] = "WTIME_IS_GLOBAL";
static char __pyx_k__Add_error_string[] = "Add_error_string";
static char __pyx_k__COMBINER_HVECTOR[] = "COMBINER_HVECTOR";
static char __pyx_k__COMBINER_INDEXED[] = "COMBINER_INDEXED";
static char __pyx_k__COMBINER_RESIZED[] = "COMBINER_RESIZED";
static char __pyx_k__C_DOUBLE_COMPLEX[] = "C_DOUBLE_COMPLEX";
static char __pyx_k__DISTRIBUTE_BLOCK[] = "DISTRIBUTE_BLOCK";
static char __pyx_k__DOUBLE_PRECISION[] = "DOUBLE_PRECISION";
static char __pyx_k__ERRORS_ARE_FATAL[] = "ERRORS_ARE_FATAL";
static char __pyx_k__ERR_NO_SUCH_FILE[] = "ERR_NO_SUCH_FILE";
static char __pyx_k__ERR_RMA_CONFLICT[] = "ERR_RMA_CONFLICT";
static char __pyx_k__F_DOUBLE_COMPLEX[] = "F_DOUBLE_COMPLEX";
static char __pyx_k__Get_error_string[] = "Get_error_string";
static char __pyx_k__Get_remote_group[] = "Get_remote_group";
static char __pyx_k__HIGHEST_PROTOCOL[] = "HIGHEST_PROTOCOL";
static char __pyx_k__MAX_ERROR_STRING[] = "MAX_ERROR_STRING";
static char __pyx_k__MODE_UNIQUE_OPEN[] = "MODE_UNIQUE_OPEN";
static char __pyx_k__SIGNED_LONG_LONG[] = "SIGNED_LONG_LONG";
static char __pyx_k__COMBINER_F90_REAL[] = "COMBINER_F90_REAL";
static char __pyx_k__COMBINER_HINDEXED[] = "COMBINER_HINDEXED";
static char __pyx_k__COMBINER_SUBARRAY[] = "COMBINER_SUBARRAY";
static char __pyx_k__DISTRIBUTE_CYCLIC[] = "DISTRIBUTE_CYCLIC";
static char __pyx_k__THREAD_SERIALIZED[] = "THREAD_SERIALIZED";
static char __pyx_k__TYPECLASS_COMPLEX[] = "TYPECLASS_COMPLEX";
static char __pyx_k__TYPECLASS_INTEGER[] = "TYPECLASS_INTEGER";
static char __pyx_k__Create_f90_complex[] = "Create_f90_complex";
static char __pyx_k__Create_f90_integer[] = "Create_f90_integer";
static char __pyx_k__Get_processor_name[] = "Get_processor_name";
static char __pyx_k__MAX_DATAREP_STRING[] = "MAX_DATAREP_STRING";
static char __pyx_k__MAX_PROCESSOR_NAME[] = "MAX_PROCESSOR_NAME";
static char __pyx_k__UNSIGNED_LONG_LONG[] = "UNSIGNED_LONG_LONG";
static char __pyx_k__COMBINER_CONTIGUOUS[] = "COMBINER_CONTIGUOUS";
static char __pyx_k__Get_neighbors_count[] = "Get_neighbors_count";
static char __pyx_k__NotImplementedError[] = "NotImplementedError";
static PyObject *__pyx_kp_s_1;
static PyObject *__pyx_kp_s_10;
static PyObject *__pyx_kp_s_13;
static PyObject *__pyx_kp_s_147;
static PyObject *__pyx_n_s_148;
static PyObject *__pyx_kp_s_149;
static PyObject *__pyx_kp_s_15;
static PyObject *__pyx_kp_s_150;
static PyObject *__pyx_kp_s_151;
static PyObject *__pyx_kp_s_152;
static PyObject *__pyx_n_s_153;
static PyObject *__pyx_n_s_154;
static PyObject *__pyx_n_s_155;
static PyObject *__pyx_n_s_156;
static PyObject *__pyx_n_s_157;
static PyObject *__pyx_n_s_158;
static PyObject *__pyx_n_s_159;
static PyObject *__pyx_n_s_160;
static PyObject *__pyx_n_s_161;
static PyObject *__pyx_kp_s_162;
static PyObject *__pyx_n_s_163;
static PyObject *__pyx_n_s_164;
static PyObject *__pyx_n_s_165;
static PyObject *__pyx_kp_s_17;
static PyObject *__pyx_kp_s_19;
static PyObject *__pyx_kp_s_21;
static PyObject *__pyx_kp_s_22;
static PyObject *__pyx_kp_s_23;
static PyObject *__pyx_kp_s_25;
static PyObject *__pyx_kp_s_27;
static PyObject *__pyx_kp_s_28;
static PyObject *__pyx_kp_s_29;
static PyObject *__pyx_kp_s_3;
static PyObject *__pyx_kp_s_30;
static PyObject *__pyx_kp_s_31;
static PyObject *__pyx_kp_s_35;
static PyObject *__pyx_kp_s_36;
static PyObject *__pyx_kp_s_39;
static PyObject *__pyx_kp_s_4;
static PyObject *__pyx_kp_s_41;
static PyObject *__pyx_kp_s_42;
static PyObject *__pyx_kp_s_43;
static PyObject *__pyx_kp_s_46;
static PyObject *__pyx_kp_s_48;
static PyObject *__pyx_kp_s_5;
static PyObject *__pyx_kp_b_50;
static PyObject *__pyx_kp_s_53;
static PyObject *__pyx_kp_s_54;
static PyObject *__pyx_kp_s_55;
static PyObject *__pyx_kp_s_66;
static PyObject *__pyx_kp_s_67;
static PyObject *__pyx_kp_s_77;
static PyObject *__pyx_kp_s_8;
static PyObject *__pyx_kp_s_89;
static PyObject *__pyx_kp_s_91;
static PyObject *__pyx_kp_s_93;
static PyObject *__pyx_kp_s_95;
static PyObject *__pyx_n_s__AINT;
static PyObject *__pyx_n_s__ANY_SOURCE;
static PyObject *__pyx_n_s__ANY_TAG;
static PyObject *__pyx_n_s__APPNUM;
static PyObject *__pyx_n_s__Add_error_class;
static PyObject *__pyx_n_s__Add_error_code;
static PyObject *__pyx_n_s__Add_error_string;
static PyObject *__pyx_n_s__Alloc_mem;
static PyObject *__pyx_n_s__Attach_buffer;
static PyObject *__pyx_n_s__AttributeError;
static PyObject *__pyx_n_s__B;
static PyObject *__pyx_n_s__BAND;
static PyObject *__pyx_n_s__BOOL;
static PyObject *__pyx_n_s__BOR;
static PyObject *__pyx_n_s__BOTTOM;
static PyObject *__pyx_n_s__BSEND_OVERHEAD;
static PyObject *__pyx_n_s__BXOR;
static PyObject *__pyx_n_s__BYTE;
static PyObject *__pyx_n_s__CART;
static PyObject *__pyx_n_s__CHAR;
static PyObject *__pyx_n_s__CHARACTER;
static PyObject *__pyx_n_s__COMBINER_CONTIGUOUS;
static PyObject *__pyx_n_s__COMBINER_DARRAY;
static PyObject *__pyx_n_s__COMBINER_DUP;
static PyObject *__pyx_n_s__COMBINER_F90_REAL;
static PyObject *__pyx_n_s__COMBINER_HINDEXED;
static PyObject *__pyx_n_s__COMBINER_HVECTOR;
static PyObject *__pyx_n_s__COMBINER_INDEXED;
static PyObject *__pyx_n_s__COMBINER_NAMED;
static PyObject *__pyx_n_s__COMBINER_RESIZED;
static PyObject *__pyx_n_s__COMBINER_STRUCT;
static PyObject *__pyx_n_s__COMBINER_SUBARRAY;
static PyObject *__pyx_n_s__COMBINER_VECTOR;
static PyObject *__pyx_n_s__COMM_NULL;
static PyObject *__pyx_n_s__COMM_SELF;
static PyObject *__pyx_n_s__COMM_WORLD;
static PyObject *__pyx_n_s__COMPLEX;
static PyObject *__pyx_n_s__COMPLEX16;
static PyObject *__pyx_n_s__COMPLEX32;
static PyObject *__pyx_n_s__COMPLEX4;
static PyObject *__pyx_n_s__COMPLEX8;
static PyObject *__pyx_n_s__CONGRUENT;
static PyObject *__pyx_n_s__CONTIGUOUS;
static PyObject *__pyx_n_s__C_BOOL;
static PyObject *__pyx_n_s__C_COMPLEX;
static PyObject *__pyx_n_s__C_DOUBLE_COMPLEX;
static PyObject *__pyx_n_s__C_FLOAT_COMPLEX;
static PyObject *__pyx_n_s__Close_port;
static PyObject *__pyx_n_s__Compare;
static PyObject *__pyx_n_s__Compute_dims;
static PyObject *__pyx_n_s__Create;
static PyObject *__pyx_n_s__Create_dup;
static PyObject *__pyx_n_s__Create_f90_complex;
static PyObject *__pyx_n_s__Create_f90_integer;
static PyObject *__pyx_n_s__Create_f90_real;
static PyObject *__pyx_n_s__Create_keyval;
static PyObject *__pyx_n_s__Create_resized;
static PyObject *__pyx_n_s__Create_struct;
static PyObject *__pyx_n_s__D;
static PyObject *__pyx_n_s__DARRAY;
static PyObject *__pyx_n_s__DATATYPE_NULL;
static PyObject *__pyx_n_s__DISP_CUR;
static PyObject *__pyx_n_s__DISTRIBUTE_BLOCK;
static PyObject *__pyx_n_s__DISTRIBUTE_CYCLIC;
static PyObject *__pyx_n_s__DISTRIBUTE_NONE;
static PyObject *__pyx_n_s__DIST_GRAPH;
static PyObject *__pyx_n_s__DOUBLE;
static PyObject *__pyx_n_s__DOUBLE_COMPLEX;
static PyObject *__pyx_n_s__DOUBLE_INT;
static PyObject *__pyx_n_s__DOUBLE_PRECISION;
static PyObject *__pyx_n_s__DUP;
static PyObject *__pyx_n_s__Delete;
static PyObject *__pyx_n_s__Detach_buffer;
static PyObject *__pyx_n_s__Difference;
static PyObject *__pyx_n_s__Dup;
static PyObject *__pyx_n_s__ERRHANDLER_NULL;
static PyObject *__pyx_n_s__ERRORS_ARE_FATAL;
static PyObject *__pyx_n_s__ERRORS_RETURN;
static PyObject *__pyx_n_s__ERR_ACCESS;
static PyObject *__pyx_n_s__ERR_AMODE;
static PyObject *__pyx_n_s__ERR_ARG;
static PyObject *__pyx_n_s__ERR_ASSERT;
static PyObject *__pyx_n_s__ERR_BAD_FILE;
static PyObject *__pyx_n_s__ERR_BASE;
static PyObject *__pyx_n_s__ERR_BUFFER;
static PyObject *__pyx_n_s__ERR_COMM;
static PyObject *__pyx_n_s__ERR_CONVERSION;
static PyObject *__pyx_n_s__ERR_COUNT;
static PyObject *__pyx_n_s__ERR_DIMS;
static PyObject *__pyx_n_s__ERR_DISP;
static PyObject *__pyx_n_s__ERR_DUP_DATAREP;
static PyObject *__pyx_n_s__ERR_FILE;
static PyObject *__pyx_n_s__ERR_FILE_EXISTS;
static PyObject *__pyx_n_s__ERR_FILE_IN_USE;
static PyObject *__pyx_n_s__ERR_GROUP;
static PyObject *__pyx_n_s__ERR_INFO;
static PyObject *__pyx_n_s__ERR_INFO_KEY;
static PyObject *__pyx_n_s__ERR_INFO_NOKEY;
static PyObject *__pyx_n_s__ERR_INFO_VALUE;
static PyObject *__pyx_n_s__ERR_INTERN;
static PyObject *__pyx_n_s__ERR_IN_STATUS;
static PyObject *__pyx_n_s__ERR_IO;
static PyObject *__pyx_n_s__ERR_KEYVAL;
static PyObject *__pyx_n_s__ERR_LASTCODE;
static PyObject *__pyx_n_s__ERR_LOCKTYPE;
static PyObject *__pyx_n_s__ERR_NAME;
static PyObject *__pyx_n_s__ERR_NOT_SAME;
static PyObject *__pyx_n_s__ERR_NO_MEM;
static PyObject *__pyx_n_s__ERR_NO_SPACE;
static PyObject *__pyx_n_s__ERR_NO_SUCH_FILE;
static PyObject *__pyx_n_s__ERR_OP;
static PyObject *__pyx_n_s__ERR_OTHER;
static PyObject *__pyx_n_s__ERR_PENDING;
static PyObject *__pyx_n_s__ERR_PORT;
static PyObject *__pyx_n_s__ERR_QUOTA;
static PyObject *__pyx_n_s__ERR_RANK;
static PyObject *__pyx_n_s__ERR_READ_ONLY;
static PyObject *__pyx_n_s__ERR_REQUEST;
static PyObject *__pyx_n_s__ERR_RMA_CONFLICT;
static PyObject *__pyx_n_s__ERR_RMA_SYNC;
static PyObject *__pyx_n_s__ERR_ROOT;
static PyObject *__pyx_n_s__ERR_SERVICE;
static PyObject *__pyx_n_s__ERR_SIZE;
static PyObject *__pyx_n_s__ERR_SPAWN;
static PyObject *__pyx_n_s__ERR_TAG;
static PyObject *__pyx_n_s__ERR_TOPOLOGY;
static PyObject *__pyx_n_s__ERR_TRUNCATE;
static PyObject *__pyx_n_s__ERR_TYPE;
static PyObject *__pyx_n_s__ERR_UNKNOWN;
static PyObject *__pyx_n_s__ERR_WIN;
static PyObject *__pyx_n_s__Exception;
static PyObject *__pyx_n_s__F;
static PyObject *__pyx_n_s__F90_COMPLEX;
static PyObject *__pyx_n_s__F90_INTEGER;
static PyObject *__pyx_n_s__F90_REAL;
static PyObject *__pyx_n_s__FILE_NULL;
static PyObject *__pyx_n_s__FLOAT;
static PyObject *__pyx_n_s__FLOAT_INT;
static PyObject *__pyx_n_s__F_BOOL;
static PyObject *__pyx_n_s__F_COMPLEX;
static PyObject *__pyx_n_s__F_DOUBLE;
static PyObject *__pyx_n_s__F_DOUBLE_COMPLEX;
static PyObject *__pyx_n_s__F_FLOAT;
static PyObject *__pyx_n_s__F_FLOAT_COMPLEX;
static PyObject *__pyx_n_s__F_INT;
static PyObject *__pyx_n_s__Finalize;
static PyObject *__pyx_n_s__Free_keyval;
static PyObject *__pyx_n_s__Free_mem;
static PyObject *__pyx_n_s__G;
static PyObject *__pyx_n_s__GRAPH;
static PyObject *__pyx_n_s__GROUP_EMPTY;
static PyObject *__pyx_n_s__GROUP_NULL;
static PyObject *__pyx_n_s__Get;
static PyObject *__pyx_n_s__Get_address;
static PyObject *__pyx_n_s__Get_amode;
static PyObject *__pyx_n_s__Get_atomicity;
static PyObject *__pyx_n_s__Get_count;
static PyObject *__pyx_n_s__Get_dim;
static PyObject *__pyx_n_s__Get_error;
static PyObject *__pyx_n_s__Get_error_class;
static PyObject *__pyx_n_s__Get_error_code;
static PyObject *__pyx_n_s__Get_error_string;
static PyObject *__pyx_n_s__Get_group;
static PyObject *__pyx_n_s__Get_info;
static PyObject *__pyx_n_s__Get_name;
static PyObject *__pyx_n_s__Get_neighbors;
static PyObject *__pyx_n_s__Get_neighbors_count;
static PyObject *__pyx_n_s__Get_nkeys;
static PyObject *__pyx_n_s__Get_nthkey;
static PyObject *__pyx_n_s__Get_parent;
static PyObject *__pyx_n_s__Get_processor_name;
static PyObject *__pyx_n_s__Get_rank;
static PyObject *__pyx_n_s__Get_remote_group;
static PyObject *__pyx_n_s__Get_remote_size;
static PyObject *__pyx_n_s__Get_size;
static PyObject *__pyx_n_s__Get_source;
static PyObject *__pyx_n_s__Get_tag;
static PyObject *__pyx_n_s__Get_topo;
static PyObject *__pyx_n_s__Get_topology;
static PyObject *__pyx_n_s__Get_version;
static PyObject *__pyx_n_s__H;
static PyObject *__pyx_n_s__HIGHEST_PROTOCOL;
static PyObject *__pyx_n_s__HINDEXED;
static PyObject *__pyx_n_s__HOST;
static PyObject *__pyx_n_s__HVECTOR;
static PyObject *__pyx_n_s__I;
static PyObject *__pyx_n_s__IDENT;
static PyObject *__pyx_n_s__INDEXED;
static PyObject *__pyx_n_s__INDEXED_BLOCK;
static PyObject *__pyx_n_s__INFO_NULL;
static PyObject *__pyx_n_s__INT;
static PyObject *__pyx_n_s__INT16_T;
static PyObject *__pyx_n_s__INT32_T;
static PyObject *__pyx_n_s__INT64_T;
static PyObject *__pyx_n_s__INT8_T;
static PyObject *__pyx_n_s__INTEGER;
static PyObject *__pyx_n_s__INTEGER1;
static PyObject *__pyx_n_s__INTEGER16;
static PyObject *__pyx_n_s__INTEGER2;
static PyObject *__pyx_n_s__INTEGER4;
static PyObject *__pyx_n_s__INTEGER8;
static PyObject *__pyx_n_s__INT_INT;
static PyObject *__pyx_n_s__IN_PLACE;
static PyObject *__pyx_n_s__IO;
static PyObject *__pyx_n_s__ImportError;
static PyObject *__pyx_n_s__Init;
static PyObject *__pyx_n_s__Init_thread;
static PyObject *__pyx_n_s__Intersect;
static PyObject *__pyx_n_s__Is_cancelled;
static PyObject *__pyx_n_s__Is_commutative;
static PyObject *__pyx_n_s__Is_finalized;
static PyObject *__pyx_n_s__Is_initialized;
static PyObject *__pyx_n_s__Is_inter;
static PyObject *__pyx_n_s__Is_intra;
static PyObject *__pyx_n_s__Is_thread_main;
static PyObject *__pyx_n_s__Join;
static PyObject *__pyx_n_s__KEYVAL_INVALID;
static PyObject *__pyx_n_s__KeyError;
static PyObject *__pyx_n_s__L;
static PyObject *__pyx_n_s__LAND;
static PyObject *__pyx_n_s__LASTUSEDCODE;
static PyObject *__pyx_n_s__LB;
static PyObject *__pyx_n_s__LOCK_EXCLUSIVE;
static PyObject *__pyx_n_s__LOCK_SHARED;
static PyObject *__pyx_n_s__LOGICAL;
static PyObject *__pyx_n_s__LOGICAL1;
static PyObject *__pyx_n_s__LOGICAL2;
static PyObject *__pyx_n_s__LOGICAL4;
static PyObject *__pyx_n_s__LOGICAL8;
static PyObject *__pyx_n_s__LONG;
static PyObject *__pyx_n_s__LONG_DOUBLE;
static PyObject *__pyx_n_s__LONG_DOUBLE_INT;
static PyObject *__pyx_n_s__LONG_INT;
static PyObject *__pyx_n_s__LONG_LONG;
static PyObject *__pyx_n_s__LOR;
static PyObject *__pyx_n_s__LXOR;
static PyObject *__pyx_n_s__Lookup_name;
static PyObject *__pyx_n_s__MAX;
static PyObject *__pyx_n_s__MAXLOC;
static PyObject *__pyx_n_s__MAX_DATAREP_STRING;
static PyObject *__pyx_n_s__MAX_ERROR_STRING;
static PyObject *__pyx_n_s__MAX_INFO_KEY;
static PyObject *__pyx_n_s__MAX_INFO_VAL;
static PyObject *__pyx_n_s__MAX_OBJECT_NAME;
static PyObject *__pyx_n_s__MAX_PORT_NAME;
static PyObject *__pyx_n_s__MAX_PROCESSOR_NAME;
static PyObject *__pyx_n_s__MIN;
static PyObject *__pyx_n_s__MINLOC;
static PyObject *__pyx_n_s__MODE_APPEND;
static PyObject *__pyx_n_s__MODE_CREATE;
static PyObject *__pyx_n_s__MODE_EXCL;
static PyObject *__pyx_n_s__MODE_NOCHECK;
static PyObject *__pyx_n_s__MODE_NOPRECEDE;
static PyObject *__pyx_n_s__MODE_NOPUT;
static PyObject *__pyx_n_s__MODE_NOSTORE;
static PyObject *__pyx_n_s__MODE_NOSUCCEED;
static PyObject *__pyx_n_s__MODE_RDONLY;
static PyObject *__pyx_n_s__MODE_RDWR;
static PyObject *__pyx_n_s__MODE_SEQUENTIAL;
static PyObject *__pyx_n_s__MODE_UNIQUE_OPEN;
static PyObject *__pyx_n_s__MODE_WRONLY;
static PyObject *__pyx_n_s__Match_size;
static PyObject *__pyx_n_s__NotImplemented;
static PyObject *__pyx_n_s__NotImplementedError;
static PyObject *__pyx_n_s__OFFSET;
static PyObject *__pyx_n_s__OP_NULL;
static PyObject *__pyx_n_s__ORDER_C;
static PyObject *__pyx_n_s__ORDER_F;
static PyObject *__pyx_n_s__ORDER_FORTRAN;
static PyObject *__pyx_n_s__Open;
static PyObject *__pyx_n_s__Open_port;
static PyObject *__pyx_n_s__PACKED;
static PyObject *__pyx_n_s__PROC_NULL;
static PyObject *__pyx_n_s__PROD;
static PyObject *__pyx_n_s__Pcontrol;
static PyObject *__pyx_n_s__Publish_name;
static PyObject *__pyx_n_s__Q;
static PyObject *__pyx_n_s__Query_thread;
static PyObject *__pyx_n_s__REAL;
static PyObject *__pyx_n_s__REAL16;
static PyObject *__pyx_n_s__REAL2;
static PyObject *__pyx_n_s__REAL4;
static PyObject *__pyx_n_s__REAL8;
static PyObject *__pyx_n_s__REPLACE;
static PyObject *__pyx_n_s__REQUEST_NULL;
static PyObject *__pyx_n_s__RESIZED;
static PyObject *__pyx_n_s__ROOT;
static PyObject *__pyx_n_s__Resized;
static PyObject *__pyx_n_s__RuntimeError;
static PyObject *__pyx_n_s__SEEK_CUR;
static PyObject *__pyx_n_s__SEEK_END;
static PyObject *__pyx_n_s__SEEK_SET;
static PyObject *__pyx_n_s__SHORT;
static PyObject *__pyx_n_s__SHORT_INT;
static PyObject *__pyx_n_s__SIGNED_CHAR;
static PyObject *__pyx_n_s__SIGNED_INT;
static PyObject *__pyx_n_s__SIGNED_LONG;
static PyObject *__pyx_n_s__SIGNED_LONG_LONG;
static PyObject *__pyx_n_s__SIGNED_SHORT;
static PyObject *__pyx_n_s__SIMILAR;
static PyObject *__pyx_n_s__SINT16_T;
static PyObject *__pyx_n_s__SINT32_T;
static PyObject *__pyx_n_s__SINT64_T;
static PyObject *__pyx_n_s__SINT8_T;
static PyObject *__pyx_n_s__STRUCT;
static PyObject *__pyx_n_s__SUBARRAY;
static PyObject *__pyx_n_s__SUBVERSION;
static PyObject *__pyx_n_s__SUCCESS;
static PyObject *__pyx_n_s__SUM;
static PyObject *__pyx_n_s__Set;
static PyObject *__pyx_n_s__Set_atomicity;
static PyObject *__pyx_n_s__Set_cancelled;
static PyObject *__pyx_n_s__Set_error;
static PyObject *__pyx_n_s__Set_info;
static PyObject *__pyx_n_s__Set_name;
static PyObject *__pyx_n_s__Set_source;
static PyObject *__pyx_n_s__Set_tag;
static PyObject *__pyx_n_s__Start;
static PyObject *__pyx_n_s__Startall;
static PyObject *__pyx_n_s__StringIO;
static PyObject *__pyx_n_s__SystemError;
static PyObject *__pyx_n_s__TAG_UB;
static PyObject *__pyx_n_s__THREAD_FUNNELED;
static PyObject *__pyx_n_s__THREAD_MULTIPLE;
static PyObject *__pyx_n_s__THREAD_SERIALIZED;
static PyObject *__pyx_n_s__THREAD_SINGLE;
static PyObject *__pyx_n_s__TWOINT;
static PyObject *__pyx_n_s__TYPECLASS_COMPLEX;
static PyObject *__pyx_n_s__TYPECLASS_INTEGER;
static PyObject *__pyx_n_s__TYPECLASS_REAL;
static PyObject *__pyx_n_s__Testall;
static PyObject *__pyx_n_s__Testany;
static PyObject *__pyx_n_s__Testsome;
static PyObject *__pyx_n_s__Translate_ranks;
static PyObject *__pyx_n_s__TypeError;
static PyObject *__pyx_n_s__UB;
static PyObject *__pyx_n_s__UINT16_T;
static PyObject *__pyx_n_s__UINT32_T;
static PyObject *__pyx_n_s__UINT64_T;
static PyObject *__pyx_n_s__UINT8_T;
static PyObject *__pyx_n_s__UNDEFINED;
static PyObject *__pyx_n_s__UNEQUAL;
static PyObject *__pyx_n_s__UNIVERSE_SIZE;
static PyObject *__pyx_n_s__UNSIGNED;
static PyObject *__pyx_n_s__UNSIGNED_CHAR;
static PyObject *__pyx_n_s__UNSIGNED_INT;
static PyObject *__pyx_n_s__UNSIGNED_LONG;
static PyObject *__pyx_n_s__UNSIGNED_LONG_LONG;
static PyObject *__pyx_n_s__UNSIGNED_SHORT;
static PyObject *__pyx_n_s__Union;
static PyObject *__pyx_n_s__Unpublish_name;
static PyObject *__pyx_n_s__VECTOR;
static PyObject *__pyx_n_s__VERSION;
static PyObject *__pyx_n_s__ValueError;
static PyObject *__pyx_n_s__WCHAR;
static PyObject *__pyx_n_s__WIN_BASE;
static PyObject *__pyx_n_s__WIN_DISP_UNIT;
static PyObject *__pyx_n_s__WIN_NULL;
static PyObject *__pyx_n_s__WIN_SIZE;
static PyObject *__pyx_n_s__WTIME_IS_GLOBAL;
static PyObject *__pyx_n_s__Waitall;
static PyObject *__pyx_n_s__Waitany;
static PyObject *__pyx_n_s__Waitsome;
static PyObject *__pyx_n_s__Wtick;
static PyObject *__pyx_n_s__Wtime;
static PyObject *__pyx_n_s__Zd;
static PyObject *__pyx_n_s__Zf;
static PyObject *__pyx_n_s__Zg;
static PyObject *__pyx_n_s____CTypeDict__;
static PyObject *__pyx_n_s____FTypeDict__;
static PyObject *__pyx_n_s____TypeDict__;
static PyObject *__pyx_n_s____bool__;
static PyObject *__pyx_n_s____call__;
static PyObject *__pyx_n_s____doc__;
static PyObject *__pyx_n_s____eq__;
static PyObject *__pyx_n_s____ge__;
static PyObject *__pyx_n_s____gt__;
static PyObject *__pyx_n_s____init__;
static PyObject *__pyx_n_s____int__;
static PyObject *__pyx_n_s____le__;
static PyObject *__pyx_n_s____lt__;
static PyObject *__pyx_n_s____main__;
static PyObject *__pyx_n_s____ne__;
static PyObject *__pyx_n_s____repr__;
static PyObject *__pyx_n_s____str__;
static PyObject *__pyx_n_s___p_pickle;
static PyObject *__pyx_n_s__amode;
static PyObject *__pyx_n_s__arg;
static PyObject *__pyx_n_s__args;
static PyObject *__pyx_n_s__array;
static PyObject *__pyx_n_s__assertion;
static PyObject *__pyx_n_s__attrval;
static PyObject *__pyx_n_s__b;
static PyObject *__pyx_n_s__blocklength;
static PyObject *__pyx_n_s__blocklengths;
static PyObject *__pyx_n_s__buf;
static PyObject *__pyx_n_s__c;
static PyObject *__pyx_n_s__c16;
static PyObject *__pyx_n_s__c32;
static PyObject *__pyx_n_s__c4;
static PyObject *__pyx_n_s__c8;
static PyObject *__pyx_n_s__cPickle;
static PyObject *__pyx_n_s__cStringIO;
static PyObject *__pyx_n_s__cancel_fn;
static PyObject *__pyx_n_s__char;
static PyObject *__pyx_n_s__color;
static PyObject *__pyx_n_s__comm;
static PyObject *__pyx_n_s__comm1;
static PyObject *__pyx_n_s__comm2;
static PyObject *__pyx_n_s__command;
static PyObject *__pyx_n_s__commute;
static PyObject *__pyx_n_s__coords;
static PyObject *__pyx_n_s__copy_fn;
static PyObject *__pyx_n_s__count;
static PyObject *__pyx_n_s__d;
static PyObject *__pyx_n_s__dargs;
static PyObject *__pyx_n_s__datarep;
static PyObject *__pyx_n_s__datatype;
static PyObject *__pyx_n_s__datatypes;
static PyObject *__pyx_n_s__default;
static PyObject *__pyx_n_s__degrees;
static PyObject *__pyx_n_s__delete_fn;
static PyObject *__pyx_n_s__dest;
static PyObject *__pyx_n_s__destinations;
static PyObject *__pyx_n_s__destweights;
static PyObject *__pyx_n_s__dims;
static PyObject *__pyx_n_s__direction;
static PyObject *__pyx_n_s__disp;
static PyObject *__pyx_n_s__disp_unit;
static PyObject *__pyx_n_s__displacements;
static PyObject *__pyx_n_s__distribs;
static PyObject *__pyx_n_s__doc;
static PyObject *__pyx_n_s__dtype;
static PyObject *__pyx_n_s__dumps;
static PyObject *__pyx_n_s__edges;
static PyObject *__pyx_n_s__errcodes;
static PyObject *__pyx_n_s__errhandler;
static PyObject *__pyx_n_s__error;
static PyObject *__pyx_n_s__error_class;
static PyObject *__pyx_n_s__error_code;
static PyObject *__pyx_n_s__error_string;
static PyObject *__pyx_n_s__errorclass;
static PyObject *__pyx_n_s__errorcode;
static PyObject *__pyx_n_s__etype;
static PyObject *__pyx_n_s__extent;
static PyObject *__pyx_n_s__f;
static PyObject *__pyx_n_s__f16;
static PyObject *__pyx_n_s__f2;
static PyObject *__pyx_n_s__f2py;
static PyObject *__pyx_n_s__f4;
static PyObject *__pyx_n_s__f8;
static PyObject *__pyx_n_s__fd;
static PyObject *__pyx_n_s__file;
static PyObject *__pyx_n_s__filename;
static PyObject *__pyx_n_s__filetype;
static PyObject *__pyx_n_s__finalize;
static PyObject *__pyx_n_s__flag;
static PyObject *__pyx_n_s__flush;
static PyObject *__pyx_n_s__free_fn;
static PyObject *__pyx_n_s__function;
static PyObject *__pyx_n_s__funneled;
static PyObject *__pyx_n_s__g;
static PyObject *__pyx_n_s__get_vendor;
static PyObject *__pyx_n_s__group;
static PyObject *__pyx_n_s__group1;
static PyObject *__pyx_n_s__group2;
static PyObject *__pyx_n_s__gsizes;
static PyObject *__pyx_n_s__h;
static PyObject *__pyx_n_s__high;
static PyObject *__pyx_n_s__i;
static PyObject *__pyx_n_s__i1;
static PyObject *__pyx_n_s__i16;
static PyObject *__pyx_n_s__i2;
static PyObject *__pyx_n_s__i4;
static PyObject *__pyx_n_s__i8;
static PyObject *__pyx_n_s__ierr;
static PyObject *__pyx_n_s__inbuf;
static PyObject *__pyx_n_s__index;
static PyObject *__pyx_n_s__info;
static PyObject *__pyx_n_s__initialize;
static PyObject *__pyx_n_s__inoutbuf;
static PyObject *__pyx_n_s__insert;
static PyObject *__pyx_n_s__join;
static PyObject *__pyx_n_s__kargs;
static PyObject *__pyx_n_s__key;
static PyObject *__pyx_n_s__keys;
static PyObject *__pyx_n_s__keyval;
static PyObject *__pyx_n_s__l;
static PyObject *__pyx_n_s__lb;
static PyObject *__pyx_n_s__level;
static PyObject *__pyx_n_s__load;
static PyObject *__pyx_n_s__loads;
static PyObject *__pyx_n_s__local_leader;
static PyObject *__pyx_n_s__location;
static PyObject *__pyx_n_s__lock_type;
static PyObject *__pyx_n_s__maxlen;
static PyObject *__pyx_n_s__maxprocs;
static PyObject *__pyx_n_s__memory;
static PyObject *__pyx_n_s__mpi4py;
static PyObject *__pyx_n_s__multiple;
static PyObject *__pyx_n_s__n;
static PyObject *__pyx_n_s__name;
static PyObject *__pyx_n_s__nnodes;
static PyObject *__pyx_n_s__no;
static PyObject *__pyx_n_s__ob_mpi;
static PyObject *__pyx_n_s__obj;
static PyObject *__pyx_n_s__offset;
static PyObject *__pyx_n_s__op;
static PyObject *__pyx_n_s__order;
static PyObject *__pyx_n_s__origin;
static PyObject *__pyx_n_s__other;
static PyObject *__pyx_n_s__outbuf;
static PyObject *__pyx_n_s__p;
static PyObject *__pyx_n_s__peer_comm;
static PyObject *__pyx_n_s__periods;
static PyObject *__pyx_n_s__pickle;
static PyObject *__pyx_n_s__pop;
static PyObject *__pyx_n_s__port_name;
static PyObject *__pyx_n_s__position;
static PyObject *__pyx_n_s__print_exc;
static PyObject *__pyx_n_s__property;
static PyObject *__pyx_n_s__psizes;
static PyObject *__pyx_n_s__q;
static PyObject *__pyx_n_s__query_fn;
static PyObject *__pyx_n_s__r;
static PyObject *__pyx_n_s__rank;
static PyObject *__pyx_n_s__ranks;
static PyObject *__pyx_n_s__ranks1;
static PyObject *__pyx_n_s__rc;
static PyObject *__pyx_n_s__rcount;
static PyObject *__pyx_n_s__read;
static PyObject *__pyx_n_s__recvbuf;
static PyObject *__pyx_n_s__recvcounts;
static PyObject *__pyx_n_s__recvobj;
static PyObject *__pyx_n_s__recvtag;
static PyObject *__pyx_n_s__remain_dims;
static PyObject *__pyx_n_s__remote_leader;
static PyObject *__pyx_n_s__reorder;
static PyObject *__pyx_n_s__request;
static PyObject *__pyx_n_s__requests;
static PyObject *__pyx_n_s__required;
static PyObject *__pyx_n_s__root;
static PyObject *__pyx_n_s__rtype;
static PyObject *__pyx_n_s__scount;
static PyObject *__pyx_n_s__self;
static PyObject *__pyx_n_s__sendbuf;
static PyObject *__pyx_n_s__sendobj;
static PyObject *__pyx_n_s__sendtag;
static PyObject *__pyx_n_s__serialized;
static PyObject *__pyx_n_s__service_name;
static PyObject *__pyx_n_s__single;
static PyObject *__pyx_n_s__size;
static PyObject *__pyx_n_s__sizes;
static PyObject *__pyx_n_s__source;
static PyObject *__pyx_n_s__sources;
static PyObject *__pyx_n_s__sourceweights;
static PyObject *__pyx_n_s__starts;
static PyObject *__pyx_n_s__status;
static PyObject *__pyx_n_s__statuses;
static PyObject *__pyx_n_s__stderr;
static PyObject *__pyx_n_s__stride;
static PyObject *__pyx_n_s__string;
static PyObject *__pyx_n_s__stype;
static PyObject *__pyx_n_s__subsizes;
static PyObject *__pyx_n_s__sys;
static PyObject *__pyx_n_s__tag;
static PyObject *__pyx_n_s__target;
static PyObject *__pyx_n_s__target_rank;
static PyObject *__pyx_n_s__testall;
static PyObject *__pyx_n_s__testany;
static PyObject *__pyx_n_s__thread_level;
static PyObject *__pyx_n_s__threaded;
static PyObject *__pyx_n_s__traceback;
static PyObject *__pyx_n_s__typeclass;
static PyObject *__pyx_n_s__typecode;
static PyObject *__pyx_n_s__u1;
static PyObject *__pyx_n_s__u2;
static PyObject *__pyx_n_s__u4;
static PyObject *__pyx_n_s__u8;
static PyObject *__pyx_n_s__value;
static PyObject *__pyx_n_s__waitall;
static PyObject *__pyx_n_s__waitany;
static PyObject *__pyx_n_s__warn;
static PyObject *__pyx_n_s__warnings;
static PyObject *__pyx_n_s__weights;
static PyObject *__pyx_n_s__whence;
static PyObject *__pyx_n_s__win;
static PyObject *__pyx_n_s__x;
static PyObject *__pyx_n_s__y;
static PyObject *__pyx_n_s__yes;
static PyObject *__pyx_int_0;
static PyObject *__pyx_int_1;
static PyObject *__pyx_int_neg_1;
static PyObject *__pyx_int_17;
static int __pyx_k_58;
static int __pyx_k_59;
static struct PyMPIDatatypeObject *__pyx_k_61;
static struct PyMPIOpObject *__pyx_k_71;
static struct PyMPIOpObject *__pyx_k_72;
static struct PyMPIOpObject *__pyx_k_73;
static struct PyMPIOpObject *__pyx_k_74;
static PyObject *__pyx_k_75;
static PyObject *__pyx_k_76;
static struct PyMPIInfoObject *__pyx_k_79;
static struct PyMPIInfoObject *__pyx_k_80;
static struct PyMPIOpObject *__pyx_k_81;
static struct PyMPIOpObject *__pyx_k_82;
static PyObject *__pyx_k_83;
static PyObject *__pyx_k_84;
static struct PyMPIInfoObject *__pyx_k_85;
static PyObject *__pyx_k_86;
static struct PyMPIInfoObject *__pyx_k_87;
static struct PyMPIInfoObject *__pyx_k_88;
static struct PyMPIInfoObject *__pyx_k_97;
static struct PyMPIInfoObject *__pyx_k_98;
static struct PyMPIInfoObject *__pyx_k_100;
static struct PyMPIIntracommObject *__pyx_k_101;
static struct PyMPIOpObject *__pyx_k_102;
static struct PyMPIInfoObject *__pyx_k_104;
static int __pyx_k_105;
static struct PyMPIInfoObject *__pyx_k_106;
static struct PyMPIInfoObject *__pyx_k_107;
static int __pyx_k_108;
static int __pyx_k_109;
static struct PyMPIInfoObject *__pyx_k_110;
static int __pyx_k_111;
static PyObject *__pyx_k_tuple_6;
static PyObject *__pyx_k_tuple_7;
static PyObject *__pyx_k_tuple_9;
static PyObject *__pyx_k_tuple_12;
static PyObject *__pyx_k_tuple_14;
static PyObject *__pyx_k_tuple_16;
static PyObject *__pyx_k_tuple_18;
static PyObject *__pyx_k_tuple_20;
static PyObject *__pyx_k_tuple_24;
static PyObject *__pyx_k_tuple_26;
static PyObject *__pyx_k_tuple_32;
static PyObject *__pyx_k_tuple_33;
static PyObject *__pyx_k_tuple_34;
static PyObject *__pyx_k_tuple_37;
static PyObject *__pyx_k_tuple_38;
static PyObject *__pyx_k_tuple_40;
static PyObject *__pyx_k_tuple_44;
static PyObject *__pyx_k_tuple_45;
static PyObject *__pyx_k_tuple_47;
static PyObject *__pyx_k_tuple_49;
static PyObject *__pyx_k_tuple_51;
static PyObject *__pyx_k_tuple_52;
static PyObject *__pyx_k_tuple_56;
static PyObject *__pyx_k_tuple_57;
static PyObject *__pyx_k_tuple_60;
static PyObject *__pyx_k_tuple_62;
static PyObject *__pyx_k_tuple_63;
static PyObject *__pyx_k_tuple_64;
static PyObject *__pyx_k_tuple_65;
static PyObject *__pyx_k_tuple_68;
static PyObject *__pyx_k_tuple_69;
static PyObject *__pyx_k_tuple_70;
static PyObject *__pyx_k_tuple_78;
static PyObject *__pyx_k_tuple_90;
static PyObject *__pyx_k_tuple_92;
static PyObject *__pyx_k_tuple_94;
static PyObject *__pyx_k_tuple_96;
static PyObject *__pyx_k_tuple_99;
static PyObject *__pyx_k_tuple_103;

/* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":25
 *     int finalize
 * 
 * cdef int warnRC(object attr, object value) except -1:             # <<<<<<<<<<<<<<
 *     cdef object warn
 *     from warnings import warn
 */

static int __pyx_f_6mpi4py_3MPI_warnRC(PyObject *__pyx_v_attr, PyObject *__pyx_v_value) {
  PyObject *__pyx_v_warn = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("warnRC");

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":27
 * cdef int warnRC(object attr, object value) except -1:
 *     cdef object warn
 *     from warnings import warn             # <<<<<<<<<<<<<<
 *     warn("mpi4py.rc: '%s': unexpected value '%r'" % (attr, value))
 * 
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__warn));
  PyList_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_n_s__warn));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__warn));
  __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s__warnings), ((PyObject *)__pyx_t_1), -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__warn); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_warn = __pyx_t_1;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":28
 *     cdef object warn
 *     from warnings import warn
 *     warn("mpi4py.rc: '%s': unexpected value '%r'" % (attr, value))             # <<<<<<<<<<<<<<
 * 
 * cdef int getRCParams(RCParams* rc) except -1:
 */
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_attr);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_attr);
  __Pyx_GIVEREF(__pyx_v_attr);
  __Pyx_INCREF(__pyx_v_value);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_1), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_Call(__pyx_v_warn, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.warnRC", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_warn);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":30
 *     warn("mpi4py.rc: '%s': unexpected value '%r'" % (attr, value))
 * 
 * cdef int getRCParams(RCParams* rc) except -1:             # <<<<<<<<<<<<<<
 *     #
 *     rc.initialize = 1
 */

static int __pyx_f_6mpi4py_3MPI_getRCParams(__pyx_t_6mpi4py_3MPI_RCParams *__pyx_v_rc) {
  PyObject *__pyx_v_rcmod = 0;
  PyObject *__pyx_v_initialize = 0;
  PyObject *__pyx_v_threaded = 0;
  PyObject *__pyx_v_thread_level = 0;
  PyObject *__pyx_v_finalize = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getRCParams");

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":32
 * cdef int getRCParams(RCParams* rc) except -1:
 *     #
 *     rc.initialize = 1             # <<<<<<<<<<<<<<
 *     rc.threaded = 1
 *     rc.thread_level = MPI_THREAD_MULTIPLE
 */
  __pyx_v_rc->initialize = 1;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":33
 *     #
 *     rc.initialize = 1
 *     rc.threaded = 1             # <<<<<<<<<<<<<<
 *     rc.thread_level = MPI_THREAD_MULTIPLE
 *     rc.finalize = 1
 */
  __pyx_v_rc->threaded = 1;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":34
 *     rc.initialize = 1
 *     rc.threaded = 1
 *     rc.thread_level = MPI_THREAD_MULTIPLE             # <<<<<<<<<<<<<<
 *     rc.finalize = 1
 *     #
 */
  __pyx_v_rc->thread_level = MPI_THREAD_MULTIPLE;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":35
 *     rc.threaded = 1
 *     rc.thread_level = MPI_THREAD_MULTIPLE
 *     rc.finalize = 1             # <<<<<<<<<<<<<<
 *     #
 *     cdef object rcmod
 */
  __pyx_v_rc->finalize = 1;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":38
 *     #
 *     cdef object rcmod
 *     try: from mpi4py import rc as rcmod             # <<<<<<<<<<<<<<
 *     except: return 0
 *     #
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {
      __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__rc));
      PyList_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_n_s__rc));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__rc));
      __pyx_t_5 = __Pyx_Import(((PyObject *)__pyx_n_s__mpi4py), ((PyObject *)__pyx_t_4), -1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__rc); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_4);
      __pyx_v_rcmod = __pyx_t_4;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":39
 *     cdef object rcmod
 *     try: from mpi4py import rc as rcmod
 *     except: return 0             # <<<<<<<<<<<<<<
 *     #
 *     cdef object initialize = True
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.getRCParams", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_6) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_r = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L6_except_return;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L4_exception_handled;
    }
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L10_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":41
 *     except: return 0
 *     #
 *     cdef object initialize = True             # <<<<<<<<<<<<<<
 *     cdef object threaded = True
 *     cdef object thread_level = 'multiple'
 */
  __pyx_t_6 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_v_initialize = __pyx_t_6;
  __pyx_t_6 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":42
 *     #
 *     cdef object initialize = True
 *     cdef object threaded = True             # <<<<<<<<<<<<<<
 *     cdef object thread_level = 'multiple'
 *     cdef object finalize = True
 */
  __pyx_t_6 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_v_threaded = __pyx_t_6;
  __pyx_t_6 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":43
 *     cdef object initialize = True
 *     cdef object threaded = True
 *     cdef object thread_level = 'multiple'             # <<<<<<<<<<<<<<
 *     cdef object finalize = True
 *     try: initialize = rcmod.initialize
 */
  __Pyx_INCREF(((PyObject *)__pyx_n_s__multiple));
  __pyx_v_thread_level = ((PyObject *)__pyx_n_s__multiple);

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":44
 *     cdef object threaded = True
 *     cdef object thread_level = 'multiple'
 *     cdef object finalize = True             # <<<<<<<<<<<<<<
 *     try: initialize = rcmod.initialize
 *     except: pass
 */
  __pyx_t_6 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_v_finalize = __pyx_t_6;
  __pyx_t_6 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":45
 *     cdef object thread_level = 'multiple'
 *     cdef object finalize = True
 *     try: initialize = rcmod.initialize             # <<<<<<<<<<<<<<
 *     except: pass
 *     try: threaded = rcmod.threaded
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_1);
    /*try:*/ {
      __pyx_t_6 = PyObject_GetAttr(__pyx_v_rcmod, __pyx_n_s__initialize); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_v_initialize);
      __pyx_v_initialize = __pyx_t_6;
      __pyx_t_6 = 0;
    }
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L20_try_end;
    __pyx_L13_error:;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":46
 *     cdef object finalize = True
 *     try: initialize = rcmod.initialize
 *     except: pass             # <<<<<<<<<<<<<<
 *     try: threaded = rcmod.threaded
 *     except: pass
 */
    /*except:*/ {
      PyErr_Restore(0,0,0);
      goto __pyx_L14_exception_handled;
    }
    __pyx_L14_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_2, __pyx_t_1);
    __pyx_L20_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":47
 *     try: initialize = rcmod.initialize
 *     except: pass
 *     try: threaded = rcmod.threaded             # <<<<<<<<<<<<<<
 *     except: pass
 *     try: thread_level = rcmod.thread_level
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {
      __pyx_t_6 = PyObject_GetAttr(__pyx_v_rcmod, __pyx_n_s__threaded); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L21_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_v_threaded);
      __pyx_v_threaded = __pyx_t_6;
      __pyx_t_6 = 0;
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L28_try_end;
    __pyx_L21_error:;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":48
 *     except: pass
 *     try: threaded = rcmod.threaded
 *     except: pass             # <<<<<<<<<<<<<<
 *     try: thread_level = rcmod.thread_level
 *     except: pass
 */
    /*except:*/ {
      PyErr_Restore(0,0,0);
      goto __pyx_L22_exception_handled;
    }
    __pyx_L22_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L28_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":49
 *     try: threaded = rcmod.threaded
 *     except: pass
 *     try: thread_level = rcmod.thread_level             # <<<<<<<<<<<<<<
 *     except: pass
 *     try: finalize = rcmod.finalize
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_1);
    /*try:*/ {
      __pyx_t_6 = PyObject_GetAttr(__pyx_v_rcmod, __pyx_n_s__thread_level); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L29_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_v_thread_level);
      __pyx_v_thread_level = __pyx_t_6;
      __pyx_t_6 = 0;
    }
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L36_try_end;
    __pyx_L29_error:;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":50
 *     except: pass
 *     try: thread_level = rcmod.thread_level
 *     except: pass             # <<<<<<<<<<<<<<
 *     try: finalize = rcmod.finalize
 *     except: pass
 */
    /*except:*/ {
      PyErr_Restore(0,0,0);
      goto __pyx_L30_exception_handled;
    }
    __pyx_L30_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_2, __pyx_t_1);
    __pyx_L36_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":51
 *     try: thread_level = rcmod.thread_level
 *     except: pass
 *     try: finalize = rcmod.finalize             # <<<<<<<<<<<<<<
 *     except: pass
 *     #
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {
      __pyx_t_6 = PyObject_GetAttr(__pyx_v_rcmod, __pyx_n_s__finalize); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L37_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_v_finalize);
      __pyx_v_finalize = __pyx_t_6;
      __pyx_t_6 = 0;
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L44_try_end;
    __pyx_L37_error:;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":52
 *     except: pass
 *     try: finalize = rcmod.finalize
 *     except: pass             # <<<<<<<<<<<<<<
 *     #
 *     if initialize in (True, 'yes'):
 */
    /*except:*/ {
      PyErr_Restore(0,0,0);
      goto __pyx_L38_exception_handled;
    }
    __pyx_L38_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L44_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":54
 *     except: pass
 *     #
 *     if initialize in (True, 'yes'):             # <<<<<<<<<<<<<<
 *         rc.initialize = 1
 *     elif initialize in (False, 'no'):
 */
  __Pyx_INCREF(__pyx_v_initialize);
  __pyx_t_6 = __pyx_v_initialize;
  __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!((int)__pyx_t_7)) {
    __pyx_t_8 = __Pyx_PyString_Equals(__pyx_t_6, ((PyObject *)__pyx_n_s__yes), Py_EQ); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_9 = ((int)__pyx_t_8);
  } else {
    __pyx_t_9 = ((int)__pyx_t_7);
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_7 = __pyx_t_9;
  if (__pyx_t_7) {

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":55
 *     #
 *     if initialize in (True, 'yes'):
 *         rc.initialize = 1             # <<<<<<<<<<<<<<
 *     elif initialize in (False, 'no'):
 *         rc.initialize = 0
 */
    __pyx_v_rc->initialize = 1;
    goto __pyx_L45;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":56
 *     if initialize in (True, 'yes'):
 *         rc.initialize = 1
 *     elif initialize in (False, 'no'):             # <<<<<<<<<<<<<<
 *         rc.initialize = 0
 *     else:
 */
  __Pyx_INCREF(__pyx_v_initialize);
  __pyx_t_6 = __pyx_v_initialize;
  __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!((int)__pyx_t_7)) {
    __pyx_t_9 = __Pyx_PyString_Equals(__pyx_t_6, ((PyObject *)__pyx_n_s__no), Py_EQ); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_8 = ((int)__pyx_t_9);
  } else {
    __pyx_t_8 = ((int)__pyx_t_7);
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_7 = __pyx_t_8;
  if (__pyx_t_7) {

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":57
 *         rc.initialize = 1
 *     elif initialize in (False, 'no'):
 *         rc.initialize = 0             # <<<<<<<<<<<<<<
 *     else:
 *         warnRC("initialize", initialize)
 */
    __pyx_v_rc->initialize = 0;
    goto __pyx_L45;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":59
 *         rc.initialize = 0
 *     else:
 *         warnRC("initialize", initialize)             # <<<<<<<<<<<<<<
 *     #
 *     if threaded in (True, 'yes'):
 */
    __pyx_t_6 = ((PyObject *)__pyx_n_s__initialize);
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_10 = __pyx_f_6mpi4py_3MPI_warnRC(__pyx_t_6, __pyx_v_initialize); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __pyx_L45:;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":61
 *         warnRC("initialize", initialize)
 *     #
 *     if threaded in (True, 'yes'):             # <<<<<<<<<<<<<<
 *         rc.threaded = 1
 *     elif threaded in (False, 'no'):
 */
  __Pyx_INCREF(__pyx_v_threaded);
  __pyx_t_6 = __pyx_v_threaded;
  __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!((int)__pyx_t_7)) {
    __pyx_t_8 = __Pyx_PyString_Equals(__pyx_t_6, ((PyObject *)__pyx_n_s__yes), Py_EQ); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_9 = ((int)__pyx_t_8);
  } else {
    __pyx_t_9 = ((int)__pyx_t_7);
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_7 = __pyx_t_9;
  if (__pyx_t_7) {

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":62
 *     #
 *     if threaded in (True, 'yes'):
 *         rc.threaded = 1             # <<<<<<<<<<<<<<
 *     elif threaded in (False, 'no'):
 *         rc.threaded = 0
 */
    __pyx_v_rc->threaded = 1;
    goto __pyx_L46;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":63
 *     if threaded in (True, 'yes'):
 *         rc.threaded = 1
 *     elif threaded in (False, 'no'):             # <<<<<<<<<<<<<<
 *         rc.threaded = 0
 *     else:
 */
  __Pyx_INCREF(__pyx_v_threaded);
  __pyx_t_6 = __pyx_v_threaded;
  __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!((int)__pyx_t_7)) {
    __pyx_t_9 = __Pyx_PyString_Equals(__pyx_t_6, ((PyObject *)__pyx_n_s__no), Py_EQ); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_8 = ((int)__pyx_t_9);
  } else {
    __pyx_t_8 = ((int)__pyx_t_7);
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_7 = __pyx_t_8;
  if (__pyx_t_7) {

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":64
 *         rc.threaded = 1
 *     elif threaded in (False, 'no'):
 *         rc.threaded = 0             # <<<<<<<<<<<<<<
 *     else:
 *         warnRC("threaded", threaded)
 */
    __pyx_v_rc->threaded = 0;
    goto __pyx_L46;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":66
 *         rc.threaded = 0
 *     else:
 *         warnRC("threaded", threaded)             # <<<<<<<<<<<<<<
 *     #
 *     if thread_level == 'single':
 */
    __pyx_t_6 = ((PyObject *)__pyx_n_s__threaded);
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_10 = __pyx_f_6mpi4py_3MPI_warnRC(__pyx_t_6, __pyx_v_threaded); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __pyx_L46:;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":68
 *         warnRC("threaded", threaded)
 *     #
 *     if thread_level == 'single':             # <<<<<<<<<<<<<<
 *         rc.thread_level = MPI_THREAD_SINGLE
 *     elif thread_level == 'funneled':
 */
  __pyx_t_7 = __Pyx_PyString_Equals(__pyx_v_thread_level, ((PyObject *)__pyx_n_s__single), Py_EQ); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_7) {

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":69
 *     #
 *     if thread_level == 'single':
 *         rc.thread_level = MPI_THREAD_SINGLE             # <<<<<<<<<<<<<<
 *     elif thread_level == 'funneled':
 *         rc.thread_level = MPI_THREAD_FUNNELED
 */
    __pyx_v_rc->thread_level = MPI_THREAD_SINGLE;
    goto __pyx_L47;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":70
 *     if thread_level == 'single':
 *         rc.thread_level = MPI_THREAD_SINGLE
 *     elif thread_level == 'funneled':             # <<<<<<<<<<<<<<
 *         rc.thread_level = MPI_THREAD_FUNNELED
 *     elif thread_level == 'serialized':
 */
  __pyx_t_7 = __Pyx_PyString_Equals(__pyx_v_thread_level, ((PyObject *)__pyx_n_s__funneled), Py_EQ); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_7) {

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":71
 *         rc.thread_level = MPI_THREAD_SINGLE
 *     elif thread_level == 'funneled':
 *         rc.thread_level = MPI_THREAD_FUNNELED             # <<<<<<<<<<<<<<
 *     elif thread_level == 'serialized':
 *         rc.thread_level = MPI_THREAD_SERIALIZED
 */
    __pyx_v_rc->thread_level = MPI_THREAD_FUNNELED;
    goto __pyx_L47;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":72
 *     elif thread_level == 'funneled':
 *         rc.thread_level = MPI_THREAD_FUNNELED
 *     elif thread_level == 'serialized':             # <<<<<<<<<<<<<<
 *         rc.thread_level = MPI_THREAD_SERIALIZED
 *     elif thread_level == 'multiple':
 */
  __pyx_t_7 = __Pyx_PyString_Equals(__pyx_v_thread_level, ((PyObject *)__pyx_n_s__serialized), Py_EQ); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_7) {

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":73
 *         rc.thread_level = MPI_THREAD_FUNNELED
 *     elif thread_level == 'serialized':
 *         rc.thread_level = MPI_THREAD_SERIALIZED             # <<<<<<<<<<<<<<
 *     elif thread_level == 'multiple':
 *         rc.thread_level = MPI_THREAD_MULTIPLE
 */
    __pyx_v_rc->thread_level = MPI_THREAD_SERIALIZED;
    goto __pyx_L47;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":74
 *     elif thread_level == 'serialized':
 *         rc.thread_level = MPI_THREAD_SERIALIZED
 *     elif thread_level == 'multiple':             # <<<<<<<<<<<<<<
 *         rc.thread_level = MPI_THREAD_MULTIPLE
 *     else:
 */
  __pyx_t_7 = __Pyx_PyString_Equals(__pyx_v_thread_level, ((PyObject *)__pyx_n_s__multiple), Py_EQ); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_7) {

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":75
 *         rc.thread_level = MPI_THREAD_SERIALIZED
 *     elif thread_level == 'multiple':
 *         rc.thread_level = MPI_THREAD_MULTIPLE             # <<<<<<<<<<<<<<
 *     else:
 *         warnRC("thread_level", thread_level)
 */
    __pyx_v_rc->thread_level = MPI_THREAD_MULTIPLE;
    goto __pyx_L47;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":77
 *         rc.thread_level = MPI_THREAD_MULTIPLE
 *     else:
 *         warnRC("thread_level", thread_level)             # <<<<<<<<<<<<<<
 *     #
 *     if finalize in (True, 'yes'):
 */
    __pyx_t_6 = ((PyObject *)__pyx_n_s__thread_level);
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_10 = __pyx_f_6mpi4py_3MPI_warnRC(__pyx_t_6, __pyx_v_thread_level); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __pyx_L47:;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":79
 *         warnRC("thread_level", thread_level)
 *     #
 *     if finalize in (True, 'yes'):             # <<<<<<<<<<<<<<
 *         rc.finalize = 1
 *     elif finalize in (False, 'no'):
 */
  __Pyx_INCREF(__pyx_v_finalize);
  __pyx_t_6 = __pyx_v_finalize;
  __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!((int)__pyx_t_7)) {
    __pyx_t_8 = __Pyx_PyString_Equals(__pyx_t_6, ((PyObject *)__pyx_n_s__yes), Py_EQ); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_9 = ((int)__pyx_t_8);
  } else {
    __pyx_t_9 = ((int)__pyx_t_7);
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_7 = __pyx_t_9;
  if (__pyx_t_7) {

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":80
 *     #
 *     if finalize in (True, 'yes'):
 *         rc.finalize = 1             # <<<<<<<<<<<<<<
 *     elif finalize in (False, 'no'):
 *         rc.finalize = 0
 */
    __pyx_v_rc->finalize = 1;
    goto __pyx_L48;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":81
 *     if finalize in (True, 'yes'):
 *         rc.finalize = 1
 *     elif finalize in (False, 'no'):             # <<<<<<<<<<<<<<
 *         rc.finalize = 0
 *     else:
 */
  __Pyx_INCREF(__pyx_v_finalize);
  __pyx_t_6 = __pyx_v_finalize;
  __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!((int)__pyx_t_7)) {
    __pyx_t_9 = __Pyx_PyString_Equals(__pyx_t_6, ((PyObject *)__pyx_n_s__no), Py_EQ); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_8 = ((int)__pyx_t_9);
  } else {
    __pyx_t_8 = ((int)__pyx_t_7);
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_7 = __pyx_t_8;
  if (__pyx_t_7) {

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":82
 *         rc.finalize = 1
 *     elif finalize in (False, 'no'):
 *         rc.finalize = 0             # <<<<<<<<<<<<<<
 *     else:
 *         warnRC("finalize", finalize)
 */
    __pyx_v_rc->finalize = 0;
    goto __pyx_L48;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":84
 *         rc.finalize = 0
 *     else:
 *         warnRC("finalize", finalize)             # <<<<<<<<<<<<<<
 *     #
 *     return 0
 */
    __pyx_t_6 = ((PyObject *)__pyx_n_s__finalize);
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_10 = __pyx_f_6mpi4py_3MPI_warnRC(__pyx_t_6, __pyx_v_finalize); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __pyx_L48:;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":86
 *         warnRC("finalize", finalize)
 *     #
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.getRCParams", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rcmod);
  __Pyx_XDECREF(__pyx_v_initialize);
  __Pyx_XDECREF(__pyx_v_threaded);
  __Pyx_XDECREF(__pyx_v_thread_level);
  __Pyx_XDECREF(__pyx_v_finalize);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":104
 * PyMPI_CLEANUP_DONE = 0
 * 
 * cdef int initialize() except -1:             # <<<<<<<<<<<<<<
 *     global inited_atimport
 *     global finalize_atexit
 */

static int __pyx_f_6mpi4py_3MPI_initialize(void) {
  int __pyx_v_ierr;
  int __pyx_v_initialized;
  int __pyx_v_finalized;
  __pyx_t_6mpi4py_3MPI_RCParams __pyx_v_rc;
  int __pyx_v_required;
  int __pyx_v_provided;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("initialize");

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":107
 *     global inited_atimport
 *     global finalize_atexit
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     # MPI initialized ?
 *     cdef int initialized = 1
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":109
 *     cdef int ierr = MPI_SUCCESS
 *     # MPI initialized ?
 *     cdef int initialized = 1             # <<<<<<<<<<<<<<
 *     ierr = MPI_Initialized(&initialized)
 *     # MPI finalized ?
 */
  __pyx_v_initialized = 1;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":110
 *     # MPI initialized ?
 *     cdef int initialized = 1
 *     ierr = MPI_Initialized(&initialized)             # <<<<<<<<<<<<<<
 *     # MPI finalized ?
 *     cdef int finalized = 1
 */
  __pyx_v_ierr = MPI_Initialized((&__pyx_v_initialized));

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":112
 *     ierr = MPI_Initialized(&initialized)
 *     # MPI finalized ?
 *     cdef int finalized = 1             # <<<<<<<<<<<<<<
 *     ierr = MPI_Finalized(&finalized)
 *     # Do we have to initialize MPI?
 */
  __pyx_v_finalized = 1;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":113
 *     # MPI finalized ?
 *     cdef int finalized = 1
 *     ierr = MPI_Finalized(&finalized)             # <<<<<<<<<<<<<<
 *     # Do we have to initialize MPI?
 *     if initialized:
 */
  __pyx_v_ierr = MPI_Finalized((&__pyx_v_finalized));

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":115
 *     ierr = MPI_Finalized(&finalized)
 *     # Do we have to initialize MPI?
 *     if initialized:             # <<<<<<<<<<<<<<
 *         if not finalized:
 *             # Cleanup at (the very end of) Python exit
 */
  if (__pyx_v_initialized) {

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":116
 *     # Do we have to initialize MPI?
 *     if initialized:
 *         if not finalized:             # <<<<<<<<<<<<<<
 *             # Cleanup at (the very end of) Python exit
 *             if Py_AtExit(atexit) < 0:
 */
    __pyx_t_1 = (!__pyx_v_finalized);
    if (__pyx_t_1) {

      /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":118
 *         if not finalized:
 *             # Cleanup at (the very end of) Python exit
 *             if Py_AtExit(atexit) < 0:             # <<<<<<<<<<<<<<
 *                 PySys_WriteStderr(b"warning: could not register "
 *                                   b"cleanup with Py_AtExit()\n", 0)
 */
      __pyx_t_1 = (Py_AtExit(__pyx_f_6mpi4py_3MPI_atexit) < 0);
      if (__pyx_t_1) {

        /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":119
 *             # Cleanup at (the very end of) Python exit
 *             if Py_AtExit(atexit) < 0:
 *                 PySys_WriteStderr(b"warning: could not register "             # <<<<<<<<<<<<<<
 *                                   b"cleanup with Py_AtExit()\n", 0)
 *         return 0
 */
        PySys_WriteStderr(__pyx_k_2, 0);
        goto __pyx_L5;
      }
      __pyx_L5:;
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":121
 *                 PySys_WriteStderr(b"warning: could not register "
 *                                   b"cleanup with Py_AtExit()\n", 0)
 *         return 0             # <<<<<<<<<<<<<<
 *     # Use user parameters from 'mpi4py.rc' module
 *     cdef RCParams rc
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":124
 *     # Use user parameters from 'mpi4py.rc' module
 *     cdef RCParams rc
 *     getRCParams(&rc)             # <<<<<<<<<<<<<<
 *     cdef int required = MPI_THREAD_SINGLE
 *     cdef int provided = MPI_THREAD_SINGLE
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_getRCParams((&__pyx_v_rc)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":125
 *     cdef RCParams rc
 *     getRCParams(&rc)
 *     cdef int required = MPI_THREAD_SINGLE             # <<<<<<<<<<<<<<
 *     cdef int provided = MPI_THREAD_SINGLE
 *     if rc.initialize: # We have to initialize MPI
 */
  __pyx_v_required = MPI_THREAD_SINGLE;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":126
 *     getRCParams(&rc)
 *     cdef int required = MPI_THREAD_SINGLE
 *     cdef int provided = MPI_THREAD_SINGLE             # <<<<<<<<<<<<<<
 *     if rc.initialize: # We have to initialize MPI
 *         if rc.threaded:
 */
  __pyx_v_provided = MPI_THREAD_SINGLE;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":127
 *     cdef int required = MPI_THREAD_SINGLE
 *     cdef int provided = MPI_THREAD_SINGLE
 *     if rc.initialize: # We have to initialize MPI             # <<<<<<<<<<<<<<
 *         if rc.threaded:
 *             required = rc.thread_level
 */
  if (__pyx_v_rc.initialize) {

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":128
 *     cdef int provided = MPI_THREAD_SINGLE
 *     if rc.initialize: # We have to initialize MPI
 *         if rc.threaded:             # <<<<<<<<<<<<<<
 *             required = rc.thread_level
 *             ierr = MPI_Init_thread(NULL, NULL, required, &provided)
 */
    if (__pyx_v_rc.threaded) {

      /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":129
 *     if rc.initialize: # We have to initialize MPI
 *         if rc.threaded:
 *             required = rc.thread_level             # <<<<<<<<<<<<<<
 *             ierr = MPI_Init_thread(NULL, NULL, required, &provided)
 *             if ierr != MPI_SUCCESS: raise RuntimeError(
 */
      __pyx_v_required = __pyx_v_rc.thread_level;

      /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":130
 *         if rc.threaded:
 *             required = rc.thread_level
 *             ierr = MPI_Init_thread(NULL, NULL, required, &provided)             # <<<<<<<<<<<<<<
 *             if ierr != MPI_SUCCESS: raise RuntimeError(
 *                 "MPI_Init_thread() failed [error code: %d]" % ierr)
 */
      __pyx_v_ierr = MPI_Init_thread(NULL, NULL, __pyx_v_required, (&__pyx_v_provided));

      /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":131
 *             required = rc.thread_level
 *             ierr = MPI_Init_thread(NULL, NULL, required, &provided)
 *             if ierr != MPI_SUCCESS: raise RuntimeError(             # <<<<<<<<<<<<<<
 *                 "MPI_Init_thread() failed [error code: %d]" % ierr)
 *         else:
 */
      __pyx_t_1 = (__pyx_v_ierr != MPI_SUCCESS);
      if (__pyx_t_1) {

        /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":132
 *             ierr = MPI_Init_thread(NULL, NULL, required, &provided)
 *             if ierr != MPI_SUCCESS: raise RuntimeError(
 *                 "MPI_Init_thread() failed [error code: %d]" % ierr)             # <<<<<<<<<<<<<<
 *         else:
 *             ierr = MPI_Init(NULL, NULL)
 */
        __pyx_t_3 = PyInt_FromLong(__pyx_v_ierr); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_3), __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_4));
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_3));
        PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_4));
        __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
        __pyx_t_4 = 0;
        __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
        __Pyx_Raise(__pyx_t_4, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        {__pyx_filename = __pyx_f[7]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L8;
      }
      __pyx_L8:;
      goto __pyx_L7;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":134
 *                 "MPI_Init_thread() failed [error code: %d]" % ierr)
 *         else:
 *             ierr = MPI_Init(NULL, NULL)             # <<<<<<<<<<<<<<
 *             if ierr != MPI_SUCCESS: raise RuntimeError(
 *                 "MPI_Init() failed [error code: %d]" % ierr)
 */
      __pyx_v_ierr = MPI_Init(NULL, NULL);

      /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":135
 *         else:
 *             ierr = MPI_Init(NULL, NULL)
 *             if ierr != MPI_SUCCESS: raise RuntimeError(             # <<<<<<<<<<<<<<
 *                 "MPI_Init() failed [error code: %d]" % ierr)
 *         inited_atimport = 1 # We initialized MPI
 */
      __pyx_t_1 = (__pyx_v_ierr != MPI_SUCCESS);
      if (__pyx_t_1) {

        /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":136
 *             ierr = MPI_Init(NULL, NULL)
 *             if ierr != MPI_SUCCESS: raise RuntimeError(
 *                 "MPI_Init() failed [error code: %d]" % ierr)             # <<<<<<<<<<<<<<
 *         inited_atimport = 1 # We initialized MPI
 *         if rc.finalize:     # We have to finalize MPI
 */
        __pyx_t_4 = PyInt_FromLong(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_4), __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_3));
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_4));
        PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_3));
        __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
        __pyx_t_3 = 0;
        __pyx_t_3 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        {__pyx_filename = __pyx_f[7]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L9;
      }
      __pyx_L9:;
    }
    __pyx_L7:;

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":137
 *             if ierr != MPI_SUCCESS: raise RuntimeError(
 *                 "MPI_Init() failed [error code: %d]" % ierr)
 *         inited_atimport = 1 # We initialized MPI             # <<<<<<<<<<<<<<
 *         if rc.finalize:     # We have to finalize MPI
 *             finalize_atexit = 1
 */
    __pyx_v_6mpi4py_3MPI_inited_atimport = 1;

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":138
 *                 "MPI_Init() failed [error code: %d]" % ierr)
 *         inited_atimport = 1 # We initialized MPI
 *         if rc.finalize:     # We have to finalize MPI             # <<<<<<<<<<<<<<
 *             finalize_atexit = 1
 *     # Cleanup at (the very end of) Python exit
 */
    if (__pyx_v_rc.finalize) {

      /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":139
 *         inited_atimport = 1 # We initialized MPI
 *         if rc.finalize:     # We have to finalize MPI
 *             finalize_atexit = 1             # <<<<<<<<<<<<<<
 *     # Cleanup at (the very end of) Python exit
 *     if Py_AtExit(atexit) < 0:
 */
      __pyx_v_6mpi4py_3MPI_finalize_atexit = 1;
      goto __pyx_L10;
    }
    __pyx_L10:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":141
 *             finalize_atexit = 1
 *     # Cleanup at (the very end of) Python exit
 *     if Py_AtExit(atexit) < 0:             # <<<<<<<<<<<<<<
 *         PySys_WriteStderr(b"warning: could not register "
 *                           b"cleanup with Py_AtExit()\n", 0)
 */
  __pyx_t_1 = (Py_AtExit(__pyx_f_6mpi4py_3MPI_atexit) < 0);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":142
 *     # Cleanup at (the very end of) Python exit
 *     if Py_AtExit(atexit) < 0:
 *         PySys_WriteStderr(b"warning: could not register "             # <<<<<<<<<<<<<<
 *                           b"cleanup with Py_AtExit()\n", 0)
 *     return 0
 */
    PySys_WriteStderr(__pyx_k_2, 0);
    goto __pyx_L11;
  }
  __pyx_L11:;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":144
 *         PySys_WriteStderr(b"warning: could not register "
 *                           b"cleanup with Py_AtExit()\n", 0)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int mpi_active() nogil:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.initialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":146
 *     return 0
 * 
 * cdef inline int mpi_active() nogil:             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_SUCCESS
 *     # MPI initialized ?
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_mpi_active(void) {
  int __pyx_v_ierr;
  int __pyx_v_initialized;
  int __pyx_v_finalized;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":147
 * 
 * cdef inline int mpi_active() nogil:
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     # MPI initialized ?
 *     cdef int initialized = 0
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":149
 *     cdef int ierr = MPI_SUCCESS
 *     # MPI initialized ?
 *     cdef int initialized = 0             # <<<<<<<<<<<<<<
 *     ierr = MPI_Initialized(&initialized)
 *     if not initialized or ierr: return 0
 */
  __pyx_v_initialized = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":150
 *     # MPI initialized ?
 *     cdef int initialized = 0
 *     ierr = MPI_Initialized(&initialized)             # <<<<<<<<<<<<<<
 *     if not initialized or ierr: return 0
 *     # MPI finalized ?
 */
  __pyx_v_ierr = MPI_Initialized((&__pyx_v_initialized));

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":151
 *     cdef int initialized = 0
 *     ierr = MPI_Initialized(&initialized)
 *     if not initialized or ierr: return 0             # <<<<<<<<<<<<<<
 *     # MPI finalized ?
 *     cdef int finalized = 1
 */
  __pyx_t_1 = (!__pyx_v_initialized);
  if (!__pyx_t_1) {
    __pyx_t_2 = __pyx_v_ierr;
  } else {
    __pyx_t_2 = __pyx_t_1;
  }
  if (__pyx_t_2) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":153
 *     if not initialized or ierr: return 0
 *     # MPI finalized ?
 *     cdef int finalized = 1             # <<<<<<<<<<<<<<
 *     ierr = MPI_Finalized(&finalized)
 *     if finalized or ierr: return 0
 */
  __pyx_v_finalized = 1;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":154
 *     # MPI finalized ?
 *     cdef int finalized = 1
 *     ierr = MPI_Finalized(&finalized)             # <<<<<<<<<<<<<<
 *     if finalized or ierr: return 0
 *     # MPI should be active ...
 */
  __pyx_v_ierr = MPI_Finalized((&__pyx_v_finalized));

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":155
 *     cdef int finalized = 1
 *     ierr = MPI_Finalized(&finalized)
 *     if finalized or ierr: return 0             # <<<<<<<<<<<<<<
 *     # MPI should be active ...
 *     return 1
 */
  if (!__pyx_v_finalized) {
    __pyx_t_2 = __pyx_v_ierr;
  } else {
    __pyx_t_2 = __pyx_v_finalized;
  }
  if (__pyx_t_2) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":157
 *     if finalized or ierr: return 0
 *     # MPI should be active ...
 *     return 1             # <<<<<<<<<<<<<<
 * 
 * cdef void startup() nogil:
 */
  __pyx_r = 1;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":159
 *     return 1
 * 
 * cdef void startup() nogil:             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_SUCCESS
 *     if not mpi_active(): return
 */

static void __pyx_f_6mpi4py_3MPI_startup(void) {
  int __pyx_v_ierr;
  int __pyx_t_1;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":160
 * 
 * cdef void startup() nogil:
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return
 *     #DBG# fprintf(stderr, b"statup: BEGIN\n"); fflush(stderr)
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":161
 * cdef void startup() nogil:
 *     cdef int ierr = MPI_SUCCESS
 *     if not mpi_active(): return             # <<<<<<<<<<<<<<
 *     #DBG# fprintf(stderr, b"statup: BEGIN\n"); fflush(stderr)
 *     ierr = PyMPI_StartUp();
 */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":163
 *     if not mpi_active(): return
 *     #DBG# fprintf(stderr, b"statup: BEGIN\n"); fflush(stderr)
 *     ierr = PyMPI_StartUp();             # <<<<<<<<<<<<<<
 *     if ierr: pass
 *     #DBG# fprintf(stderr, b"statup: END\n"); fflush(stderr)
 */
  __pyx_v_ierr = PyMPI_StartUp();

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":164
 *     #DBG# fprintf(stderr, b"statup: BEGIN\n"); fflush(stderr)
 *     ierr = PyMPI_StartUp();
 *     if ierr: pass             # <<<<<<<<<<<<<<
 *     #DBG# fprintf(stderr, b"statup: END\n"); fflush(stderr)
 * 
 */
  if (__pyx_v_ierr) {
    goto __pyx_L4;
  }
  __pyx_L4:;

  __pyx_L0:;
}

/* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":167
 *     #DBG# fprintf(stderr, b"statup: END\n"); fflush(stderr)
 * 
 * cdef void cleanup() nogil:             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_SUCCESS
 *     if not mpi_active(): return
 */

static void __pyx_f_6mpi4py_3MPI_cleanup(void) {
  int __pyx_v_ierr;
  int __pyx_t_1;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":168
 * 
 * cdef void cleanup() nogil:
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return
 *     #DBG# fprintf(stderr, b"cleanup: BEGIN\n"); fflush(stderr)
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":169
 * cdef void cleanup() nogil:
 *     cdef int ierr = MPI_SUCCESS
 *     if not mpi_active(): return             # <<<<<<<<<<<<<<
 *     #DBG# fprintf(stderr, b"cleanup: BEGIN\n"); fflush(stderr)
 *     ierr = PyMPI_CleanUp()
 */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":171
 *     if not mpi_active(): return
 *     #DBG# fprintf(stderr, b"cleanup: BEGIN\n"); fflush(stderr)
 *     ierr = PyMPI_CleanUp()             # <<<<<<<<<<<<<<
 *     if ierr: pass
 *     #DBG# fprintf(stderr, b"cleanup: END\n"); fflush(stderr)
 */
  __pyx_v_ierr = PyMPI_CleanUp();

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":172
 *     #DBG# fprintf(stderr, b"cleanup: BEGIN\n"); fflush(stderr)
 *     ierr = PyMPI_CleanUp()
 *     if ierr: pass             # <<<<<<<<<<<<<<
 *     #DBG# fprintf(stderr, b"cleanup: END\n"); fflush(stderr)
 * 
 */
  if (__pyx_v_ierr) {
    goto __pyx_L4;
  }
  __pyx_L4:;

  __pyx_L0:;
}

/* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":175
 *     #DBG# fprintf(stderr, b"cleanup: END\n"); fflush(stderr)
 * 
 * cdef void atexit() nogil:             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_SUCCESS
 *     if not mpi_active(): return
 */

static void __pyx_f_6mpi4py_3MPI_atexit(void) {
  int __pyx_v_ierr;
  int __pyx_t_1;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":176
 * 
 * cdef void atexit() nogil:
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return
 *     #DBG# fprintf(stderr, b"atexit: BEGIN\n"); fflush(stderr)
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":177
 * cdef void atexit() nogil:
 *     cdef int ierr = MPI_SUCCESS
 *     if not mpi_active(): return             # <<<<<<<<<<<<<<
 *     #DBG# fprintf(stderr, b"atexit: BEGIN\n"); fflush(stderr)
 *     cleanup()
 */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":179
 *     if not mpi_active(): return
 *     #DBG# fprintf(stderr, b"atexit: BEGIN\n"); fflush(stderr)
 *     cleanup()             # <<<<<<<<<<<<<<
 *     if not finalize_atexit: return
 *     ierr = MPI_Finalize()
 */
  __pyx_f_6mpi4py_3MPI_cleanup();

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":180
 *     #DBG# fprintf(stderr, b"atexit: BEGIN\n"); fflush(stderr)
 *     cleanup()
 *     if not finalize_atexit: return             # <<<<<<<<<<<<<<
 *     ierr = MPI_Finalize()
 *     if ierr: pass
 */
  __pyx_t_1 = (!__pyx_v_6mpi4py_3MPI_finalize_atexit);
  if (__pyx_t_1) {
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":181
 *     cleanup()
 *     if not finalize_atexit: return
 *     ierr = MPI_Finalize()             # <<<<<<<<<<<<<<
 *     if ierr: pass
 *     #DBG# fprintf(stderr, b"atexit: END\n"); fflush(stderr)
 */
  __pyx_v_ierr = MPI_Finalize();

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":182
 *     if not finalize_atexit: return
 *     ierr = MPI_Finalize()
 *     if ierr: pass             # <<<<<<<<<<<<<<
 *     #DBG# fprintf(stderr, b"atexit: END\n"); fflush(stderr)
 * 
 */
  if (__pyx_v_ierr) {
    goto __pyx_L5;
  }
  __pyx_L5:;

  __pyx_L0:;
}

/* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":196
 * cdef object MPIException = <object>PyExc_RuntimeError
 * 
 * cdef int PyMPI_Raise(int ierr) except -1 with gil:             # <<<<<<<<<<<<<<
 *     if ierr == -1:
 *         PyErr_SetObject(<object>PyExc_NotImplementedError, None)
 */

static int __pyx_f_6mpi4py_3MPI_PyMPI_Raise(int __pyx_v_ierr) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyMPI_Raise");

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":197
 * 
 * cdef int PyMPI_Raise(int ierr) except -1 with gil:
 *     if ierr == -1:             # <<<<<<<<<<<<<<
 *         PyErr_SetObject(<object>PyExc_NotImplementedError, None)
 *         return 0
 */
  __pyx_t_1 = (__pyx_v_ierr == -1);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":198
 * cdef int PyMPI_Raise(int ierr) except -1 with gil:
 *     if ierr == -1:
 *         PyErr_SetObject(<object>PyExc_NotImplementedError, None)             # <<<<<<<<<<<<<<
 *         return 0
 *     if (<void*>MPIException) != NULL:
 */
    __pyx_t_2 = ((PyObject *)PyExc_NotImplementedError);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = Py_None;
    __Pyx_INCREF(__pyx_t_3);
    PyErr_SetObject(__pyx_t_2, __pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":199
 *     if ierr == -1:
 *         PyErr_SetObject(<object>PyExc_NotImplementedError, None)
 *         return 0             # <<<<<<<<<<<<<<
 *     if (<void*>MPIException) != NULL:
 *         PyErr_SetObject(MPIException, <long>ierr)
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":200
 *         PyErr_SetObject(<object>PyExc_NotImplementedError, None)
 *         return 0
 *     if (<void*>MPIException) != NULL:             # <<<<<<<<<<<<<<
 *         PyErr_SetObject(MPIException, <long>ierr)
 *     else:
 */
  __pyx_t_1 = (((void *)__pyx_v_6mpi4py_3MPI_MPIException) != NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":201
 *         return 0
 *     if (<void*>MPIException) != NULL:
 *         PyErr_SetObject(MPIException, <long>ierr)             # <<<<<<<<<<<<<<
 *     else:
 *         PyErr_SetObject(<object>PyExc_RuntimeError, <long>ierr)
 */
    __pyx_t_3 = __pyx_v_6mpi4py_3MPI_MPIException;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_2 = PyInt_FromLong(((long)__pyx_v_ierr)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    PyErr_SetObject(__pyx_t_3, __pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":203
 *         PyErr_SetObject(MPIException, <long>ierr)
 *     else:
 *         PyErr_SetObject(<object>PyExc_RuntimeError, <long>ierr)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_2 = ((PyObject *)PyExc_RuntimeError);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = PyInt_FromLong(((long)__pyx_v_ierr)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    PyErr_SetObject(__pyx_t_2, __pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":204
 *     else:
 *         PyErr_SetObject(<object>PyExc_RuntimeError, <long>ierr)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int CHKERR(int ierr) nogil except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_Raise", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":206
 *     return 0
 * 
 * cdef inline int CHKERR(int ierr) nogil except -1:             # <<<<<<<<<<<<<<
 *     if ierr == 0: return 0
 *     PyMPI_Raise(ierr)
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_CHKERR(int __pyx_v_ierr) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":207
 * 
 * cdef inline int CHKERR(int ierr) nogil except -1:
 *     if ierr == 0: return 0             # <<<<<<<<<<<<<<
 *     PyMPI_Raise(ierr)
 *     return -1
 */
  __pyx_t_1 = (__pyx_v_ierr == 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":208
 * cdef inline int CHKERR(int ierr) nogil except -1:
 *     if ierr == 0: return 0
 *     PyMPI_Raise(ierr)             # <<<<<<<<<<<<<<
 *     return -1
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_Raise(__pyx_v_ierr); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":209
 *     if ierr == 0: return 0
 *     PyMPI_Raise(ierr)
 *     return -1             # <<<<<<<<<<<<<<
 * 
 * cdef inline void print_traceback():
 */
  __pyx_r = -1;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  {
    #ifdef WITH_THREAD
    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
    #endif
    __Pyx_AddTraceback("mpi4py.MPI.CHKERR", __pyx_clineno, __pyx_lineno, __pyx_filename);
    #ifdef WITH_THREAD
    PyGILState_Release(__pyx_gilstate_save);
    #endif
  }
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":211
 *     return -1
 * 
 * cdef inline void print_traceback():             # <<<<<<<<<<<<<<
 *     cdef object sys, traceback
 *     import sys, traceback
 */

static CYTHON_INLINE void __pyx_f_6mpi4py_3MPI_print_traceback(void) {
  PyObject *__pyx_v_sys = 0;
  PyObject *__pyx_v_traceback = 0;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("print_traceback");

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":213
 * cdef inline void print_traceback():
 *     cdef object sys, traceback
 *     import sys, traceback             # <<<<<<<<<<<<<<
 *     traceback.print_exc()
 *     try: sys.stderr.flush()
 */
  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__sys), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_sys = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__traceback), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_traceback = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":214
 *     cdef object sys, traceback
 *     import sys, traceback
 *     traceback.print_exc()             # <<<<<<<<<<<<<<
 *     try: sys.stderr.flush()
 *     except: pass
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_traceback, __pyx_n_s__print_exc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":215
 *     import sys, traceback
 *     traceback.print_exc()
 *     try: sys.stderr.flush()             # <<<<<<<<<<<<<<
 *     except: pass
 * 
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    /*try:*/ {
      __pyx_t_2 = PyObject_GetAttr(__pyx_v_sys, __pyx_n_s__stderr); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__flush); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":216
 *     traceback.print_exc()
 *     try: sys.stderr.flush()
 *     except: pass             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
    /*except:*/ {
      PyErr_Restore(0,0,0);
      goto __pyx_L4_exception_handled;
    }
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    __pyx_L10_try_end:;
  }

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_WriteUnraisable("mpi4py.MPI.print_traceback", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_sys);
  __Pyx_XDECREF(__pyx_v_traceback);
  __Pyx_RefNannyFinishContext();
}

/* "/home/devel/mpi4py-1.3/src/MPI/asmpistr.pxi":11
 * #---------------------------------------------------------------------
 * 
 * cdef inline object asmpistr(object ob, char **s, int *n):             # <<<<<<<<<<<<<<
 *     cdef const_char *sbuf = NULL
 *     cdef Py_ssize_t slen = 0, *slenp = NULL
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asmpistr(PyObject *__pyx_v_ob, char **__pyx_v_s, int *__pyx_v_n) {
  const char *__pyx_v_sbuf;
  Py_ssize_t __pyx_v_slen;
  Py_ssize_t *__pyx_v_slenp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asmpistr");
  __Pyx_INCREF(__pyx_v_ob);

  /* "/home/devel/mpi4py-1.3/src/MPI/asmpistr.pxi":12
 * 
 * cdef inline object asmpistr(object ob, char **s, int *n):
 *     cdef const_char *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t slen = 0, *slenp = NULL
 *     if n != NULL: slenp = &slen
 */
  __pyx_v_sbuf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/asmpistr.pxi":13
 * cdef inline object asmpistr(object ob, char **s, int *n):
 *     cdef const_char *sbuf = NULL
 *     cdef Py_ssize_t slen = 0, *slenp = NULL             # <<<<<<<<<<<<<<
 *     if n != NULL: slenp = &slen
 *     ob = PyMPIString_AsStringAndSize(ob, &sbuf, slenp)
 */
  __pyx_v_slen = 0;
  __pyx_v_slenp = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/asmpistr.pxi":14
 *     cdef const_char *sbuf = NULL
 *     cdef Py_ssize_t slen = 0, *slenp = NULL
 *     if n != NULL: slenp = &slen             # <<<<<<<<<<<<<<
 *     ob = PyMPIString_AsStringAndSize(ob, &sbuf, slenp)
 *     if s: s[0] = <char*> sbuf
 */
  __pyx_t_1 = (__pyx_v_n != NULL);
  if (__pyx_t_1) {
    __pyx_v_slenp = (&__pyx_v_slen);
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asmpistr.pxi":15
 *     cdef Py_ssize_t slen = 0, *slenp = NULL
 *     if n != NULL: slenp = &slen
 *     ob = PyMPIString_AsStringAndSize(ob, &sbuf, slenp)             # <<<<<<<<<<<<<<
 *     if s: s[0] = <char*> sbuf
 *     if n: n[0] = <int>   slen
 */
  __pyx_t_2 = PyMPIString_AsStringAndSize(__pyx_v_ob, (&__pyx_v_sbuf), __pyx_v_slenp); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_ob);
  __pyx_v_ob = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/asmpistr.pxi":16
 *     if n != NULL: slenp = &slen
 *     ob = PyMPIString_AsStringAndSize(ob, &sbuf, slenp)
 *     if s: s[0] = <char*> sbuf             # <<<<<<<<<<<<<<
 *     if n: n[0] = <int>   slen
 *     return ob
 */
  __pyx_t_1 = (__pyx_v_s != 0);
  if (__pyx_t_1) {
    (__pyx_v_s[0]) = ((char *)__pyx_v_sbuf);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asmpistr.pxi":17
 *     ob = PyMPIString_AsStringAndSize(ob, &sbuf, slenp)
 *     if s: s[0] = <char*> sbuf
 *     if n: n[0] = <int>   slen             # <<<<<<<<<<<<<<
 *     return ob
 * 
 */
  __pyx_t_1 = (__pyx_v_n != 0);
  if (__pyx_t_1) {
    (__pyx_v_n[0]) = ((int)__pyx_v_slen);
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asmpistr.pxi":18
 *     if s: s[0] = <char*> sbuf
 *     if n: n[0] = <int>   slen
 *     return ob             # <<<<<<<<<<<<<<
 * 
 * cdef inline object tompistr(const_char *s, int n):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ob);
  __pyx_r = __pyx_v_ob;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.asmpistr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asmpistr.pxi":20
 *     return ob
 * 
 * cdef inline object tompistr(const_char *s, int n):             # <<<<<<<<<<<<<<
 *     return PyMPIString_FromStringAndSize(s, n)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_tompistr(const char *__pyx_v_s, int __pyx_v_n) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("tompistr");

  /* "/home/devel/mpi4py-1.3/src/MPI/asmpistr.pxi":21
 * 
 * cdef inline object tompistr(const_char *s, int n):
 *     return PyMPIString_FromStringAndSize(s, n)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object mpistr(const_char *s):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyMPIString_FromStringAndSize(__pyx_v_s, __pyx_v_n); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.tompistr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asmpistr.pxi":23
 *     return PyMPIString_FromStringAndSize(s, n)
 * 
 * cdef inline object mpistr(const_char *s):             # <<<<<<<<<<<<<<
 *     return PyMPIString_FromString(s)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_mpistr(const char *__pyx_v_s) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mpistr");

  /* "/home/devel/mpi4py-1.3/src/MPI/asmpistr.pxi":24
 * 
 * cdef inline object mpistr(const_char *s):
 *     return PyMPIString_FromString(s)             # <<<<<<<<<<<<<<
 * 
 * #---------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyMPIString_FromString(__pyx_v_s); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.mpistr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":39
 * #------------------------------------------------------------------------------
 * 
 * cdef int \             # <<<<<<<<<<<<<<
 * PyObject_GetBufferEx(object obj, Py_buffer *view, int flags) \
 * except -1:
 */

static int __pyx_f_6mpi4py_3MPI_PyObject_GetBufferEx(PyObject *__pyx_v_obj, Py_buffer *__pyx_v_view, int __pyx_v_flags) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyObject_GetBufferEx");

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":42
 * PyObject_GetBufferEx(object obj, Py_buffer *view, int flags) \
 * except -1:
 *     if view == NULL: return 0             # <<<<<<<<<<<<<<
 *     # Python 3 buffer interface (PEP 3118)
 *     if PyObject_CheckBuffer(obj):
 */
  __pyx_t_1 = (__pyx_v_view == NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":44
 *     if view == NULL: return 0
 *     # Python 3 buffer interface (PEP 3118)
 *     if PyObject_CheckBuffer(obj):             # <<<<<<<<<<<<<<
 *         return PyObject_GetBuffer(obj, view, flags)
 *     # Python 2 buffer interface (legacy)
 */
  __pyx_t_2 = PyObject_CheckBuffer(__pyx_v_obj);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":45
 *     # Python 3 buffer interface (PEP 3118)
 *     if PyObject_CheckBuffer(obj):
 *         return PyObject_GetBuffer(obj, view, flags)             # <<<<<<<<<<<<<<
 *     # Python 2 buffer interface (legacy)
 *     if (flags & PyBUF_WRITABLE) == PyBUF_WRITABLE:
 */
    __pyx_t_2 = PyObject_GetBuffer(__pyx_v_obj, __pyx_v_view, __pyx_v_flags); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":47
 *         return PyObject_GetBuffer(obj, view, flags)
 *     # Python 2 buffer interface (legacy)
 *     if (flags & PyBUF_WRITABLE) == PyBUF_WRITABLE:             # <<<<<<<<<<<<<<
 *         PyObject_AsWriteBuffer(obj, &view.buf, &view.len)
 *     else:
 */
  __pyx_t_1 = ((__pyx_v_flags & PyBUF_WRITABLE) == PyBUF_WRITABLE);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":48
 *     # Python 2 buffer interface (legacy)
 *     if (flags & PyBUF_WRITABLE) == PyBUF_WRITABLE:
 *         PyObject_AsWriteBuffer(obj, &view.buf, &view.len)             # <<<<<<<<<<<<<<
 *     else:
 *         PyObject_AsReadBuffer(obj, <const_void**>
 */
    __pyx_t_2 = PyObject_AsWriteBuffer(__pyx_v_obj, (&__pyx_v_view->buf), (&__pyx_v_view->len)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":51
 *     else:
 *         PyObject_AsReadBuffer(obj, <const_void**>
 *                               &view.buf, &view.len)             # <<<<<<<<<<<<<<
 *     PyBuffer_FillInfo(view, obj, view.buf, view.len, 0, flags)
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:
 */
    __pyx_t_2 = PyObject_AsReadBuffer(__pyx_v_obj, ((const void **)(&__pyx_v_view->buf)), (&__pyx_v_view->len)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":52
 *         PyObject_AsReadBuffer(obj, <const_void**>
 *                               &view.buf, &view.len)
 *     PyBuffer_FillInfo(view, obj, view.buf, view.len, 0, flags)             # <<<<<<<<<<<<<<
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:
 *         view.format = b"B"
 */
  __pyx_t_2 = PyBuffer_FillInfo(__pyx_v_view, __pyx_v_obj, __pyx_v_view->buf, __pyx_v_view->len, 0, __pyx_v_flags); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":53
 *                               &view.buf, &view.len)
 *     PyBuffer_FillInfo(view, obj, view.buf, view.len, 0, flags)
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:             # <<<<<<<<<<<<<<
 *         view.format = b"B"
 *     return 0
 */
  __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) == PyBUF_FORMAT);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":54
 *     PyBuffer_FillInfo(view, obj, view.buf, view.len, 0, flags)
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:
 *         view.format = b"B"             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_v_view->format = __pyx_k__B;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":55
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:
 *         view.format = b"B"
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef class _p_buffer:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyObject_GetBufferEx", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":60
 *     cdef Py_buffer view
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         PyBuffer_Release(&self.view)
 * 
 */

static void __pyx_pf_6mpi4py_3MPI_9_p_buffer___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_6mpi4py_3MPI_9_p_buffer___dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__");

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":61
 * 
 *     def __dealloc__(self):
 *         PyBuffer_Release(&self.view)             # <<<<<<<<<<<<<<
 * 
 *     # buffer interface (PEP 3118)
 */
  PyBuffer_Release((&((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_v_self)->view));

  __Pyx_RefNannyFinishContext();
}

/* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":64
 * 
 *     # buffer interface (PEP 3118)
 *     def __getbuffer__(self, Py_buffer *view, int flags):             # <<<<<<<<<<<<<<
 *         if view == NULL: return
 *         if view.obj == <void*>None: Py_CLEAR(view.obj)
 */

static CYTHON_UNUSED int __pyx_pf_6mpi4py_3MPI_9_p_buffer_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags); /*proto*/
static CYTHON_UNUSED int __pyx_pf_6mpi4py_3MPI_9_p_buffer_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getbuffer__");
  if (__pyx_v_view != NULL) {
    __pyx_v_view->obj = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(__pyx_v_view->obj);
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":65
 *     # buffer interface (PEP 3118)
 *     def __getbuffer__(self, Py_buffer *view, int flags):
 *         if view == NULL: return             # <<<<<<<<<<<<<<
 *         if view.obj == <void*>None: Py_CLEAR(view.obj)
 *         if self.view.obj != NULL:
 */
  __pyx_t_1 = (__pyx_v_view == NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":66
 *     def __getbuffer__(self, Py_buffer *view, int flags):
 *         if view == NULL: return
 *         if view.obj == <void*>None: Py_CLEAR(view.obj)             # <<<<<<<<<<<<<<
 *         if self.view.obj != NULL:
 *             PyObject_GetBufferEx(<object>self.view.obj, view, flags)
 */
  __pyx_t_1 = (__pyx_v_view->obj == ((void *)Py_None));
  if (__pyx_t_1) {
    Py_CLEAR(__pyx_v_view->obj);
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":67
 *         if view == NULL: return
 *         if view.obj == <void*>None: Py_CLEAR(view.obj)
 *         if self.view.obj != NULL:             # <<<<<<<<<<<<<<
 *             PyObject_GetBufferEx(<object>self.view.obj, view, flags)
 *         else:
 */
  __pyx_t_1 = (((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_v_self)->view.obj != NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":68
 *         if view.obj == <void*>None: Py_CLEAR(view.obj)
 *         if self.view.obj != NULL:
 *             PyObject_GetBufferEx(<object>self.view.obj, view, flags)             # <<<<<<<<<<<<<<
 *         else:
 *             PyBuffer_FillInfo(view, None,
 */
    __pyx_t_2 = ((PyObject *)((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_v_self)->view.obj);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyObject_GetBufferEx(__pyx_t_2, __pyx_v_view, __pyx_v_flags); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L7;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":70
 *             PyObject_GetBufferEx(<object>self.view.obj, view, flags)
 *         else:
 *             PyBuffer_FillInfo(view, None,             # <<<<<<<<<<<<<<
 *                               self.view.buf, self.view.len,
 *                               self.view.readonly, flags)
 */
    __pyx_t_2 = Py_None;
    __Pyx_INCREF(__pyx_t_2);

    /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":72
 *             PyBuffer_FillInfo(view, None,
 *                               self.view.buf, self.view.len,
 *                               self.view.readonly, flags)             # <<<<<<<<<<<<<<
 *             Py_CLEAR(view.obj)
 * 
 */
    __pyx_t_3 = PyBuffer_FillInfo(__pyx_v_view, __pyx_t_2, ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_v_self)->view.buf, ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_v_self)->view.len, ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_v_self)->view.readonly, __pyx_v_flags); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":73
 *                               self.view.buf, self.view.len,
 *                               self.view.readonly, flags)
 *             Py_CLEAR(view.obj)             # <<<<<<<<<<<<<<
 * 
 *     def __releasebuffer__(self, Py_buffer *view):
 */
    Py_CLEAR(__pyx_v_view->obj);
  }
  __pyx_L7:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI._p_buffer.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  if (__pyx_v_view != NULL && __pyx_v_view->obj != NULL) {
    __Pyx_GOTREF(__pyx_v_view->obj);
    __Pyx_DECREF(__pyx_v_view->obj); __pyx_v_view->obj = NULL;
  }
  goto __pyx_L2;
  __pyx_L0:;
  if (__pyx_v_view != NULL && __pyx_v_view->obj == Py_None) {
    __Pyx_GOTREF(Py_None);
    __Pyx_DECREF(Py_None); __pyx_v_view->obj = NULL;
  }
  __pyx_L2:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":75
 *             Py_CLEAR(view.obj)
 * 
 *     def __releasebuffer__(self, Py_buffer *view):             # <<<<<<<<<<<<<<
 *         if view == NULL: return
 *         PyBuffer_Release(view)
 */

static CYTHON_UNUSED void __pyx_pf_6mpi4py_3MPI_9_p_buffer_2__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view); /*proto*/
static CYTHON_UNUSED void __pyx_pf_6mpi4py_3MPI_9_p_buffer_2__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__releasebuffer__");

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":76
 * 
 *     def __releasebuffer__(self, Py_buffer *view):
 *         if view == NULL: return             # <<<<<<<<<<<<<<
 *         PyBuffer_Release(view)
 * 
 */
  __pyx_t_1 = (__pyx_v_view == NULL);
  if (__pyx_t_1) {
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":77
 *     def __releasebuffer__(self, Py_buffer *view):
 *         if view == NULL: return
 *         PyBuffer_Release(view)             # <<<<<<<<<<<<<<
 * 
 *     # buffer interface (legacy)
 */
  PyBuffer_Release(__pyx_v_view);

  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":80
 * 
 *     # buffer interface (legacy)
 *     def __getsegcount__(self, Py_ssize_t *lenp):             # <<<<<<<<<<<<<<
 *         if lenp != NULL:
 *             lenp[0] = self.view.len
 */

#if PY_MAJOR_VERSION < 3
static Py_ssize_t __pyx_pf_6mpi4py_3MPI_9_p_buffer_3__getsegcount__(PyObject *__pyx_v_self, Py_ssize_t *__pyx_v_lenp); /*proto*/
static Py_ssize_t __pyx_pf_6mpi4py_3MPI_9_p_buffer_3__getsegcount__(PyObject *__pyx_v_self, Py_ssize_t *__pyx_v_lenp) {
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__getsegcount__");

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":81
 *     # buffer interface (legacy)
 *     def __getsegcount__(self, Py_ssize_t *lenp):
 *         if lenp != NULL:             # <<<<<<<<<<<<<<
 *             lenp[0] = self.view.len
 *         return 1
 */
  __pyx_t_1 = (__pyx_v_lenp != NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":82
 *     def __getsegcount__(self, Py_ssize_t *lenp):
 *         if lenp != NULL:
 *             lenp[0] = self.view.len             # <<<<<<<<<<<<<<
 *         return 1
 *     def __getreadbuffer__(self, Py_ssize_t idx, void **p):
 */
    (__pyx_v_lenp[0]) = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_v_self)->view.len;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":83
 *         if lenp != NULL:
 *             lenp[0] = self.view.len
 *         return 1             # <<<<<<<<<<<<<<
 *     def __getreadbuffer__(self, Py_ssize_t idx, void **p):
 *         if idx != 0: raise SystemError(
 */
  __pyx_r = 1;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
#endif /*!(#if PY_MAJOR_VERSION < 3)*/

/* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":84
 *             lenp[0] = self.view.len
 *         return 1
 *     def __getreadbuffer__(self, Py_ssize_t idx, void **p):             # <<<<<<<<<<<<<<
 *         if idx != 0: raise SystemError(
 *             "accessing non-existent buffer segment")
 */

#if PY_MAJOR_VERSION < 3
static Py_ssize_t __pyx_pf_6mpi4py_3MPI_9_p_buffer_4__getreadbuffer__(PyObject *__pyx_v_self, Py_ssize_t __pyx_v_idx, void **__pyx_v_p); /*proto*/
static Py_ssize_t __pyx_pf_6mpi4py_3MPI_9_p_buffer_4__getreadbuffer__(PyObject *__pyx_v_self, Py_ssize_t __pyx_v_idx, void **__pyx_v_p) {
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getreadbuffer__");

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":85
 *         return 1
 *     def __getreadbuffer__(self, Py_ssize_t idx, void **p):
 *         if idx != 0: raise SystemError(             # <<<<<<<<<<<<<<
 *             "accessing non-existent buffer segment")
 *         p[0] = self.view.buf
 */
  __pyx_t_1 = (__pyx_v_idx != 0);
  if (__pyx_t_1) {
    __pyx_t_2 = PyObject_Call(__pyx_builtin_SystemError, ((PyObject *)__pyx_k_tuple_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[2]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":87
 *         if idx != 0: raise SystemError(
 *             "accessing non-existent buffer segment")
 *         p[0] = self.view.buf             # <<<<<<<<<<<<<<
 *         return self.view.len
 *     def __getwritebuffer__(self, Py_ssize_t idx, void **p):
 */
  (__pyx_v_p[0]) = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_v_self)->view.buf;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":88
 *             "accessing non-existent buffer segment")
 *         p[0] = self.view.buf
 *         return self.view.len             # <<<<<<<<<<<<<<
 *     def __getwritebuffer__(self, Py_ssize_t idx, void **p):
 *         if idx != 0: raise SystemError(
 */
  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_v_self)->view.len;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI._p_buffer.__getreadbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
#endif /*!(#if PY_MAJOR_VERSION < 3)*/

/* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":89
 *         p[0] = self.view.buf
 *         return self.view.len
 *     def __getwritebuffer__(self, Py_ssize_t idx, void **p):             # <<<<<<<<<<<<<<
 *         if idx != 0: raise SystemError(
 *             "accessing non-existent buffer segment")
 */

#if PY_MAJOR_VERSION < 3
static Py_ssize_t __pyx_pf_6mpi4py_3MPI_9_p_buffer_5__getwritebuffer__(PyObject *__pyx_v_self, Py_ssize_t __pyx_v_idx, void **__pyx_v_p); /*proto*/
static Py_ssize_t __pyx_pf_6mpi4py_3MPI_9_p_buffer_5__getwritebuffer__(PyObject *__pyx_v_self, Py_ssize_t __pyx_v_idx, void **__pyx_v_p) {
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getwritebuffer__");

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":90
 *         return self.view.len
 *     def __getwritebuffer__(self, Py_ssize_t idx, void **p):
 *         if idx != 0: raise SystemError(             # <<<<<<<<<<<<<<
 *             "accessing non-existent buffer segment")
 *         if self.view.readonly:
 */
  __pyx_t_1 = (__pyx_v_idx != 0);
  if (__pyx_t_1) {
    __pyx_t_2 = PyObject_Call(__pyx_builtin_SystemError, ((PyObject *)__pyx_k_tuple_7), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[2]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":92
 *         if idx != 0: raise SystemError(
 *             "accessing non-existent buffer segment")
 *         if self.view.readonly:             # <<<<<<<<<<<<<<
 *             raise TypeError("object is not writeable")
 *         p[0] = self.view.buf
 */
  if (((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_v_self)->view.readonly) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":93
 *             "accessing non-existent buffer segment")
 *         if self.view.readonly:
 *             raise TypeError("object is not writeable")             # <<<<<<<<<<<<<<
 *         p[0] = self.view.buf
 *         return self.view.len
 */
    __pyx_t_2 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_9), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":94
 *         if self.view.readonly:
 *             raise TypeError("object is not writeable")
 *         p[0] = self.view.buf             # <<<<<<<<<<<<<<
 *         return self.view.len
 * 
 */
  (__pyx_v_p[0]) = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_v_self)->view.buf;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":95
 *             raise TypeError("object is not writeable")
 *         p[0] = self.view.buf
 *         return self.view.len             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_v_self)->view.len;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI._p_buffer.__getwritebuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
#endif /*!(#if PY_MAJOR_VERSION < 3)*/

/* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":98
 * 
 * 
 * cdef inline _p_buffer newbuffer():             # <<<<<<<<<<<<<<
 *     return <_p_buffer>_p_buffer.__new__(_p_buffer)
 * 
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_f_6mpi4py_3MPI_newbuffer(void) {
  struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("newbuffer");

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":99
 * 
 * cdef inline _p_buffer newbuffer():
 *     return <_p_buffer>_p_buffer.__new__(_p_buffer)             # <<<<<<<<<<<<<<
 * 
 * cdef _p_buffer getbuffer(object ob, bint readonly, bint format):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_buffer)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_t_1)));
  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.newbuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":101
 *     return <_p_buffer>_p_buffer.__new__(_p_buffer)
 * 
 * cdef _p_buffer getbuffer(object ob, bint readonly, bint format):             # <<<<<<<<<<<<<<
 *     cdef _p_buffer buf = newbuffer()
 *     cdef int flags = PyBUF_ANY_CONTIGUOUS
 */

static struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_f_6mpi4py_3MPI_getbuffer(PyObject *__pyx_v_ob, int __pyx_v_readonly, int __pyx_v_format) {
  struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_v_buf = 0;
  int __pyx_v_flags;
  struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getbuffer");

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":102
 * 
 * cdef _p_buffer getbuffer(object ob, bint readonly, bint format):
 *     cdef _p_buffer buf = newbuffer()             # <<<<<<<<<<<<<<
 *     cdef int flags = PyBUF_ANY_CONTIGUOUS
 *     if not readonly:
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_newbuffer()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_buf = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":103
 * cdef _p_buffer getbuffer(object ob, bint readonly, bint format):
 *     cdef _p_buffer buf = newbuffer()
 *     cdef int flags = PyBUF_ANY_CONTIGUOUS             # <<<<<<<<<<<<<<
 *     if not readonly:
 *         flags |= PyBUF_WRITABLE
 */
  __pyx_v_flags = PyBUF_ANY_CONTIGUOUS;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":104
 *     cdef _p_buffer buf = newbuffer()
 *     cdef int flags = PyBUF_ANY_CONTIGUOUS
 *     if not readonly:             # <<<<<<<<<<<<<<
 *         flags |= PyBUF_WRITABLE
 *     if format:
 */
  __pyx_t_2 = (!__pyx_v_readonly);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":105
 *     cdef int flags = PyBUF_ANY_CONTIGUOUS
 *     if not readonly:
 *         flags |= PyBUF_WRITABLE             # <<<<<<<<<<<<<<
 *     if format:
 *         flags |= PyBUF_FORMAT
 */
    __pyx_v_flags = (__pyx_v_flags | PyBUF_WRITABLE);
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":106
 *     if not readonly:
 *         flags |= PyBUF_WRITABLE
 *     if format:             # <<<<<<<<<<<<<<
 *         flags |= PyBUF_FORMAT
 *     PyObject_GetBufferEx(ob, &buf.view, flags)
 */
  if (__pyx_v_format) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":107
 *         flags |= PyBUF_WRITABLE
 *     if format:
 *         flags |= PyBUF_FORMAT             # <<<<<<<<<<<<<<
 *     PyObject_GetBufferEx(ob, &buf.view, flags)
 *     return buf
 */
    __pyx_v_flags = (__pyx_v_flags | PyBUF_FORMAT);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":108
 *     if format:
 *         flags |= PyBUF_FORMAT
 *     PyObject_GetBufferEx(ob, &buf.view, flags)             # <<<<<<<<<<<<<<
 *     return buf
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyObject_GetBufferEx(__pyx_v_ob, (&__pyx_v_buf->view), __pyx_v_flags); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":109
 *         flags |= PyBUF_FORMAT
 *     PyObject_GetBufferEx(ob, &buf.view, flags)
 *     return buf             # <<<<<<<<<<<<<<
 * 
 * cdef inline object getformat(_p_buffer buf):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_buf));
  __pyx_r = __pyx_v_buf;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.getbuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_buf);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":111
 *     return buf
 * 
 * cdef inline object getformat(_p_buffer buf):             # <<<<<<<<<<<<<<
 *     cdef Py_buffer *view = &buf.view
 *     #
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_getformat(struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_v_buf) {
  Py_buffer *__pyx_v_view;
  PyObject *__pyx_v_ob = 0;
  PyObject *__pyx_v_format = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getformat");

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":112
 * 
 * cdef inline object getformat(_p_buffer buf):
 *     cdef Py_buffer *view = &buf.view             # <<<<<<<<<<<<<<
 *     #
 *     if buf.view.obj == NULL:
 */
  __pyx_v_view = (&__pyx_v_buf->view);

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":114
 *     cdef Py_buffer *view = &buf.view
 *     #
 *     if buf.view.obj == NULL:             # <<<<<<<<<<<<<<
 *         if view.format != NULL:
 *             return mpistr(view.format)
 */
  __pyx_t_1 = (__pyx_v_buf->view.obj == NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":115
 *     #
 *     if buf.view.obj == NULL:
 *         if view.format != NULL:             # <<<<<<<<<<<<<<
 *             return mpistr(view.format)
 *         else:
 */
    __pyx_t_1 = (__pyx_v_view->format != NULL);
    if (__pyx_t_1) {

      /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":116
 *     if buf.view.obj == NULL:
 *         if view.format != NULL:
 *             return mpistr(view.format)             # <<<<<<<<<<<<<<
 *         else:
 *             return "B"
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_view->format); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;
      goto __pyx_L4;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":118
 *             return mpistr(view.format)
 *         else:
 *             return "B"             # <<<<<<<<<<<<<<
 *     elif view.format != NULL:
 *         # XXX this is a hack
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_n_s__B));
      __pyx_r = ((PyObject *)__pyx_n_s__B);
      goto __pyx_L0;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":119
 *         else:
 *             return "B"
 *     elif view.format != NULL:             # <<<<<<<<<<<<<<
 *         # XXX this is a hack
 *         if view.format != <char*>b"B":
 */
  __pyx_t_1 = (__pyx_v_view->format != NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":121
 *     elif view.format != NULL:
 *         # XXX this is a hack
 *         if view.format != <char*>b"B":             # <<<<<<<<<<<<<<
 *             return mpistr(view.format)
 *     #
 */
    __pyx_t_1 = (__pyx_v_view->format != ((char *)__pyx_k__B));
    if (__pyx_t_1) {

      /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":122
 *         # XXX this is a hack
 *         if view.format != <char*>b"B":
 *             return mpistr(view.format)             # <<<<<<<<<<<<<<
 *     #
 *     cdef object ob = <object>buf.view.obj
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_view->format); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;
      goto __pyx_L5;
    }
    __pyx_L5:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":124
 *             return mpistr(view.format)
 *     #
 *     cdef object ob = <object>buf.view.obj             # <<<<<<<<<<<<<<
 *     cdef str format = None
 *     try: # numpy.ndarray
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_buf->view.obj));
  __pyx_v_ob = ((PyObject *)__pyx_v_buf->view.obj);

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":125
 *     #
 *     cdef object ob = <object>buf.view.obj
 *     cdef str format = None             # <<<<<<<<<<<<<<
 *     try: # numpy.ndarray
 *         format = ob.dtype.char
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_format = ((PyObject*)Py_None);

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":126
 *     cdef object ob = <object>buf.view.obj
 *     cdef str format = None
 *     try: # numpy.ndarray             # <<<<<<<<<<<<<<
 *         format = ob.dtype.char
 *     except (AttributeError, TypeError):
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    /*try:*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":127
 *     cdef str format = None
 *     try: # numpy.ndarray
 *         format = ob.dtype.char             # <<<<<<<<<<<<<<
 *     except (AttributeError, TypeError):
 *         try: # array.array
 */
      __pyx_t_2 = PyObject_GetAttr(__pyx_v_ob, __pyx_n_s__dtype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_6 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__char); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (!(likely(PyString_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected str, got %.200s", Py_TYPE(__pyx_t_6)->tp_name), 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_DECREF(((PyObject *)__pyx_v_format));
      __pyx_v_format = ((PyObject*)__pyx_t_6);
      __pyx_t_6 = 0;
    }
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L13_try_end;
    __pyx_L6_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":128
 *     try: # numpy.ndarray
 *         format = ob.dtype.char
 *     except (AttributeError, TypeError):             # <<<<<<<<<<<<<<
 *         try: # array.array
 *             format =  ob.typecode
 */
    __pyx_t_7 = PyErr_ExceptionMatches(__pyx_builtin_AttributeError) || PyErr_ExceptionMatches(__pyx_builtin_TypeError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("mpi4py.MPI.getformat", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_2, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_8);

      /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":129
 *         format = ob.dtype.char
 *     except (AttributeError, TypeError):
 *         try: # array.array             # <<<<<<<<<<<<<<
 *             format =  ob.typecode
 *         except (AttributeError, TypeError):
 */
      {
        __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_11);
        /*try:*/ {

          /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":130
 *     except (AttributeError, TypeError):
 *         try: # array.array
 *             format =  ob.typecode             # <<<<<<<<<<<<<<
 *         except (AttributeError, TypeError):
 *             if view.format != NULL:
 */
          __pyx_t_12 = PyObject_GetAttr(__pyx_v_ob, __pyx_n_s__typecode); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
          __Pyx_GOTREF(__pyx_t_12);
          if (!(likely(PyString_CheckExact(__pyx_t_12))||((__pyx_t_12) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected str, got %.200s", Py_TYPE(__pyx_t_12)->tp_name), 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
          __Pyx_DECREF(((PyObject *)__pyx_v_format));
          __pyx_v_format = ((PyObject*)__pyx_t_12);
          __pyx_t_12 = 0;
        }
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        goto __pyx_L23_try_end;
        __pyx_L16_error:;
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;

        /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":131
 *         try: # array.array
 *             format =  ob.typecode
 *         except (AttributeError, TypeError):             # <<<<<<<<<<<<<<
 *             if view.format != NULL:
 *                 format = mpistr(view.format)
 */
        __pyx_t_7 = PyErr_ExceptionMatches(__pyx_builtin_AttributeError) || PyErr_ExceptionMatches(__pyx_builtin_TypeError);
        if (__pyx_t_7) {
          __Pyx_AddTraceback("mpi4py.MPI.getformat", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_GOTREF(__pyx_t_14);

          /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":132
 *             format =  ob.typecode
 *         except (AttributeError, TypeError):
 *             if view.format != NULL:             # <<<<<<<<<<<<<<
 *                 format = mpistr(view.format)
 *     return format
 */
          __pyx_t_1 = (__pyx_v_view->format != NULL);
          if (__pyx_t_1) {

            /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":133
 *         except (AttributeError, TypeError):
 *             if view.format != NULL:
 *                 format = mpistr(view.format)             # <<<<<<<<<<<<<<
 *     return format
 * 
 */
            __pyx_t_15 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_view->format); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
            __Pyx_GOTREF(__pyx_t_15);
            if (!(likely(PyString_CheckExact(__pyx_t_15))||((__pyx_t_15) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected str, got %.200s", Py_TYPE(__pyx_t_15)->tp_name), 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
            __Pyx_DECREF(((PyObject *)__pyx_v_format));
            __pyx_v_format = ((PyObject*)__pyx_t_15);
            __pyx_t_15 = 0;
            goto __pyx_L26;
          }
          __pyx_L26:;
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          goto __pyx_L17_exception_handled;
        }
        __pyx_L18_except_error:;
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        goto __pyx_L8_except_error;
        __pyx_L17_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        __pyx_L23_try_end:;
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L7_exception_handled;
    }
    __pyx_L8_except_error:;
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    goto __pyx_L1_error;
    __pyx_L7_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    __pyx_L13_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":134
 *             if view.format != NULL:
 *                 format = mpistr(view.format)
 *     return format             # <<<<<<<<<<<<<<
 * 
 * cdef inline _p_buffer tobuffer(void *p, Py_ssize_t n, bint ro):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_format));
  __pyx_r = ((PyObject *)__pyx_v_format);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("mpi4py.MPI.getformat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XDECREF(__pyx_v_format);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":136
 *     return format
 * 
 * cdef inline _p_buffer tobuffer(void *p, Py_ssize_t n, bint ro):             # <<<<<<<<<<<<<<
 *     cdef _p_buffer buf = newbuffer()
 *     cdef Py_buffer *view = &buf.view
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_f_6mpi4py_3MPI_tobuffer(void *__pyx_v_p, Py_ssize_t __pyx_v_n, int __pyx_v_ro) {
  struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_v_buf = 0;
  Py_buffer *__pyx_v_view;
  struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("tobuffer");

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":137
 * 
 * cdef inline _p_buffer tobuffer(void *p, Py_ssize_t n, bint ro):
 *     cdef _p_buffer buf = newbuffer()             # <<<<<<<<<<<<<<
 *     cdef Py_buffer *view = &buf.view
 *     PyBuffer_FillInfo(view, None, p, n, ro,
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_newbuffer()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_buf = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":138
 * cdef inline _p_buffer tobuffer(void *p, Py_ssize_t n, bint ro):
 *     cdef _p_buffer buf = newbuffer()
 *     cdef Py_buffer *view = &buf.view             # <<<<<<<<<<<<<<
 *     PyBuffer_FillInfo(view, None, p, n, ro,
 *                       PyBUF_FORMAT|PyBUF_STRIDES)
 */
  __pyx_v_view = (&__pyx_v_buf->view);

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":139
 *     cdef _p_buffer buf = newbuffer()
 *     cdef Py_buffer *view = &buf.view
 *     PyBuffer_FillInfo(view, None, p, n, ro,             # <<<<<<<<<<<<<<
 *                       PyBUF_FORMAT|PyBUF_STRIDES)
 *     Py_CLEAR(view.obj)
 */
  __pyx_t_1 = Py_None;
  __Pyx_INCREF(__pyx_t_1);

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":140
 *     cdef Py_buffer *view = &buf.view
 *     PyBuffer_FillInfo(view, None, p, n, ro,
 *                       PyBUF_FORMAT|PyBUF_STRIDES)             # <<<<<<<<<<<<<<
 *     Py_CLEAR(view.obj)
 *     return buf
 */
  __pyx_t_2 = PyBuffer_FillInfo(__pyx_v_view, __pyx_t_1, __pyx_v_p, __pyx_v_n, __pyx_v_ro, (PyBUF_FORMAT | PyBUF_STRIDES)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":141
 *     PyBuffer_FillInfo(view, None, p, n, ro,
 *                       PyBUF_FORMAT|PyBUF_STRIDES)
 *     Py_CLEAR(view.obj)             # <<<<<<<<<<<<<<
 *     return buf
 * 
 */
  Py_CLEAR(__pyx_v_view->obj);

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":142
 *                       PyBUF_FORMAT|PyBUF_STRIDES)
 *     Py_CLEAR(view.obj)
 *     return buf             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_buf));
  __pyx_r = __pyx_v_buf;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.tobuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_buf);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":146
 * #------------------------------------------------------------------------------
 * 
 * cdef inline _p_buffer getbuffer_r(object ob, void **base, MPI_Aint *size):             # <<<<<<<<<<<<<<
 *     cdef _p_buffer buf = getbuffer(ob, 1, 0)
 *     if base: base[0] = <void*>    buf.view.buf
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_f_6mpi4py_3MPI_getbuffer_r(PyObject *__pyx_v_ob, void **__pyx_v_base, MPI_Aint *__pyx_v_size) {
  struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_v_buf = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getbuffer_r");

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":147
 * 
 * cdef inline _p_buffer getbuffer_r(object ob, void **base, MPI_Aint *size):
 *     cdef _p_buffer buf = getbuffer(ob, 1, 0)             # <<<<<<<<<<<<<<
 *     if base: base[0] = <void*>    buf.view.buf
 *     if size: size[0] = <MPI_Aint> buf.view.len
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer(__pyx_v_ob, 1, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_buf = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":148
 * cdef inline _p_buffer getbuffer_r(object ob, void **base, MPI_Aint *size):
 *     cdef _p_buffer buf = getbuffer(ob, 1, 0)
 *     if base: base[0] = <void*>    buf.view.buf             # <<<<<<<<<<<<<<
 *     if size: size[0] = <MPI_Aint> buf.view.len
 *     return buf
 */
  __pyx_t_2 = (__pyx_v_base != 0);
  if (__pyx_t_2) {
    (__pyx_v_base[0]) = ((void *)__pyx_v_buf->view.buf);
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":149
 *     cdef _p_buffer buf = getbuffer(ob, 1, 0)
 *     if base: base[0] = <void*>    buf.view.buf
 *     if size: size[0] = <MPI_Aint> buf.view.len             # <<<<<<<<<<<<<<
 *     return buf
 * 
 */
  __pyx_t_2 = (__pyx_v_size != 0);
  if (__pyx_t_2) {
    (__pyx_v_size[0]) = ((MPI_Aint)__pyx_v_buf->view.len);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":150
 *     if base: base[0] = <void*>    buf.view.buf
 *     if size: size[0] = <MPI_Aint> buf.view.len
 *     return buf             # <<<<<<<<<<<<<<
 * 
 * cdef inline _p_buffer getbuffer_w(object ob, void **base, MPI_Aint *size):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_buf));
  __pyx_r = __pyx_v_buf;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.getbuffer_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_buf);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":152
 *     return buf
 * 
 * cdef inline _p_buffer getbuffer_w(object ob, void **base, MPI_Aint *size):             # <<<<<<<<<<<<<<
 *     cdef _p_buffer buf = getbuffer(ob, 0, 0)
 *     if base: base[0] = <void*>    buf.view.buf
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_f_6mpi4py_3MPI_getbuffer_w(PyObject *__pyx_v_ob, void **__pyx_v_base, MPI_Aint *__pyx_v_size) {
  struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_v_buf = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getbuffer_w");

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":153
 * 
 * cdef inline _p_buffer getbuffer_w(object ob, void **base, MPI_Aint *size):
 *     cdef _p_buffer buf = getbuffer(ob, 0, 0)             # <<<<<<<<<<<<<<
 *     if base: base[0] = <void*>    buf.view.buf
 *     if size: size[0] = <MPI_Aint> buf.view.len
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer(__pyx_v_ob, 0, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_buf = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":154
 * cdef inline _p_buffer getbuffer_w(object ob, void **base, MPI_Aint *size):
 *     cdef _p_buffer buf = getbuffer(ob, 0, 0)
 *     if base: base[0] = <void*>    buf.view.buf             # <<<<<<<<<<<<<<
 *     if size: size[0] = <MPI_Aint> buf.view.len
 *     return buf
 */
  __pyx_t_2 = (__pyx_v_base != 0);
  if (__pyx_t_2) {
    (__pyx_v_base[0]) = ((void *)__pyx_v_buf->view.buf);
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":155
 *     cdef _p_buffer buf = getbuffer(ob, 0, 0)
 *     if base: base[0] = <void*>    buf.view.buf
 *     if size: size[0] = <MPI_Aint> buf.view.len             # <<<<<<<<<<<<<<
 *     return buf
 * 
 */
  __pyx_t_2 = (__pyx_v_size != 0);
  if (__pyx_t_2) {
    (__pyx_v_size[0]) = ((MPI_Aint)__pyx_v_buf->view.len);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":156
 *     if base: base[0] = <void*>    buf.view.buf
 *     if size: size[0] = <MPI_Aint> buf.view.len
 *     return buf             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_buf));
  __pyx_r = __pyx_v_buf;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.getbuffer_w", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_buf);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asmemory.pxi":17
 *     object PyMemoryView_FromBuffer(Py_buffer *)
 * 
 * cdef inline object asmemory(object ob, void **base, MPI_Aint *size):             # <<<<<<<<<<<<<<
 *     cdef _p_buffer buf = getbuffer_w(ob, base, size)
 *     return buf
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asmemory(PyObject *__pyx_v_ob, void **__pyx_v_base, MPI_Aint *__pyx_v_size) {
  struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_v_buf = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asmemory");

  /* "/home/devel/mpi4py-1.3/src/MPI/asmemory.pxi":18
 * 
 * cdef inline object asmemory(object ob, void **base, MPI_Aint *size):
 *     cdef _p_buffer buf = getbuffer_w(ob, base, size)             # <<<<<<<<<<<<<<
 *     return buf
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer_w(__pyx_v_ob, __pyx_v_base, __pyx_v_size)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_buf = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/asmemory.pxi":19
 * cdef inline object asmemory(object ob, void **base, MPI_Aint *size):
 *     cdef _p_buffer buf = getbuffer_w(ob, base, size)
 *     return buf             # <<<<<<<<<<<<<<
 * 
 * cdef inline object tomemory(void *base, MPI_Aint size):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_buf));
  __pyx_r = ((PyObject *)__pyx_v_buf);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.asmemory", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asmemory.pxi":21
 *     return buf
 * 
 * cdef inline object tomemory(void *base, MPI_Aint size):             # <<<<<<<<<<<<<<
 *     cdef _p_buffer buf = tobuffer(base, size, 0)
 *     return PyMemoryView_FromBuffer(&buf.view)
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_tomemory(void *__pyx_v_base, MPI_Aint __pyx_v_size) {
  struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_v_buf = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("tomemory");

  /* "/home/devel/mpi4py-1.3/src/MPI/asmemory.pxi":22
 * 
 * cdef inline object tomemory(void *base, MPI_Aint size):
 *     cdef _p_buffer buf = tobuffer(base, size, 0)             # <<<<<<<<<<<<<<
 *     return PyMemoryView_FromBuffer(&buf.view)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_tobuffer(__pyx_v_base, __pyx_v_size, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_buf = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/asmemory.pxi":23
 * cdef inline object tomemory(void *base, MPI_Aint size):
 *     cdef _p_buffer buf = tobuffer(base, size, 0)
 *     return PyMemoryView_FromBuffer(&buf.view)             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyMemoryView_FromBuffer((&__pyx_v_buf->view)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.tomemory", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asmemory.pxi":30
 *     object allocate"PyMPI_Allocate"(Py_ssize_t, size_t, void **)
 * 
 * cdef inline object allocate_int(int n, int **p):             # <<<<<<<<<<<<<<
 *      cdef int *array = NULL
 *      cdef object ob = allocate(n, sizeof(int), <void**>&array)
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_allocate_int(int __pyx_v_n, int **__pyx_v_p) {
  int *__pyx_v_array;
  PyObject *__pyx_v_ob = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("allocate_int");

  /* "/home/devel/mpi4py-1.3/src/MPI/asmemory.pxi":31
 * 
 * cdef inline object allocate_int(int n, int **p):
 *      cdef int *array = NULL             # <<<<<<<<<<<<<<
 *      cdef object ob = allocate(n, sizeof(int), <void**>&array)
 *      p[0] = array
 */
  __pyx_v_array = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/asmemory.pxi":32
 * cdef inline object allocate_int(int n, int **p):
 *      cdef int *array = NULL
 *      cdef object ob = allocate(n, sizeof(int), <void**>&array)             # <<<<<<<<<<<<<<
 *      p[0] = array
 *      return ob
 */
  __pyx_t_1 = PyMPI_Allocate(__pyx_v_n, (sizeof(int)), ((void **)(&__pyx_v_array))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_ob = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/asmemory.pxi":33
 *      cdef int *array = NULL
 *      cdef object ob = allocate(n, sizeof(int), <void**>&array)
 *      p[0] = array             # <<<<<<<<<<<<<<
 *      return ob
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_array;

  /* "/home/devel/mpi4py-1.3/src/MPI/asmemory.pxi":34
 *      cdef object ob = allocate(n, sizeof(int), <void**>&array)
 *      p[0] = array
 *      return ob             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ob);
  __pyx_r = __pyx_v_ob;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.allocate_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":10
 *     object PySequence_InPlaceRepeat(object, Py_ssize_t)
 * 
 * cdef inline object newarray_int(Py_ssize_t n, int **p):             # <<<<<<<<<<<<<<
 *     cdef object ary = arraytype('i', [0])
 *     if n <= 0:
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_newarray_int(Py_ssize_t __pyx_v_n, int **__pyx_v_p) {
  PyObject *__pyx_v_ary = 0;
  int *__pyx_v_base;
  Py_ssize_t __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("newarray_int");

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":11
 * 
 * cdef inline object newarray_int(Py_ssize_t n, int **p):
 *     cdef object ary = arraytype('i', [0])             # <<<<<<<<<<<<<<
 *     if n <= 0:
 *         PySequence_DelItem(ary, 0)
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__i));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_s__i));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_t_1));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_Call(((PyObject *)__pyx_v_6mpi4py_3MPI_arraytype), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_v_ary = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":12
 * cdef inline object newarray_int(Py_ssize_t n, int **p):
 *     cdef object ary = arraytype('i', [0])
 *     if n <= 0:             # <<<<<<<<<<<<<<
 *         PySequence_DelItem(ary, 0)
 *     elif n > 1:
 */
  __pyx_t_3 = (__pyx_v_n <= 0);
  if (__pyx_t_3) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":13
 *     cdef object ary = arraytype('i', [0])
 *     if n <= 0:
 *         PySequence_DelItem(ary, 0)             # <<<<<<<<<<<<<<
 *     elif n > 1:
 *         ary = PySequence_InPlaceRepeat(ary, n)
 */
    __pyx_t_4 = PySequence_DelItem(__pyx_v_ary, 0); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":14
 *     if n <= 0:
 *         PySequence_DelItem(ary, 0)
 *     elif n > 1:             # <<<<<<<<<<<<<<
 *         ary = PySequence_InPlaceRepeat(ary, n)
 *     cdef int *base = NULL
 */
  __pyx_t_3 = (__pyx_v_n > 1);
  if (__pyx_t_3) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":15
 *         PySequence_DelItem(ary, 0)
 *     elif n > 1:
 *         ary = PySequence_InPlaceRepeat(ary, n)             # <<<<<<<<<<<<<<
 *     cdef int *base = NULL
 *     cdef Py_ssize_t size = 0
 */
    __pyx_t_1 = PySequence_InPlaceRepeat(__pyx_v_ary, __pyx_v_n); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_ary);
    __pyx_v_ary = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":16
 *     elif n > 1:
 *         ary = PySequence_InPlaceRepeat(ary, n)
 *     cdef int *base = NULL             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t size = 0
 *     PyObject_AsWriteBuffer(ary, <void**>&base, &size)
 */
  __pyx_v_base = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":17
 *         ary = PySequence_InPlaceRepeat(ary, n)
 *     cdef int *base = NULL
 *     cdef Py_ssize_t size = 0             # <<<<<<<<<<<<<<
 *     PyObject_AsWriteBuffer(ary, <void**>&base, &size)
 *     if p != NULL: p[0] = base
 */
  __pyx_v_size = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":18
 *     cdef int *base = NULL
 *     cdef Py_ssize_t size = 0
 *     PyObject_AsWriteBuffer(ary, <void**>&base, &size)             # <<<<<<<<<<<<<<
 *     if p != NULL: p[0] = base
 *     return ary
 */
  __pyx_t_4 = PyObject_AsWriteBuffer(__pyx_v_ary, ((void **)(&__pyx_v_base)), (&__pyx_v_size)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":19
 *     cdef Py_ssize_t size = 0
 *     PyObject_AsWriteBuffer(ary, <void**>&base, &size)
 *     if p != NULL: p[0] = base             # <<<<<<<<<<<<<<
 *     return ary
 * 
 */
  __pyx_t_3 = (__pyx_v_p != NULL);
  if (__pyx_t_3) {
    (__pyx_v_p[0]) = __pyx_v_base;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":20
 *     PyObject_AsWriteBuffer(ary, <void**>&base, &size)
 *     if p != NULL: p[0] = base
 *     return ary             # <<<<<<<<<<<<<<
 * 
 * cdef inline object getarray_int(object ob, int *n, int **p):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ary);
  __pyx_r = __pyx_v_ary;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.newarray_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ary);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":22
 *     return ary
 * 
 * cdef inline object getarray_int(object ob, int *n, int **p):             # <<<<<<<<<<<<<<
 *     cdef int *base = NULL
 *     cdef Py_ssize_t i = 0, size = len(ob)
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_getarray_int(PyObject *__pyx_v_ob, int *__pyx_v_n, int **__pyx_v_p) {
  int *__pyx_v_base;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_size;
  PyObject *__pyx_v_ary = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getarray_int");

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":23
 * 
 * cdef inline object getarray_int(object ob, int *n, int **p):
 *     cdef int *base = NULL             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i = 0, size = len(ob)
 *     cdef object ary = newarray_int(size, &base)
 */
  __pyx_v_base = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":24
 * cdef inline object getarray_int(object ob, int *n, int **p):
 *     cdef int *base = NULL
 *     cdef Py_ssize_t i = 0, size = len(ob)             # <<<<<<<<<<<<<<
 *     cdef object ary = newarray_int(size, &base)
 *     for i from 0 <= i < size:
 */
  __pyx_v_i = 0;
  __pyx_t_1 = PyObject_Length(__pyx_v_ob); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_size = __pyx_t_1;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":25
 *     cdef int *base = NULL
 *     cdef Py_ssize_t i = 0, size = len(ob)
 *     cdef object ary = newarray_int(size, &base)             # <<<<<<<<<<<<<<
 *     for i from 0 <= i < size:
 *         base[i] = ob[i]
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_size, (&__pyx_v_base)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ary = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":26
 *     cdef Py_ssize_t i = 0, size = len(ob)
 *     cdef object ary = newarray_int(size, &base)
 *     for i from 0 <= i < size:             # <<<<<<<<<<<<<<
 *         base[i] = ob[i]
 *     if n != NULL: n[0] = <int> size # XXX overflow?
 */
  __pyx_t_1 = __pyx_v_size;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":27
 *     cdef object ary = newarray_int(size, &base)
 *     for i from 0 <= i < size:
 *         base[i] = ob[i]             # <<<<<<<<<<<<<<
 *     if n != NULL: n[0] = <int> size # XXX overflow?
 *     if p != NULL: p[0] = base
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_ob, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_2) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    (__pyx_v_base[__pyx_v_i]) = __pyx_t_3;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":28
 *     for i from 0 <= i < size:
 *         base[i] = ob[i]
 *     if n != NULL: n[0] = <int> size # XXX overflow?             # <<<<<<<<<<<<<<
 *     if p != NULL: p[0] = base
 *     return ary
 */
  __pyx_t_4 = (__pyx_v_n != NULL);
  if (__pyx_t_4) {
    (__pyx_v_n[0]) = ((int)__pyx_v_size);
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":29
 *         base[i] = ob[i]
 *     if n != NULL: n[0] = <int> size # XXX overflow?
 *     if p != NULL: p[0] = base             # <<<<<<<<<<<<<<
 *     return ary
 * 
 */
  __pyx_t_4 = (__pyx_v_p != NULL);
  if (__pyx_t_4) {
    (__pyx_v_p[0]) = __pyx_v_base;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":30
 *     if n != NULL: n[0] = <int> size # XXX overflow?
 *     if p != NULL: p[0] = base
 *     return ary             # <<<<<<<<<<<<<<
 * 
 * cdef inline object chkarray_int(object ob, Py_ssize_t size, int **p):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ary);
  __pyx_r = __pyx_v_ary;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.getarray_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ary);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":32
 *     return ary
 * 
 * cdef inline object chkarray_int(object ob, Py_ssize_t size, int **p):             # <<<<<<<<<<<<<<
 *     cdef int n = 0
 *     cdef object ary = getarray_int(ob, &n, p)
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_chkarray_int(PyObject *__pyx_v_ob, Py_ssize_t __pyx_v_size, int **__pyx_v_p) {
  int __pyx_v_n;
  PyObject *__pyx_v_ary = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("chkarray_int");

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":33
 * 
 * cdef inline object chkarray_int(object ob, Py_ssize_t size, int **p):
 *     cdef int n = 0             # <<<<<<<<<<<<<<
 *     cdef object ary = getarray_int(ob, &n, p)
 *     if size != <Py_ssize_t>n: raise ValueError(
 */
  __pyx_v_n = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":34
 * cdef inline object chkarray_int(object ob, Py_ssize_t size, int **p):
 *     cdef int n = 0
 *     cdef object ary = getarray_int(ob, &n, p)             # <<<<<<<<<<<<<<
 *     if size != <Py_ssize_t>n: raise ValueError(
 *         "expecting %d items, got %d" % (size, n))
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_getarray_int(__pyx_v_ob, (&__pyx_v_n), __pyx_v_p); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_ary = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":35
 *     cdef int n = 0
 *     cdef object ary = getarray_int(ob, &n, p)
 *     if size != <Py_ssize_t>n: raise ValueError(             # <<<<<<<<<<<<<<
 *         "expecting %d items, got %d" % (size, n))
 *     return ary
 */
  __pyx_t_2 = (__pyx_v_size != ((Py_ssize_t)__pyx_v_n));
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":36
 *     cdef object ary = getarray_int(ob, &n, p)
 *     if size != <Py_ssize_t>n: raise ValueError(
 *         "expecting %d items, got %d" % (size, n))             # <<<<<<<<<<<<<<
 *     return ary
 * 
 */
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyInt_FromLong(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_3 = 0;
    __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_10), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_3));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
    __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[3]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":37
 *     if size != <Py_ssize_t>n: raise ValueError(
 *         "expecting %d items, got %d" % (size, n))
 *     return ary             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ary);
  __pyx_r = __pyx_v_ary;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.chkarray_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ary);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":41
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline object asarray_int(object sequence,             # <<<<<<<<<<<<<<
 *                                Py_ssize_t size, int **p):
 *      cdef int *array = NULL
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_int(PyObject *__pyx_v_sequence, Py_ssize_t __pyx_v_size, int **__pyx_v_p) {
  int *__pyx_v_array;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  PyObject *__pyx_v_ob = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asarray_int");

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":43
 * cdef inline object asarray_int(object sequence,
 *                                Py_ssize_t size, int **p):
 *      cdef int *array = NULL             # <<<<<<<<<<<<<<
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size != n: raise ValueError(
 */
  __pyx_v_array = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":44
 *                                Py_ssize_t size, int **p):
 *      cdef int *array = NULL
 *      cdef Py_ssize_t i = 0, n = len(sequence)             # <<<<<<<<<<<<<<
 *      if size != n: raise ValueError(
 *          "expecting %d items, got %d" % (size, n))
 */
  __pyx_v_i = 0;
  __pyx_t_1 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":45
 *      cdef int *array = NULL
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size != n: raise ValueError(             # <<<<<<<<<<<<<<
 *          "expecting %d items, got %d" % (size, n))
 *      cdef object ob = allocate(n, sizeof(int), <void**>&array)
 */
  __pyx_t_2 = (__pyx_v_size != __pyx_v_n);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":46
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size != n: raise ValueError(
 *          "expecting %d items, got %d" % (size, n))             # <<<<<<<<<<<<<<
 *      cdef object ob = allocate(n, sizeof(int), <void**>&array)
 *      for i from 0 <= i < n:
 */
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_3 = 0;
    __pyx_t_4 = 0;
    __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_10), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_4));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
    __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":47
 *      if size != n: raise ValueError(
 *          "expecting %d items, got %d" % (size, n))
 *      cdef object ob = allocate(n, sizeof(int), <void**>&array)             # <<<<<<<<<<<<<<
 *      for i from 0 <= i < n:
 *          array[i] = sequence[i]
 */
  __pyx_t_4 = PyMPI_Allocate(__pyx_v_n, (sizeof(int)), ((void **)(&__pyx_v_array))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_ob = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":48
 *          "expecting %d items, got %d" % (size, n))
 *      cdef object ob = allocate(n, sizeof(int), <void**>&array)
 *      for i from 0 <= i < n:             # <<<<<<<<<<<<<<
 *          array[i] = sequence[i]
 *      p[0] = array
 */
  __pyx_t_1 = __pyx_v_n;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":49
 *      cdef object ob = allocate(n, sizeof(int), <void**>&array)
 *      for i from 0 <= i < n:
 *          array[i] = sequence[i]             # <<<<<<<<<<<<<<
 *      p[0] = array
 *      return ob
 */
    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_sequence, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_4) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_t_4); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    (__pyx_v_array[__pyx_v_i]) = __pyx_t_6;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":50
 *      for i from 0 <= i < n:
 *          array[i] = sequence[i]
 *      p[0] = array             # <<<<<<<<<<<<<<
 *      return ob
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_array;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":51
 *          array[i] = sequence[i]
 *      p[0] = array
 *      return ob             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asarray_Aint(object sequence,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ob);
  __pyx_r = __pyx_v_ob;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.asarray_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":53
 *      return ob
 * 
 * cdef inline object asarray_Aint(object sequence,             # <<<<<<<<<<<<<<
 *                                 Py_ssize_t size, MPI_Aint **p):
 *      cdef MPI_Aint *array = NULL
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_Aint(PyObject *__pyx_v_sequence, Py_ssize_t __pyx_v_size, MPI_Aint **__pyx_v_p) {
  MPI_Aint *__pyx_v_array;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  PyObject *__pyx_v_ob = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  MPI_Aint __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asarray_Aint");

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":55
 * cdef inline object asarray_Aint(object sequence,
 *                                 Py_ssize_t size, MPI_Aint **p):
 *      cdef MPI_Aint *array = NULL             # <<<<<<<<<<<<<<
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size != n: raise ValueError(
 */
  __pyx_v_array = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":56
 *                                 Py_ssize_t size, MPI_Aint **p):
 *      cdef MPI_Aint *array = NULL
 *      cdef Py_ssize_t i = 0, n = len(sequence)             # <<<<<<<<<<<<<<
 *      if size != n: raise ValueError(
 *          "expecting %d items, got %d" % (size, n))
 */
  __pyx_v_i = 0;
  __pyx_t_1 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":57
 *      cdef MPI_Aint *array = NULL
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size != n: raise ValueError(             # <<<<<<<<<<<<<<
 *          "expecting %d items, got %d" % (size, n))
 *      cdef object ob = allocate(n, sizeof(MPI_Aint), <void**>&array)
 */
  __pyx_t_2 = (__pyx_v_size != __pyx_v_n);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":58
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size != n: raise ValueError(
 *          "expecting %d items, got %d" % (size, n))             # <<<<<<<<<<<<<<
 *      cdef object ob = allocate(n, sizeof(MPI_Aint), <void**>&array)
 *      for i from 0 <= i < n:
 */
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_3 = 0;
    __pyx_t_4 = 0;
    __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_10), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_4));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
    __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[3]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":59
 *      if size != n: raise ValueError(
 *          "expecting %d items, got %d" % (size, n))
 *      cdef object ob = allocate(n, sizeof(MPI_Aint), <void**>&array)             # <<<<<<<<<<<<<<
 *      for i from 0 <= i < n:
 *          array[i] = sequence[i]
 */
  __pyx_t_4 = PyMPI_Allocate(__pyx_v_n, (sizeof(MPI_Aint)), ((void **)(&__pyx_v_array))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_ob = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":60
 *          "expecting %d items, got %d" % (size, n))
 *      cdef object ob = allocate(n, sizeof(MPI_Aint), <void**>&array)
 *      for i from 0 <= i < n:             # <<<<<<<<<<<<<<
 *          array[i] = sequence[i]
 *      p[0] = array
 */
  __pyx_t_1 = __pyx_v_n;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":61
 *      cdef object ob = allocate(n, sizeof(MPI_Aint), <void**>&array)
 *      for i from 0 <= i < n:
 *          array[i] = sequence[i]             # <<<<<<<<<<<<<<
 *      p[0] = array
 *      return ob
 */
    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_sequence, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_4) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PyInt_from_py_MPI_Aint(__pyx_t_4); if (unlikely((__pyx_t_6 == (MPI_Aint)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    (__pyx_v_array[__pyx_v_i]) = __pyx_t_6;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":62
 *      for i from 0 <= i < n:
 *          array[i] = sequence[i]
 *      p[0] = array             # <<<<<<<<<<<<<<
 *      return ob
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_array;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":63
 *          array[i] = sequence[i]
 *      p[0] = array
 *      return ob             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asarray_Datatype(object sequence,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ob);
  __pyx_r = __pyx_v_ob;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.asarray_Aint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":65
 *      return ob
 * 
 * cdef inline object asarray_Datatype(object sequence,             # <<<<<<<<<<<<<<
 *                                     Py_ssize_t size, MPI_Datatype **p):
 *      cdef MPI_Datatype *array = NULL
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_Datatype(PyObject *__pyx_v_sequence, Py_ssize_t __pyx_v_size, MPI_Datatype **__pyx_v_p) {
  MPI_Datatype *__pyx_v_array;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  PyObject *__pyx_v_ob = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asarray_Datatype");

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":67
 * cdef inline object asarray_Datatype(object sequence,
 *                                     Py_ssize_t size, MPI_Datatype **p):
 *      cdef MPI_Datatype *array = NULL             # <<<<<<<<<<<<<<
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size != n: raise ValueError(
 */
  __pyx_v_array = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":68
 *                                     Py_ssize_t size, MPI_Datatype **p):
 *      cdef MPI_Datatype *array = NULL
 *      cdef Py_ssize_t i = 0, n = len(sequence)             # <<<<<<<<<<<<<<
 *      if size != n: raise ValueError(
 *          "expecting %d items, got %d" % (size, n))
 */
  __pyx_v_i = 0;
  __pyx_t_1 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":69
 *      cdef MPI_Datatype *array = NULL
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size != n: raise ValueError(             # <<<<<<<<<<<<<<
 *          "expecting %d items, got %d" % (size, n))
 *      cdef object ob = allocate(n, sizeof(MPI_Datatype), <void**>&array)
 */
  __pyx_t_2 = (__pyx_v_size != __pyx_v_n);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":70
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size != n: raise ValueError(
 *          "expecting %d items, got %d" % (size, n))             # <<<<<<<<<<<<<<
 *      cdef object ob = allocate(n, sizeof(MPI_Datatype), <void**>&array)
 *      for i from 0 <= i < n:
 */
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_3 = 0;
    __pyx_t_4 = 0;
    __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_10), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_4));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
    __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":71
 *      if size != n: raise ValueError(
 *          "expecting %d items, got %d" % (size, n))
 *      cdef object ob = allocate(n, sizeof(MPI_Datatype), <void**>&array)             # <<<<<<<<<<<<<<
 *      for i from 0 <= i < n:
 *          array[i] = (<Datatype?>sequence[i]).ob_mpi
 */
  __pyx_t_4 = PyMPI_Allocate(__pyx_v_n, (sizeof(MPI_Datatype)), ((void **)(&__pyx_v_array))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_ob = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":72
 *          "expecting %d items, got %d" % (size, n))
 *      cdef object ob = allocate(n, sizeof(MPI_Datatype), <void**>&array)
 *      for i from 0 <= i < n:             # <<<<<<<<<<<<<<
 *          array[i] = (<Datatype?>sequence[i]).ob_mpi
 *      p[0] = array
 */
  __pyx_t_1 = __pyx_v_n;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":73
 *      cdef object ob = allocate(n, sizeof(MPI_Datatype), <void**>&array)
 *      for i from 0 <= i < n:
 *          array[i] = (<Datatype?>sequence[i]).ob_mpi             # <<<<<<<<<<<<<<
 *      p[0] = array
 *      return ob
 */
    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_sequence, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_4) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    if (!(likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6mpi4py_3MPI_Datatype)))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    (__pyx_v_array[__pyx_v_i]) = ((struct PyMPIDatatypeObject *)__pyx_t_4)->ob_mpi;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":74
 *      for i from 0 <= i < n:
 *          array[i] = (<Datatype?>sequence[i]).ob_mpi
 *      p[0] = array             # <<<<<<<<<<<<<<
 *      return ob
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_array;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":75
 *          array[i] = (<Datatype?>sequence[i]).ob_mpi
 *      p[0] = array
 *      return ob             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asarray_Info(object sequence,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ob);
  __pyx_r = __pyx_v_ob;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.asarray_Datatype", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":77
 *      return ob
 * 
 * cdef inline object asarray_Info(object sequence,             # <<<<<<<<<<<<<<
 *                                 Py_ssize_t size, MPI_Info **p):
 *      cdef MPI_Info *array = NULL
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_Info(PyObject *__pyx_v_sequence, Py_ssize_t __pyx_v_size, MPI_Info **__pyx_v_p) {
  MPI_Info *__pyx_v_array;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  MPI_Info __pyx_v_info;
  PyObject *__pyx_v_ob = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asarray_Info");

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":79
 * cdef inline object asarray_Info(object sequence,
 *                                 Py_ssize_t size, MPI_Info **p):
 *      cdef MPI_Info *array = NULL             # <<<<<<<<<<<<<<
 *      cdef Py_ssize_t i = 0, n = size
 *      cdef MPI_Info info = MPI_INFO_NULL
 */
  __pyx_v_array = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":80
 *                                 Py_ssize_t size, MPI_Info **p):
 *      cdef MPI_Info *array = NULL
 *      cdef Py_ssize_t i = 0, n = size             # <<<<<<<<<<<<<<
 *      cdef MPI_Info info = MPI_INFO_NULL
 *      cdef object ob
 */
  __pyx_v_i = 0;
  __pyx_v_n = __pyx_v_size;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":81
 *      cdef MPI_Info *array = NULL
 *      cdef Py_ssize_t i = 0, n = size
 *      cdef MPI_Info info = MPI_INFO_NULL             # <<<<<<<<<<<<<<
 *      cdef object ob
 *      if sequence is None or isinstance(sequence, Info):
 */
  __pyx_v_info = MPI_INFO_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":83
 *      cdef MPI_Info info = MPI_INFO_NULL
 *      cdef object ob
 *      if sequence is None or isinstance(sequence, Info):             # <<<<<<<<<<<<<<
 *          if sequence is not None:
 *              info = (<Info?>sequence).ob_mpi
 */
  __pyx_t_1 = (__pyx_v_sequence == Py_None);
  if (!__pyx_t_1) {
    __pyx_t_2 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Info));
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_sequence, __pyx_t_2); 
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_1;
  }
  if (__pyx_t_4) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":84
 *      cdef object ob
 *      if sequence is None or isinstance(sequence, Info):
 *          if sequence is not None:             # <<<<<<<<<<<<<<
 *              info = (<Info?>sequence).ob_mpi
 *          ob = allocate(size, sizeof(MPI_Info), <void**>&array)
 */
    __pyx_t_4 = (__pyx_v_sequence != Py_None);
    if (__pyx_t_4) {

      /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":85
 *      if sequence is None or isinstance(sequence, Info):
 *          if sequence is not None:
 *              info = (<Info?>sequence).ob_mpi             # <<<<<<<<<<<<<<
 *          ob = allocate(size, sizeof(MPI_Info), <void**>&array)
 *          for i from 0 <= i < size:
 */
      if (!(likely(__Pyx_TypeTest(__pyx_v_sequence, __pyx_ptype_6mpi4py_3MPI_Info)))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_v_info = ((struct PyMPIInfoObject *)__pyx_v_sequence)->ob_mpi;
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":86
 *          if sequence is not None:
 *              info = (<Info?>sequence).ob_mpi
 *          ob = allocate(size, sizeof(MPI_Info), <void**>&array)             # <<<<<<<<<<<<<<
 *          for i from 0 <= i < size:
 *              array[i] = info
 */
    __pyx_t_2 = PyMPI_Allocate(__pyx_v_size, (sizeof(MPI_Info)), ((void **)(&__pyx_v_array))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_ob = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":87
 *              info = (<Info?>sequence).ob_mpi
 *          ob = allocate(size, sizeof(MPI_Info), <void**>&array)
 *          for i from 0 <= i < size:             # <<<<<<<<<<<<<<
 *              array[i] = info
 *      else:
 */
    __pyx_t_5 = __pyx_v_size;
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) {

      /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":88
 *          ob = allocate(size, sizeof(MPI_Info), <void**>&array)
 *          for i from 0 <= i < size:
 *              array[i] = info             # <<<<<<<<<<<<<<
 *      else:
 *          n = len(sequence)
 */
      (__pyx_v_array[__pyx_v_i]) = __pyx_v_info;
    }
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":90
 *              array[i] = info
 *      else:
 *          n = len(sequence)             # <<<<<<<<<<<<<<
 *          if size != n: raise ValueError(
 *              "expecting %d items, got %d" % (size, n))
 */
    __pyx_t_5 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_n = __pyx_t_5;

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":91
 *      else:
 *          n = len(sequence)
 *          if size != n: raise ValueError(             # <<<<<<<<<<<<<<
 *              "expecting %d items, got %d" % (size, n))
 *          ob = allocate(size, sizeof(MPI_Datatype), <void**>&array)
 */
    __pyx_t_4 = (__pyx_v_size != __pyx_v_n);
    if (__pyx_t_4) {

      /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":92
 *          n = len(sequence)
 *          if size != n: raise ValueError(
 *              "expecting %d items, got %d" % (size, n))             # <<<<<<<<<<<<<<
 *          ob = allocate(size, sizeof(MPI_Datatype), <void**>&array)
 *          for i from 0 <= i < size:
 */
      __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_7));
      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      __pyx_t_2 = 0;
      __pyx_t_6 = 0;
      __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_10), ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_6));
      __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
      __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_7));
      PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_t_6));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
      __pyx_t_6 = 0;
      __pyx_t_6 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      {__pyx_filename = __pyx_f[3]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":93
 *          if size != n: raise ValueError(
 *              "expecting %d items, got %d" % (size, n))
 *          ob = allocate(size, sizeof(MPI_Datatype), <void**>&array)             # <<<<<<<<<<<<<<
 *          for i from 0 <= i < size:
 *              array[i] = (<Info?>sequence[i]).ob_mpi
 */
    __pyx_t_6 = PyMPI_Allocate(__pyx_v_size, (sizeof(MPI_Datatype)), ((void **)(&__pyx_v_array))); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_v_ob = __pyx_t_6;
    __pyx_t_6 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":94
 *              "expecting %d items, got %d" % (size, n))
 *          ob = allocate(size, sizeof(MPI_Datatype), <void**>&array)
 *          for i from 0 <= i < size:             # <<<<<<<<<<<<<<
 *              array[i] = (<Info?>sequence[i]).ob_mpi
 *      p[0] = array
 */
    __pyx_t_5 = __pyx_v_size;
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) {

      /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":95
 *          ob = allocate(size, sizeof(MPI_Datatype), <void**>&array)
 *          for i from 0 <= i < size:
 *              array[i] = (<Info?>sequence[i]).ob_mpi             # <<<<<<<<<<<<<<
 *      p[0] = array
 *      return ob
 */
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_sequence, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_6) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      if (!(likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_6mpi4py_3MPI_Info)))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_array[__pyx_v_i]) = ((struct PyMPIInfoObject *)__pyx_t_6)->ob_mpi;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":96
 *          for i from 0 <= i < size:
 *              array[i] = (<Info?>sequence[i]).ob_mpi
 *      p[0] = array             # <<<<<<<<<<<<<<
 *      return ob
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_array;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":97
 *              array[i] = (<Info?>sequence[i]).ob_mpi
 *      p[0] = array
 *      return ob             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ob);
  __pyx_r = __pyx_v_ob;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI.asarray_Info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":101
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline object asarray_str(object sequence,             # <<<<<<<<<<<<<<
 *                                Py_ssize_t size, char ***p):
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_str(PyObject *__pyx_v_sequence, Py_ssize_t __pyx_v_size, char ***__pyx_v_p) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  char **__pyx_v_array;
  PyObject *__pyx_v_ob = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asarray_str");

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":103
 * cdef inline object asarray_str(object sequence,
 *                                Py_ssize_t size, char ***p):
 *      cdef Py_ssize_t i = 0, n = len(sequence)             # <<<<<<<<<<<<<<
 *      if size != n: raise ValueError(
 *          "expecting %d items, got %d" % (size, n))
 */
  __pyx_v_i = 0;
  __pyx_t_1 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":104
 *                                Py_ssize_t size, char ***p):
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size != n: raise ValueError(             # <<<<<<<<<<<<<<
 *          "expecting %d items, got %d" % (size, n))
 *      cdef char** array = NULL
 */
  __pyx_t_2 = (__pyx_v_size != __pyx_v_n);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":105
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size != n: raise ValueError(
 *          "expecting %d items, got %d" % (size, n))             # <<<<<<<<<<<<<<
 *      cdef char** array = NULL
 *      cdef object ob = allocate((n+1), sizeof(char*), <void**>&array)
 */
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_3 = 0;
    __pyx_t_4 = 0;
    __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_10), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_4));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
    __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[3]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":106
 *      if size != n: raise ValueError(
 *          "expecting %d items, got %d" % (size, n))
 *      cdef char** array = NULL             # <<<<<<<<<<<<<<
 *      cdef object ob = allocate((n+1), sizeof(char*), <void**>&array)
 *      for i from 0 <= i < n:
 */
  __pyx_v_array = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":107
 *          "expecting %d items, got %d" % (size, n))
 *      cdef char** array = NULL
 *      cdef object ob = allocate((n+1), sizeof(char*), <void**>&array)             # <<<<<<<<<<<<<<
 *      for i from 0 <= i < n:
 *          sequence[i] = asmpistr(sequence[i], &array[i], NULL)
 */
  __pyx_t_4 = PyMPI_Allocate((__pyx_v_n + 1), (sizeof(char *)), ((void **)(&__pyx_v_array))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_ob = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":108
 *      cdef char** array = NULL
 *      cdef object ob = allocate((n+1), sizeof(char*), <void**>&array)
 *      for i from 0 <= i < n:             # <<<<<<<<<<<<<<
 *          sequence[i] = asmpistr(sequence[i], &array[i], NULL)
 *      array[n] = NULL
 */
  __pyx_t_1 = __pyx_v_n;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":109
 *      cdef object ob = allocate((n+1), sizeof(char*), <void**>&array)
 *      for i from 0 <= i < n:
 *          sequence[i] = asmpistr(sequence[i], &array[i], NULL)             # <<<<<<<<<<<<<<
 *      array[n] = NULL
 *      p[0] = array
 */
    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_sequence, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_4) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_t_4, (&(__pyx_v_array[__pyx_v_i])), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__Pyx_SetItemInt(__pyx_v_sequence, __pyx_v_i, __pyx_t_5, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":110
 *      for i from 0 <= i < n:
 *          sequence[i] = asmpistr(sequence[i], &array[i], NULL)
 *      array[n] = NULL             # <<<<<<<<<<<<<<
 *      p[0] = array
 *      return (sequence, ob)
 */
  (__pyx_v_array[__pyx_v_n]) = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":111
 *          sequence[i] = asmpistr(sequence[i], &array[i], NULL)
 *      array[n] = NULL
 *      p[0] = array             # <<<<<<<<<<<<<<
 *      return (sequence, ob)
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_array;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":112
 *      array[n] = NULL
 *      p[0] = array
 *      return (sequence, ob)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asarray_argv(object sequence, char ***p):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __Pyx_INCREF(__pyx_v_sequence);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_sequence);
  __Pyx_GIVEREF(__pyx_v_sequence);
  __Pyx_INCREF(__pyx_v_ob);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_ob);
  __Pyx_GIVEREF(__pyx_v_ob);
  __pyx_r = ((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.asarray_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":114
 *      return (sequence, ob)
 * 
 * cdef inline object asarray_argv(object sequence, char ***p):             # <<<<<<<<<<<<<<
 *      if sequence is None:
 *          p[0] = MPI_ARGV_NULL
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_argv(PyObject *__pyx_v_sequence, char ***__pyx_v_p) {
  Py_ssize_t __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asarray_argv");

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":115
 * 
 * cdef inline object asarray_argv(object sequence, char ***p):
 *      if sequence is None:             # <<<<<<<<<<<<<<
 *          p[0] = MPI_ARGV_NULL
 *          return None
 */
  __pyx_t_1 = (__pyx_v_sequence == Py_None);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":116
 * cdef inline object asarray_argv(object sequence, char ***p):
 *      if sequence is None:
 *          p[0] = MPI_ARGV_NULL             # <<<<<<<<<<<<<<
 *          return None
 *      cdef Py_ssize_t size = len(sequence)
 */
    (__pyx_v_p[0]) = MPI_ARGV_NULL;

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":117
 *      if sequence is None:
 *          p[0] = MPI_ARGV_NULL
 *          return None             # <<<<<<<<<<<<<<
 *      cdef Py_ssize_t size = len(sequence)
 *      return asarray_str(sequence, size, p)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":118
 *          p[0] = MPI_ARGV_NULL
 *          return None
 *      cdef Py_ssize_t size = len(sequence)             # <<<<<<<<<<<<<<
 *      return asarray_str(sequence, size, p)
 * 
 */
  __pyx_t_2 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_size = __pyx_t_2;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":119
 *          return None
 *      cdef Py_ssize_t size = len(sequence)
 *      return asarray_str(sequence, size, p)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asarray_argvs(object sequence,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asarray_str(__pyx_v_sequence, __pyx_v_size, __pyx_v_p); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.asarray_argv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":121
 *      return asarray_str(sequence, size, p)
 * 
 * cdef inline object asarray_argvs(object sequence,             # <<<<<<<<<<<<<<
 *                                  Py_ssize_t size, char ****p):
 *      if sequence is None:
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_argvs(PyObject *__pyx_v_sequence, Py_ssize_t __pyx_v_size, char ****__pyx_v_p) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  char ***__pyx_v_array;
  PyObject *__pyx_v_ob = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asarray_argvs");

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":123
 * cdef inline object asarray_argvs(object sequence,
 *                                  Py_ssize_t size, char ****p):
 *      if sequence is None:             # <<<<<<<<<<<<<<
 *          p[0] = MPI_ARGVS_NULL
 *          return None
 */
  __pyx_t_1 = (__pyx_v_sequence == Py_None);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":124
 *                                  Py_ssize_t size, char ****p):
 *      if sequence is None:
 *          p[0] = MPI_ARGVS_NULL             # <<<<<<<<<<<<<<
 *          return None
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 */
    (__pyx_v_p[0]) = MPI_ARGVS_NULL;

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":125
 *      if sequence is None:
 *          p[0] = MPI_ARGVS_NULL
 *          return None             # <<<<<<<<<<<<<<
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size != n: raise ValueError(
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":126
 *          p[0] = MPI_ARGVS_NULL
 *          return None
 *      cdef Py_ssize_t i = 0, n = len(sequence)             # <<<<<<<<<<<<<<
 *      if size != n: raise ValueError(
 *          "expecting %d items, got %d" % (size, n))
 */
  __pyx_v_i = 0;
  __pyx_t_2 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_2;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":127
 *          return None
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size != n: raise ValueError(             # <<<<<<<<<<<<<<
 *          "expecting %d items, got %d" % (size, n))
 *      cdef char*** array = NULL
 */
  __pyx_t_1 = (__pyx_v_size != __pyx_v_n);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":128
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size != n: raise ValueError(
 *          "expecting %d items, got %d" % (size, n))             # <<<<<<<<<<<<<<
 *      cdef char*** array = NULL
 *      cdef object ob = allocate((n+1), sizeof(char**), <void**>&array)
 */
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_3 = 0;
    __pyx_t_4 = 0;
    __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_10), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_4));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
    __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[3]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":129
 *      if size != n: raise ValueError(
 *          "expecting %d items, got %d" % (size, n))
 *      cdef char*** array = NULL             # <<<<<<<<<<<<<<
 *      cdef object ob = allocate((n+1), sizeof(char**), <void**>&array)
 *      for i from 0 <= i < n:
 */
  __pyx_v_array = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":130
 *          "expecting %d items, got %d" % (size, n))
 *      cdef char*** array = NULL
 *      cdef object ob = allocate((n+1), sizeof(char**), <void**>&array)             # <<<<<<<<<<<<<<
 *      for i from 0 <= i < n:
 *          sequence[i] = asarray_argv(sequence[i], &array[i])
 */
  __pyx_t_4 = PyMPI_Allocate((__pyx_v_n + 1), (sizeof(char **)), ((void **)(&__pyx_v_array))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_ob = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":131
 *      cdef char*** array = NULL
 *      cdef object ob = allocate((n+1), sizeof(char**), <void**>&array)
 *      for i from 0 <= i < n:             # <<<<<<<<<<<<<<
 *          sequence[i] = asarray_argv(sequence[i], &array[i])
 *      array[n] = NULL
 */
  __pyx_t_2 = __pyx_v_n;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":132
 *      cdef object ob = allocate((n+1), sizeof(char**), <void**>&array)
 *      for i from 0 <= i < n:
 *          sequence[i] = asarray_argv(sequence[i], &array[i])             # <<<<<<<<<<<<<<
 *      array[n] = NULL
 *      p[0] = array
 */
    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_sequence, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_4) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __pyx_f_6mpi4py_3MPI_asarray_argv(__pyx_t_4, (&(__pyx_v_array[__pyx_v_i]))); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__Pyx_SetItemInt(__pyx_v_sequence, __pyx_v_i, __pyx_t_5, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":133
 *      for i from 0 <= i < n:
 *          sequence[i] = asarray_argv(sequence[i], &array[i])
 *      array[n] = NULL             # <<<<<<<<<<<<<<
 *      p[0] = array
 *      return (sequence, ob)
 */
  (__pyx_v_array[__pyx_v_n]) = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":134
 *          sequence[i] = asarray_argv(sequence[i], &array[i])
 *      array[n] = NULL
 *      p[0] = array             # <<<<<<<<<<<<<<
 *      return (sequence, ob)
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_array;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":135
 *      array[n] = NULL
 *      p[0] = array
 *      return (sequence, ob)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asarray_nprocs(object sequence,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __Pyx_INCREF(__pyx_v_sequence);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_sequence);
  __Pyx_GIVEREF(__pyx_v_sequence);
  __Pyx_INCREF(__pyx_v_ob);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_ob);
  __Pyx_GIVEREF(__pyx_v_ob);
  __pyx_r = ((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.asarray_argvs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":137
 *      return (sequence, ob)
 * 
 * cdef inline object asarray_nprocs(object sequence,             # <<<<<<<<<<<<<<
 *                                   Py_ssize_t size, int **p):
 *      cdef Py_ssize_t i = 0
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_nprocs(PyObject *__pyx_v_sequence, Py_ssize_t __pyx_v_size, int **__pyx_v_p) {
  Py_ssize_t __pyx_v_i;
  int __pyx_v_value;
  int *__pyx_v_array;
  PyObject *__pyx_v_ob = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asarray_nprocs");

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":139
 * cdef inline object asarray_nprocs(object sequence,
 *                                   Py_ssize_t size, int **p):
 *      cdef Py_ssize_t i = 0             # <<<<<<<<<<<<<<
 *      cdef int value = 1
 *      cdef int *array = NULL
 */
  __pyx_v_i = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":140
 *                                   Py_ssize_t size, int **p):
 *      cdef Py_ssize_t i = 0
 *      cdef int value = 1             # <<<<<<<<<<<<<<
 *      cdef int *array = NULL
 *      cdef object ob
 */
  __pyx_v_value = 1;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":141
 *      cdef Py_ssize_t i = 0
 *      cdef int value = 1
 *      cdef int *array = NULL             # <<<<<<<<<<<<<<
 *      cdef object ob
 *      if sequence is None or is_int(sequence):
 */
  __pyx_v_array = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":143
 *      cdef int *array = NULL
 *      cdef object ob
 *      if sequence is None or is_int(sequence):             # <<<<<<<<<<<<<<
 *          if sequence is None:
 *              value = 1
 */
  __pyx_t_1 = (__pyx_v_sequence == Py_None);
  if (!__pyx_t_1) {
    __pyx_t_2 = PyInt_Check(__pyx_v_sequence);
  } else {
    __pyx_t_2 = __pyx_t_1;
  }
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":144
 *      cdef object ob
 *      if sequence is None or is_int(sequence):
 *          if sequence is None:             # <<<<<<<<<<<<<<
 *              value = 1
 *          else:
 */
    __pyx_t_2 = (__pyx_v_sequence == Py_None);
    if (__pyx_t_2) {

      /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":145
 *      if sequence is None or is_int(sequence):
 *          if sequence is None:
 *              value = 1             # <<<<<<<<<<<<<<
 *          else:
 *              value = sequence
 */
      __pyx_v_value = 1;
      goto __pyx_L4;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":147
 *              value = 1
 *          else:
 *              value = sequence             # <<<<<<<<<<<<<<
 *          ob = newarray_int(size, &array)
 *          for i from 0 <= i < size:
 */
      __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_v_sequence); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_v_value = __pyx_t_3;
    }
    __pyx_L4:;

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":148
 *          else:
 *              value = sequence
 *          ob = newarray_int(size, &array)             # <<<<<<<<<<<<<<
 *          for i from 0 <= i < size:
 *              array[i] = value
 */
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_size, (&__pyx_v_array)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_ob = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":149
 *              value = sequence
 *          ob = newarray_int(size, &array)
 *          for i from 0 <= i < size:             # <<<<<<<<<<<<<<
 *              array[i] = value
 *      else:
 */
    __pyx_t_5 = __pyx_v_size;
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) {

      /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":150
 *          ob = newarray_int(size, &array)
 *          for i from 0 <= i < size:
 *              array[i] = value             # <<<<<<<<<<<<<<
 *      else:
 *          ob = asarray_int(sequence, <int>size, &array)
 */
      (__pyx_v_array[__pyx_v_i]) = __pyx_v_value;
    }
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":152
 *              array[i] = value
 *      else:
 *          ob = asarray_int(sequence, <int>size, &array)             # <<<<<<<<<<<<<<
 *      p[0] = array
 *      return ob
 */
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_sequence, ((int)__pyx_v_size), (&__pyx_v_array)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_ob = __pyx_t_4;
    __pyx_t_4 = 0;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":153
 *      else:
 *          ob = asarray_int(sequence, <int>size, &array)
 *      p[0] = array             # <<<<<<<<<<<<<<
 *      return ob
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_array;

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":154
 *          ob = asarray_int(sequence, <int>size, &array)
 *      p[0] = array
 *      return ob             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ob);
  __pyx_r = __pyx_v_ob;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.asarray_nprocs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":19
 * # Status
 * 
 * cdef inline MPI_Status *arg_Status(object status):             # <<<<<<<<<<<<<<
 *     if status is None: return MPI_STATUS_IGNORE
 *     return &((<Status>status).ob_mpi)
 */

static CYTHON_INLINE MPI_Status *__pyx_f_6mpi4py_3MPI_arg_Status(PyObject *__pyx_v_status) {
  MPI_Status *__pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("arg_Status");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":20
 * 
 * cdef inline MPI_Status *arg_Status(object status):
 *     if status is None: return MPI_STATUS_IGNORE             # <<<<<<<<<<<<<<
 *     return &((<Status>status).ob_mpi)
 * 
 */
  __pyx_t_1 = (__pyx_v_status == Py_None);
  if (__pyx_t_1) {
    __pyx_r = MPI_STATUS_IGNORE;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":21
 * cdef inline MPI_Status *arg_Status(object status):
 *     if status is None: return MPI_STATUS_IGNORE
 *     return &((<Status>status).ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int equal_Status(MPI_Status* s1, MPI_Status* s2) nogil:
 */
  __pyx_r = (&((struct PyMPIStatusObject *)__pyx_v_status)->ob_mpi);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":23
 *     return &((<Status>status).ob_mpi)
 * 
 * cdef inline int equal_Status(MPI_Status* s1, MPI_Status* s2) nogil:             # <<<<<<<<<<<<<<
 *    cdef size_t i=0, n=sizeof(MPI_Status)
 *    cdef unsigned char* a = <unsigned char*>s1
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_equal_Status(MPI_Status *__pyx_v_s1, MPI_Status *__pyx_v_s2) {
  size_t __pyx_v_i;
  size_t __pyx_v_n;
  unsigned char *__pyx_v_a;
  unsigned char *__pyx_v_b;
  int __pyx_r;
  size_t __pyx_t_1;
  int __pyx_t_2;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":24
 * 
 * cdef inline int equal_Status(MPI_Status* s1, MPI_Status* s2) nogil:
 *    cdef size_t i=0, n=sizeof(MPI_Status)             # <<<<<<<<<<<<<<
 *    cdef unsigned char* a = <unsigned char*>s1
 *    cdef unsigned char* b = <unsigned char*>s2
 */
  __pyx_v_i = 0;
  __pyx_v_n = (sizeof(MPI_Status));

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":25
 * cdef inline int equal_Status(MPI_Status* s1, MPI_Status* s2) nogil:
 *    cdef size_t i=0, n=sizeof(MPI_Status)
 *    cdef unsigned char* a = <unsigned char*>s1             # <<<<<<<<<<<<<<
 *    cdef unsigned char* b = <unsigned char*>s2
 *    for i from 0 <= i < n:
 */
  __pyx_v_a = ((unsigned char *)__pyx_v_s1);

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":26
 *    cdef size_t i=0, n=sizeof(MPI_Status)
 *    cdef unsigned char* a = <unsigned char*>s1
 *    cdef unsigned char* b = <unsigned char*>s2             # <<<<<<<<<<<<<<
 *    for i from 0 <= i < n:
 *        if a[i] != b[i]:
 */
  __pyx_v_b = ((unsigned char *)__pyx_v_s2);

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":27
 *    cdef unsigned char* a = <unsigned char*>s1
 *    cdef unsigned char* b = <unsigned char*>s2
 *    for i from 0 <= i < n:             # <<<<<<<<<<<<<<
 *        if a[i] != b[i]:
 *            return 0
 */
  __pyx_t_1 = __pyx_v_n;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {

    /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":28
 *    cdef unsigned char* b = <unsigned char*>s2
 *    for i from 0 <= i < n:
 *        if a[i] != b[i]:             # <<<<<<<<<<<<<<
 *            return 0
 *    return 1
 */
    __pyx_t_2 = ((__pyx_v_a[__pyx_v_i]) != (__pyx_v_b[__pyx_v_i]));
    if (__pyx_t_2) {

      /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":29
 *    for i from 0 <= i < n:
 *        if a[i] != b[i]:
 *            return 0             # <<<<<<<<<<<<<<
 *    return 1
 * 
 */
      __pyx_r = 0;
      goto __pyx_L0;
      goto __pyx_L5;
    }
    __pyx_L5:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":30
 *        if a[i] != b[i]:
 *            return 0
 *    return 1             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
  __pyx_r = 1;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":5
 * cdef dict type_keyval = {}
 * 
 * cdef inline int type_keyval_new(int keyval,             # <<<<<<<<<<<<<<
 *                                 object copy_fn,object delete_fn) except -1:
 *     type_keyval[keyval] = (copy_fn, delete_fn)
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_type_keyval_new(int __pyx_v_keyval, PyObject *__pyx_v_copy_fn, PyObject *__pyx_v_delete_fn) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("type_keyval_new");

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":7
 * cdef inline int type_keyval_new(int keyval,
 *                                 object copy_fn,object delete_fn) except -1:
 *     type_keyval[keyval] = (copy_fn, delete_fn)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_copy_fn);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_copy_fn);
  __Pyx_GIVEREF(__pyx_v_copy_fn);
  __Pyx_INCREF(__pyx_v_delete_fn);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_delete_fn);
  __Pyx_GIVEREF(__pyx_v_delete_fn);
  if (__Pyx_SetItemInt(((PyObject *)__pyx_v_6mpi4py_3MPI_type_keyval), __pyx_v_keyval, ((PyObject *)__pyx_t_1), sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":8
 *                                 object copy_fn,object delete_fn) except -1:
 *     type_keyval[keyval] = (copy_fn, delete_fn)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int type_keyval_del(int keyval) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.type_keyval_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":10
 *     return 0
 * 
 * cdef inline int type_keyval_del(int keyval) except -1:             # <<<<<<<<<<<<<<
 *     try: del type_keyval[keyval]
 *     except KeyError: pass
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_type_keyval_del(int __pyx_v_keyval) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("type_keyval_del");

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":11
 * 
 * cdef inline int type_keyval_del(int keyval) except -1:
 *     try: del type_keyval[keyval]             # <<<<<<<<<<<<<<
 *     except KeyError: pass
 *     return 0
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {
      if (__Pyx_DelItemInt(((PyObject *)__pyx_v_6mpi4py_3MPI_type_keyval), __pyx_v_keyval, sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;

    /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":12
 * cdef inline int type_keyval_del(int keyval) except -1:
 *     try: del type_keyval[keyval]
 *     except KeyError: pass             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_4 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
    if (__pyx_t_4) {
      PyErr_Restore(0,0,0);
      goto __pyx_L4_exception_handled;
    }
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L10_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":13
 *     try: del type_keyval[keyval]
 *     except KeyError: pass
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int type_attr_copy(MPI_Datatype datatype,
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.type_keyval_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":15
 *     return 0
 * 
 * cdef inline int type_attr_copy(MPI_Datatype datatype,             # <<<<<<<<<<<<<<
 *                                int keyval,
 *                                void *extra_state,
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_type_attr_copy(MPI_Datatype __pyx_v_datatype, int __pyx_v_keyval, void *__pyx_v_extra_state, void *__pyx_v_attrval_in, void *__pyx_v_attrval_out, int *__pyx_v_flag) {
  PyObject *__pyx_v_entry = 0;
  PyObject *__pyx_v_copy_fn = 0;
  PyObject *__pyx_v_attrval = 0;
  void **__pyx_v_aptr;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("type_attr_copy");

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":21
 *                                void *attrval_out,
 *                                int *flag) except -1:
 *     cdef tuple entry = type_keyval.get(keyval)             # <<<<<<<<<<<<<<
 *     cdef object copy_fn = None
 *     if entry is not None: copy_fn = entry[0]
 */
  if (unlikely(((PyObject *)__pyx_v_6mpi4py_3MPI_type_keyval) == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get"); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_1 = PyInt_FromLong(__pyx_v_keyval); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyDict_GetItemDefault(((PyObject *)__pyx_v_6mpi4py_3MPI_type_keyval), __pyx_t_1, Py_None); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected tuple, got %.200s", Py_TYPE(__pyx_t_2)->tp_name), 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_entry = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":22
 *                                int *flag) except -1:
 *     cdef tuple entry = type_keyval.get(keyval)
 *     cdef object copy_fn = None             # <<<<<<<<<<<<<<
 *     if entry is not None: copy_fn = entry[0]
 *     if copy_fn is None or copy_fn is False:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_copy_fn = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":23
 *     cdef tuple entry = type_keyval.get(keyval)
 *     cdef object copy_fn = None
 *     if entry is not None: copy_fn = entry[0]             # <<<<<<<<<<<<<<
 *     if copy_fn is None or copy_fn is False:
 *         flag[0] = 0
 */
  __pyx_t_3 = (__pyx_v_entry != ((PyObject*)Py_None));
  if (__pyx_t_3) {
    __pyx_t_2 = __Pyx_GetItemInt_Tuple(((PyObject *)__pyx_v_entry), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_copy_fn);
    __pyx_v_copy_fn = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":24
 *     cdef object copy_fn = None
 *     if entry is not None: copy_fn = entry[0]
 *     if copy_fn is None or copy_fn is False:             # <<<<<<<<<<<<<<
 *         flag[0] = 0
 *         return 0
 */
  __pyx_t_3 = (__pyx_v_copy_fn == Py_None);
  if (!__pyx_t_3) {
    __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = (__pyx_v_copy_fn == __pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_5 = __pyx_t_4;
  } else {
    __pyx_t_5 = __pyx_t_3;
  }
  if (__pyx_t_5) {

    /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":25
 *     if entry is not None: copy_fn = entry[0]
 *     if copy_fn is None or copy_fn is False:
 *         flag[0] = 0             # <<<<<<<<<<<<<<
 *         return 0
 *     cdef object attrval = <object>attrval_in
 */
    (__pyx_v_flag[0]) = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":26
 *     if copy_fn is None or copy_fn is False:
 *         flag[0] = 0
 *         return 0             # <<<<<<<<<<<<<<
 *     cdef object attrval = <object>attrval_in
 *     cdef void **aptr = <void **>attrval_out
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":27
 *         flag[0] = 0
 *         return 0
 *     cdef object attrval = <object>attrval_in             # <<<<<<<<<<<<<<
 *     cdef void **aptr = <void **>attrval_out
 *     if copy_fn is not True:
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_attrval_in));
  __pyx_v_attrval = ((PyObject *)__pyx_v_attrval_in);

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":28
 *         return 0
 *     cdef object attrval = <object>attrval_in
 *     cdef void **aptr = <void **>attrval_out             # <<<<<<<<<<<<<<
 *     if copy_fn is not True:
 *         attrval = copy_fn(attrval)
 */
  __pyx_v_aptr = ((void **)__pyx_v_attrval_out);

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":29
 *     cdef object attrval = <object>attrval_in
 *     cdef void **aptr = <void **>attrval_out
 *     if copy_fn is not True:             # <<<<<<<<<<<<<<
 *         attrval = copy_fn(attrval)
 *     Py_INCREF(attrval)
 */
  __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = (__pyx_v_copy_fn != __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_5) {

    /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":30
 *     cdef void **aptr = <void **>attrval_out
 *     if copy_fn is not True:
 *         attrval = copy_fn(attrval)             # <<<<<<<<<<<<<<
 *     Py_INCREF(attrval)
 *     aptr[0] = <void*>attrval
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_INCREF(__pyx_v_attrval);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_attrval);
    __Pyx_GIVEREF(__pyx_v_attrval);
    __pyx_t_1 = PyObject_Call(__pyx_v_copy_fn, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_attrval);
    __pyx_v_attrval = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":31
 *     if copy_fn is not True:
 *         attrval = copy_fn(attrval)
 *     Py_INCREF(attrval)             # <<<<<<<<<<<<<<
 *     aptr[0] = <void*>attrval
 *     flag[0] = 1
 */
  Py_INCREF(__pyx_v_attrval);

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":32
 *         attrval = copy_fn(attrval)
 *     Py_INCREF(attrval)
 *     aptr[0] = <void*>attrval             # <<<<<<<<<<<<<<
 *     flag[0] = 1
 *     return 0
 */
  (__pyx_v_aptr[0]) = ((void *)__pyx_v_attrval);

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":33
 *     Py_INCREF(attrval)
 *     aptr[0] = <void*>attrval
 *     flag[0] = 1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  (__pyx_v_flag[0]) = 1;

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":34
 *     aptr[0] = <void*>attrval
 *     flag[0] = 1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int type_attr_delete(MPI_Datatype datatype,
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.type_attr_copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_entry);
  __Pyx_XDECREF(__pyx_v_copy_fn);
  __Pyx_XDECREF(__pyx_v_attrval);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":36
 *     return 0
 * 
 * cdef inline int type_attr_delete(MPI_Datatype datatype,             # <<<<<<<<<<<<<<
 *                                  int keyval,
 *                                  void *attrval,
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_type_attr_delete(MPI_Datatype __pyx_v_datatype, int __pyx_v_keyval, void *__pyx_v_attrval, void *__pyx_v_extra_state) {
  PyObject *__pyx_v_entry = 0;
  PyObject *__pyx_v_delete_fn = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("type_attr_delete");

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":40
 *                                  void *attrval,
 *                                  void *extra_state) except -1:
 *     cdef tuple entry = type_keyval.get(keyval)             # <<<<<<<<<<<<<<
 *     cdef object delete_fn = None
 *     if entry is not None: delete_fn = entry[1]
 */
  if (unlikely(((PyObject *)__pyx_v_6mpi4py_3MPI_type_keyval) == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get"); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_1 = PyInt_FromLong(__pyx_v_keyval); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyDict_GetItemDefault(((PyObject *)__pyx_v_6mpi4py_3MPI_type_keyval), __pyx_t_1, Py_None); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected tuple, got %.200s", Py_TYPE(__pyx_t_2)->tp_name), 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_entry = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":41
 *                                  void *extra_state) except -1:
 *     cdef tuple entry = type_keyval.get(keyval)
 *     cdef object delete_fn = None             # <<<<<<<<<<<<<<
 *     if entry is not None: delete_fn = entry[1]
 *     if delete_fn is not None:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_delete_fn = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":42
 *     cdef tuple entry = type_keyval.get(keyval)
 *     cdef object delete_fn = None
 *     if entry is not None: delete_fn = entry[1]             # <<<<<<<<<<<<<<
 *     if delete_fn is not None:
 *         delete_fn(<object>attrval)
 */
  __pyx_t_3 = (__pyx_v_entry != ((PyObject*)Py_None));
  if (__pyx_t_3) {
    __pyx_t_2 = __Pyx_GetItemInt_Tuple(((PyObject *)__pyx_v_entry), 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_delete_fn);
    __pyx_v_delete_fn = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":43
 *     cdef object delete_fn = None
 *     if entry is not None: delete_fn = entry[1]
 *     if delete_fn is not None:             # <<<<<<<<<<<<<<
 *         delete_fn(<object>attrval)
 *     Py_DECREF(<object>attrval)
 */
  __pyx_t_3 = (__pyx_v_delete_fn != Py_None);
  if (__pyx_t_3) {

    /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":44
 *     if entry is not None: delete_fn = entry[1]
 *     if delete_fn is not None:
 *         delete_fn(<object>attrval)             # <<<<<<<<<<<<<<
 *     Py_DECREF(<object>attrval)
 *     return 0
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_INCREF(((PyObject *)__pyx_v_attrval));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_attrval));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_attrval));
    __pyx_t_1 = PyObject_Call(__pyx_v_delete_fn, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":45
 *     if delete_fn is not None:
 *         delete_fn(<object>attrval)
 *     Py_DECREF(<object>attrval)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  Py_DECREF(((PyObject *)__pyx_v_attrval));

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":46
 *         delete_fn(<object>attrval)
 *     Py_DECREF(<object>attrval)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * @cython.callspec("PyMPIAPI")
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.type_attr_delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_entry);
  __Pyx_XDECREF(__pyx_v_delete_fn);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":49
 * 
 * @cython.callspec("PyMPIAPI")
 * cdef int type_attr_copy_fn(MPI_Datatype datatype,             # <<<<<<<<<<<<<<
 *                            int keyval,
 *                            void *extra_state,
 */

static int PyMPIAPI __pyx_f_6mpi4py_3MPI_type_attr_copy_fn(MPI_Datatype __pyx_v_datatype, int __pyx_v_keyval, void *__pyx_v_extra_state, void *__pyx_v_attrval_in, void *__pyx_v_attrval_out, int *__pyx_v_flag) {
  PyObject *__pyx_v_exc = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("type_attr_copy_fn");

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":55
 *                            void *attrval_out,
 *                            int *flag) with gil:
 *     if not Py_IsInitialized():             # <<<<<<<<<<<<<<
 *         return MPI_SUCCESS
 *     if attrval_in == NULL:
 */
  __pyx_t_1 = (!Py_IsInitialized());
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":56
 *                            int *flag) with gil:
 *     if not Py_IsInitialized():
 *         return MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     if attrval_in == NULL:
 *         return MPI_ERR_INTERN
 */
    __pyx_r = MPI_SUCCESS;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":57
 *     if not Py_IsInitialized():
 *         return MPI_SUCCESS
 *     if attrval_in == NULL:             # <<<<<<<<<<<<<<
 *         return MPI_ERR_INTERN
 *     if attrval_out == NULL:
 */
  __pyx_t_1 = (__pyx_v_attrval_in == NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":58
 *         return MPI_SUCCESS
 *     if attrval_in == NULL:
 *         return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if attrval_out == NULL:
 *         return MPI_ERR_INTERN
 */
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":59
 *     if attrval_in == NULL:
 *         return MPI_ERR_INTERN
 *     if attrval_out == NULL:             # <<<<<<<<<<<<<<
 *         return MPI_ERR_INTERN
 *     cdef object exc
 */
  __pyx_t_1 = (__pyx_v_attrval_out == NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":60
 *         return MPI_ERR_INTERN
 *     if attrval_out == NULL:
 *         return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     cdef object exc
 *     try:
 */
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":62
 *         return MPI_ERR_INTERN
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         type_attr_copy(datatype, keyval, extra_state,
 *                        attrval_in, attrval_out, flag)
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":64
 *     try:
 *         type_attr_copy(datatype, keyval, extra_state,
 *                        attrval_in, attrval_out, flag)             # <<<<<<<<<<<<<<
 *     except MPIException, exc:
 *         print_traceback()
 */
      __pyx_t_5 = __pyx_f_6mpi4py_3MPI_type_attr_copy(__pyx_v_datatype, __pyx_v_keyval, __pyx_v_extra_state, __pyx_v_attrval_in, __pyx_v_attrval_out, __pyx_v_flag); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L13_try_end;
    __pyx_L6_error:;

    /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":65
 *         type_attr_copy(datatype, keyval, extra_state,
 *                        attrval_in, attrval_out, flag)
 *     except MPIException, exc:             # <<<<<<<<<<<<<<
 *         print_traceback()
 *         return exc.Get_error_code()
 */
    __pyx_t_5 = PyErr_ExceptionMatches(__pyx_v_6mpi4py_3MPI_MPIException);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("mpi4py.MPI.type_attr_copy_fn", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_7);
      __pyx_v_exc = __pyx_t_7;

      /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":66
 *                        attrval_in, attrval_out, flag)
 *     except MPIException, exc:
 *         print_traceback()             # <<<<<<<<<<<<<<
 *         return exc.Get_error_code()
 *     except:
 */
      __pyx_f_6mpi4py_3MPI_print_traceback();

      /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":67
 *     except MPIException, exc:
 *         print_traceback()
 *         return exc.Get_error_code()             # <<<<<<<<<<<<<<
 *     except:
 *         print_traceback()
 */
      __pyx_t_9 = PyObject_GetAttr(__pyx_v_exc, __pyx_n_s__Get_error_code); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_t_10); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_r = __pyx_t_5;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L9_except_return;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L7_exception_handled;
    }

    /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":68
 *         print_traceback()
 *         return exc.Get_error_code()
 *     except:             # <<<<<<<<<<<<<<
 *         print_traceback()
 *         return MPI_ERR_OTHER
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.type_attr_copy_fn", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_6);

      /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":69
 *         return exc.Get_error_code()
 *     except:
 *         print_traceback()             # <<<<<<<<<<<<<<
 *         return MPI_ERR_OTHER
 *     return MPI_SUCCESS
 */
      __pyx_f_6mpi4py_3MPI_print_traceback();

      /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":70
 *     except:
 *         print_traceback()
 *         return MPI_ERR_OTHER             # <<<<<<<<<<<<<<
 *     return MPI_SUCCESS
 * 
 */
      __pyx_r = MPI_ERR_OTHER;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L9_except_return;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L7_exception_handled;
    }
    __pyx_L8_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L9_except_return:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L0;
    __pyx_L7_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L13_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":71
 *         print_traceback()
 *         return MPI_ERR_OTHER
 *     return MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 * @cython.callspec("PyMPIAPI")
 */
  __pyx_r = MPI_SUCCESS;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_WriteUnraisable("mpi4py.MPI.type_attr_copy_fn", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":74
 * 
 * @cython.callspec("PyMPIAPI")
 * cdef int type_attr_delete_fn(MPI_Datatype datatype,             # <<<<<<<<<<<<<<
 *                              int keyval,
 *                              void *attrval,
 */

static int PyMPIAPI __pyx_f_6mpi4py_3MPI_type_attr_delete_fn(MPI_Datatype __pyx_v_datatype, int __pyx_v_keyval, void *__pyx_v_attrval, void *__pyx_v_extra_state) {
  PyObject *__pyx_v_exc = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("type_attr_delete_fn");

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":78
 *                              void *attrval,
 *                              void *extra_state) with gil:
 *     if not Py_IsInitialized():             # <<<<<<<<<<<<<<
 *         return MPI_SUCCESS
 *     if attrval == NULL:
 */
  __pyx_t_1 = (!Py_IsInitialized());
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":79
 *                              void *extra_state) with gil:
 *     if not Py_IsInitialized():
 *         return MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     if attrval == NULL:
 *         return MPI_ERR_INTERN
 */
    __pyx_r = MPI_SUCCESS;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":80
 *     if not Py_IsInitialized():
 *         return MPI_SUCCESS
 *     if attrval == NULL:             # <<<<<<<<<<<<<<
 *         return MPI_ERR_INTERN
 *     cdef object exc
 */
  __pyx_t_1 = (__pyx_v_attrval == NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":81
 *         return MPI_SUCCESS
 *     if attrval == NULL:
 *         return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     cdef object exc
 *     try:
 */
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":83
 *         return MPI_ERR_INTERN
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         type_attr_delete(datatype, keyval, attrval, extra_state)
 *     except MPIException, exc:
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":84
 *     cdef object exc
 *     try:
 *         type_attr_delete(datatype, keyval, attrval, extra_state)             # <<<<<<<<<<<<<<
 *     except MPIException, exc:
 *         print_traceback()
 */
      __pyx_t_5 = __pyx_f_6mpi4py_3MPI_type_attr_delete(__pyx_v_datatype, __pyx_v_keyval, __pyx_v_attrval, __pyx_v_extra_state); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L12_try_end;
    __pyx_L5_error:;

    /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":85
 *     try:
 *         type_attr_delete(datatype, keyval, attrval, extra_state)
 *     except MPIException, exc:             # <<<<<<<<<<<<<<
 *         print_traceback()
 *         return exc.Get_error_code()
 */
    __pyx_t_5 = PyErr_ExceptionMatches(__pyx_v_6mpi4py_3MPI_MPIException);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("mpi4py.MPI.type_attr_delete_fn", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_7);
      __pyx_v_exc = __pyx_t_7;

      /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":86
 *         type_attr_delete(datatype, keyval, attrval, extra_state)
 *     except MPIException, exc:
 *         print_traceback()             # <<<<<<<<<<<<<<
 *         return exc.Get_error_code()
 *     except:
 */
      __pyx_f_6mpi4py_3MPI_print_traceback();

      /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":87
 *     except MPIException, exc:
 *         print_traceback()
 *         return exc.Get_error_code()             # <<<<<<<<<<<<<<
 *     except:
 *         print_traceback()
 */
      __pyx_t_9 = PyObject_GetAttr(__pyx_v_exc, __pyx_n_s__Get_error_code); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_t_10); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_r = __pyx_t_5;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L8_except_return;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L6_exception_handled;
    }

    /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":88
 *         print_traceback()
 *         return exc.Get_error_code()
 *     except:             # <<<<<<<<<<<<<<
 *         print_traceback()
 *         return MPI_ERR_OTHER
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.type_attr_delete_fn", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_6);

      /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":89
 *         return exc.Get_error_code()
 *     except:
 *         print_traceback()             # <<<<<<<<<<<<<<
 *         return MPI_ERR_OTHER
 *     return MPI_SUCCESS
 */
      __pyx_f_6mpi4py_3MPI_print_traceback();

      /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":90
 *     except:
 *         print_traceback()
 *         return MPI_ERR_OTHER             # <<<<<<<<<<<<<<
 *     return MPI_SUCCESS
 * 
 */
      __pyx_r = MPI_ERR_OTHER;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L8_except_return;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L6_exception_handled;
    }
    __pyx_L7_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L8_except_return:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L0;
    __pyx_L6_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L12_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":91
 *         print_traceback()
 *         return MPI_ERR_OTHER
 *     return MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = MPI_SUCCESS;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_WriteUnraisable("mpi4py.MPI.type_attr_delete_fn", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":37
 * include "typeimpl.pxi"
 * 
 * cdef inline Datatype new_Datatype(MPI_Datatype ob):             # <<<<<<<<<<<<<<
 *     cdef Datatype datatype = <Datatype>Datatype.__new__(Datatype)
 *     datatype.ob_mpi = ob
 */

static CYTHON_INLINE struct PyMPIDatatypeObject *__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_Datatype __pyx_v_ob) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  struct PyMPIDatatypeObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("new_Datatype");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":38
 * 
 * cdef inline Datatype new_Datatype(MPI_Datatype ob):
 *     cdef Datatype datatype = <Datatype>Datatype.__new__(Datatype)             # <<<<<<<<<<<<<<
 *     datatype.ob_mpi = ob
 *     return datatype
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_1)));
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":39
 * cdef inline Datatype new_Datatype(MPI_Datatype ob):
 *     cdef Datatype datatype = <Datatype>Datatype.__new__(Datatype)
 *     datatype.ob_mpi = ob             # <<<<<<<<<<<<<<
 *     return datatype
 * 
 */
  __pyx_v_datatype->ob_mpi = __pyx_v_ob;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":40
 *     cdef Datatype datatype = <Datatype>Datatype.__new__(Datatype)
 *     datatype.ob_mpi = ob
 *     return datatype             # <<<<<<<<<<<<<<
 * 
 * cdef inline int del_Datatype(MPI_Datatype* ob):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_datatype));
  __pyx_r = __pyx_v_datatype;
  goto __pyx_L0;

  __pyx_r = ((struct PyMPIDatatypeObject *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.new_Datatype", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":42
 *     return datatype
 * 
 * cdef inline int del_Datatype(MPI_Datatype* ob):             # <<<<<<<<<<<<<<
 *     #
 *     if ob    == NULL              : return 0
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_del_Datatype(MPI_Datatype *__pyx_v_ob) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("del_Datatype");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":44
 * cdef inline int del_Datatype(MPI_Datatype* ob):
 *     #
 *     if ob    == NULL              : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_DATATYPE_NULL : return 0
 *     if not mpi_active()           : return 0
 */
  __pyx_t_1 = (__pyx_v_ob == NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":45
 *     #
 *     if ob    == NULL              : return 0
 *     if ob[0] == MPI_DATATYPE_NULL : return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active()           : return 0
 *     #
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_DATATYPE_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":46
 *     if ob    == NULL              : return 0
 *     if ob[0] == MPI_DATATYPE_NULL : return 0
 *     if not mpi_active()           : return 0             # <<<<<<<<<<<<<<
 *     #
 *     return MPI_Type_free(ob)
 */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":48
 *     if not mpi_active()           : return 0
 *     #
 *     return MPI_Type_free(ob)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named_Datatype(MPI_Datatype ob):
 */
  __pyx_r = MPI_Type_free(__pyx_v_ob);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":50
 *     return MPI_Type_free(ob)
 * 
 * cdef inline int named_Datatype(MPI_Datatype ob):             # <<<<<<<<<<<<<<
 *     if ob == MPI_DATATYPE_NULL: return 0
 *     cdef int ni = 0, na = 0, nt = 0, combiner = MPI_UNDEFINED
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_named_Datatype(MPI_Datatype __pyx_v_ob) {
  int __pyx_v_ni;
  int __pyx_v_na;
  int __pyx_v_nt;
  int __pyx_v_combiner;
  int __pyx_v_ierr;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("named_Datatype");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":51
 * 
 * cdef inline int named_Datatype(MPI_Datatype ob):
 *     if ob == MPI_DATATYPE_NULL: return 0             # <<<<<<<<<<<<<<
 *     cdef int ni = 0, na = 0, nt = 0, combiner = MPI_UNDEFINED
 *     cdef int ierr = MPI_SUCCESS
 */
  __pyx_t_1 = (__pyx_v_ob == MPI_DATATYPE_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":52
 * cdef inline int named_Datatype(MPI_Datatype ob):
 *     if ob == MPI_DATATYPE_NULL: return 0
 *     cdef int ni = 0, na = 0, nt = 0, combiner = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_SUCCESS
 *     ierr = MPI_Type_get_envelope(ob, &ni, &na, &nt, &combiner)
 */
  __pyx_v_ni = 0;
  __pyx_v_na = 0;
  __pyx_v_nt = 0;
  __pyx_v_combiner = MPI_UNDEFINED;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":53
 *     if ob == MPI_DATATYPE_NULL: return 0
 *     cdef int ni = 0, na = 0, nt = 0, combiner = MPI_UNDEFINED
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     ierr = MPI_Type_get_envelope(ob, &ni, &na, &nt, &combiner)
 *     if ierr: return 0 # XXX
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":54
 *     cdef int ni = 0, na = 0, nt = 0, combiner = MPI_UNDEFINED
 *     cdef int ierr = MPI_SUCCESS
 *     ierr = MPI_Type_get_envelope(ob, &ni, &na, &nt, &combiner)             # <<<<<<<<<<<<<<
 *     if ierr: return 0 # XXX
 *     return combiner == MPI_COMBINER_NAMED
 */
  __pyx_v_ierr = MPI_Type_get_envelope(__pyx_v_ob, (&__pyx_v_ni), (&__pyx_v_na), (&__pyx_v_nt), (&__pyx_v_combiner));

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":55
 *     cdef int ierr = MPI_SUCCESS
 *     ierr = MPI_Type_get_envelope(ob, &ni, &na, &nt, &combiner)
 *     if ierr: return 0 # XXX             # <<<<<<<<<<<<<<
 *     return combiner == MPI_COMBINER_NAMED
 * 
 */
  if (__pyx_v_ierr) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":56
 *     ierr = MPI_Type_get_envelope(ob, &ni, &na, &nt, &combiner)
 *     if ierr: return 0 # XXX
 *     return combiner == MPI_COMBINER_NAMED             # <<<<<<<<<<<<<<
 * 
 * cdef void fix_fileview_Datatype(Datatype datatype):
 */
  __pyx_r = (__pyx_v_combiner == MPI_COMBINER_NAMED);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":58
 *     return combiner == MPI_COMBINER_NAMED
 * 
 * cdef void fix_fileview_Datatype(Datatype datatype):             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype ob = datatype.ob_mpi
 *     if ob == MPI_DATATYPE_NULL: return
 */

static void __pyx_f_6mpi4py_3MPI_fix_fileview_Datatype(struct PyMPIDatatypeObject *__pyx_v_datatype) {
  MPI_Datatype __pyx_v_ob;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("fix_fileview_Datatype");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":59
 * 
 * cdef void fix_fileview_Datatype(Datatype datatype):
 *     cdef MPI_Datatype ob = datatype.ob_mpi             # <<<<<<<<<<<<<<
 *     if ob == MPI_DATATYPE_NULL: return
 *     if named_Datatype(ob): pass
 */
  __pyx_v_ob = __pyx_v_datatype->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":60
 * cdef void fix_fileview_Datatype(Datatype datatype):
 *     cdef MPI_Datatype ob = datatype.ob_mpi
 *     if ob == MPI_DATATYPE_NULL: return             # <<<<<<<<<<<<<<
 *     if named_Datatype(ob): pass
 * 
 */
  __pyx_t_1 = (__pyx_v_ob == MPI_DATATYPE_NULL);
  if (__pyx_t_1) {
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":61
 *     cdef MPI_Datatype ob = datatype.ob_mpi
 *     if ob == MPI_DATATYPE_NULL: return
 *     if named_Datatype(ob): pass             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_named_Datatype(__pyx_v_ob);
  if (__pyx_t_2) {
    goto __pyx_L4;
  }
  __pyx_L4:;

  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":8
 * empty_status.MPI_ERROR  = MPI_SUCCESS
 * 
 * cdef object acquire_rs(object requests,             # <<<<<<<<<<<<<<
 *                        object statuses,
 *                        int         *count,
 */

static PyObject *__pyx_f_6mpi4py_3MPI_acquire_rs(PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses, int *__pyx_v_count, MPI_Request **__pyx_v_rp, MPI_Status **__pyx_v_sp) {
  MPI_Request *__pyx_v_array_r;
  MPI_Status *__pyx_v_array_s;
  PyObject *__pyx_v_ob_r = 0;
  PyObject *__pyx_v_ob_s = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("acquire_rs");

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":13
 *                        MPI_Request *rp[],
 *                        MPI_Status  *sp[]):
 *      cdef MPI_Request *array_r = NULL             # <<<<<<<<<<<<<<
 *      cdef MPI_Status  *array_s = NULL
 *      cdef object ob_r = None, ob_s = None
 */
  __pyx_v_array_r = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":14
 *                        MPI_Status  *sp[]):
 *      cdef MPI_Request *array_r = NULL
 *      cdef MPI_Status  *array_s = NULL             # <<<<<<<<<<<<<<
 *      cdef object ob_r = None, ob_s = None
 *      cdef Py_ssize_t i = 0, n = len(requests)
 */
  __pyx_v_array_s = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":15
 *      cdef MPI_Request *array_r = NULL
 *      cdef MPI_Status  *array_s = NULL
 *      cdef object ob_r = None, ob_s = None             # <<<<<<<<<<<<<<
 *      cdef Py_ssize_t i = 0, n = len(requests)
 *      count[0] = <int>n # XXX overflow ?
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_ob_r = Py_None;
  __Pyx_INCREF(Py_None);
  __pyx_v_ob_s = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":16
 *      cdef MPI_Status  *array_s = NULL
 *      cdef object ob_r = None, ob_s = None
 *      cdef Py_ssize_t i = 0, n = len(requests)             # <<<<<<<<<<<<<<
 *      count[0] = <int>n # XXX overflow ?
 *      ob_r = allocate(n, sizeof(MPI_Request), <void**>&array_r)
 */
  __pyx_v_i = 0;
  __pyx_t_1 = PyObject_Length(__pyx_v_requests); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":17
 *      cdef object ob_r = None, ob_s = None
 *      cdef Py_ssize_t i = 0, n = len(requests)
 *      count[0] = <int>n # XXX overflow ?             # <<<<<<<<<<<<<<
 *      ob_r = allocate(n, sizeof(MPI_Request), <void**>&array_r)
 *      for i from 0 <= i < n:
 */
  (__pyx_v_count[0]) = ((int)__pyx_v_n);

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":18
 *      cdef Py_ssize_t i = 0, n = len(requests)
 *      count[0] = <int>n # XXX overflow ?
 *      ob_r = allocate(n, sizeof(MPI_Request), <void**>&array_r)             # <<<<<<<<<<<<<<
 *      for i from 0 <= i < n:
 *          array_r[i] = (<Request?>requests[i]).ob_mpi
 */
  __pyx_t_2 = PyMPI_Allocate(__pyx_v_n, (sizeof(MPI_Request)), ((void **)(&__pyx_v_array_r))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_ob_r);
  __pyx_v_ob_r = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":19
 *      count[0] = <int>n # XXX overflow ?
 *      ob_r = allocate(n, sizeof(MPI_Request), <void**>&array_r)
 *      for i from 0 <= i < n:             # <<<<<<<<<<<<<<
 *          array_r[i] = (<Request?>requests[i]).ob_mpi
 *      rp[0] = array_r
 */
  __pyx_t_1 = __pyx_v_n;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":20
 *      ob_r = allocate(n, sizeof(MPI_Request), <void**>&array_r)
 *      for i from 0 <= i < n:
 *          array_r[i] = (<Request?>requests[i]).ob_mpi             # <<<<<<<<<<<<<<
 *      rp[0] = array_r
 *      if statuses is not None:
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_requests, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_2) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    if (!(likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Request)))) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    (__pyx_v_array_r[__pyx_v_i]) = ((struct PyMPIRequestObject *)__pyx_t_2)->ob_mpi;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":21
 *      for i from 0 <= i < n:
 *          array_r[i] = (<Request?>requests[i]).ob_mpi
 *      rp[0] = array_r             # <<<<<<<<<<<<<<
 *      if statuses is not None:
 *          ob_s = allocate(n, sizeof(MPI_Status), <void**>&array_s)
 */
  (__pyx_v_rp[0]) = __pyx_v_array_r;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":22
 *          array_r[i] = (<Request?>requests[i]).ob_mpi
 *      rp[0] = array_r
 *      if statuses is not None:             # <<<<<<<<<<<<<<
 *          ob_s = allocate(n, sizeof(MPI_Status), <void**>&array_s)
 *          for i from 0 <= i < n:
 */
  __pyx_t_3 = (__pyx_v_statuses != Py_None);
  if (__pyx_t_3) {

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":23
 *      rp[0] = array_r
 *      if statuses is not None:
 *          ob_s = allocate(n, sizeof(MPI_Status), <void**>&array_s)             # <<<<<<<<<<<<<<
 *          for i from 0 <= i < n:
 *              array_s[i] = empty_status
 */
    __pyx_t_2 = PyMPI_Allocate(__pyx_v_n, (sizeof(MPI_Status)), ((void **)(&__pyx_v_array_s))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_ob_s);
    __pyx_v_ob_s = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":24
 *      if statuses is not None:
 *          ob_s = allocate(n, sizeof(MPI_Status), <void**>&array_s)
 *          for i from 0 <= i < n:             # <<<<<<<<<<<<<<
 *              array_s[i] = empty_status
 *          sp[0] = array_s
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {

      /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":25
 *          ob_s = allocate(n, sizeof(MPI_Status), <void**>&array_s)
 *          for i from 0 <= i < n:
 *              array_s[i] = empty_status             # <<<<<<<<<<<<<<
 *          sp[0] = array_s
 *      return (ob_r, ob_s)
 */
      (__pyx_v_array_s[__pyx_v_i]) = __pyx_v_6mpi4py_3MPI_empty_status;
    }

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":26
 *          for i from 0 <= i < n:
 *              array_s[i] = empty_status
 *          sp[0] = array_s             # <<<<<<<<<<<<<<
 *      return (ob_r, ob_s)
 * 
 */
    (__pyx_v_sp[0]) = __pyx_v_array_s;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":27
 *              array_s[i] = empty_status
 *          sp[0] = array_s
 *      return (ob_r, ob_s)             # <<<<<<<<<<<<<<
 * 
 * cdef int release_rs(object requests,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_ob_r);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_ob_r);
  __Pyx_GIVEREF(__pyx_v_ob_r);
  __Pyx_INCREF(__pyx_v_ob_s);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_ob_s);
  __Pyx_GIVEREF(__pyx_v_ob_s);
  __pyx_r = ((PyObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.acquire_rs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob_r);
  __Pyx_XDECREF(__pyx_v_ob_s);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":29
 *      return (ob_r, ob_s)
 * 
 * cdef int release_rs(object requests,             # <<<<<<<<<<<<<<
 *                     object statuses,
 *                     int         count,
 */

static int __pyx_f_6mpi4py_3MPI_release_rs(PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses, int __pyx_v_count, MPI_Request *__pyx_v_rp, MPI_Status *__pyx_v_sp) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_nr;
  Py_ssize_t __pyx_v_ns;
  struct PyMPIRequestObject *__pyx_v_req = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("release_rs");
  __Pyx_INCREF(__pyx_v_statuses);

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":34
 *                     MPI_Request rp[],
 *                     MPI_Status  sp[]) except -1:
 *     cdef Py_ssize_t i = 0, nr = count, ns = 0             # <<<<<<<<<<<<<<
 *     cdef Request req = None
 *     for i from 0 <= i < nr:
 */
  __pyx_v_i = 0;
  __pyx_v_nr = __pyx_v_count;
  __pyx_v_ns = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":35
 *                     MPI_Status  sp[]) except -1:
 *     cdef Py_ssize_t i = 0, nr = count, ns = 0
 *     cdef Request req = None             # <<<<<<<<<<<<<<
 *     for i from 0 <= i < nr:
 *         req = <Request>requests[i]
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_req = ((struct PyMPIRequestObject *)Py_None);

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":36
 *     cdef Py_ssize_t i = 0, nr = count, ns = 0
 *     cdef Request req = None
 *     for i from 0 <= i < nr:             # <<<<<<<<<<<<<<
 *         req = <Request>requests[i]
 *         req.ob_mpi = rp[i]
 */
  __pyx_t_1 = __pyx_v_nr;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":37
 *     cdef Request req = None
 *     for i from 0 <= i < nr:
 *         req = <Request>requests[i]             # <<<<<<<<<<<<<<
 *         req.ob_mpi = rp[i]
 *         if rp[i] == MPI_REQUEST_NULL:
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_requests, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_2) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)((struct PyMPIRequestObject *)__pyx_t_2)));
    __Pyx_DECREF(((PyObject *)__pyx_v_req));
    __pyx_v_req = ((struct PyMPIRequestObject *)__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":38
 *     for i from 0 <= i < nr:
 *         req = <Request>requests[i]
 *         req.ob_mpi = rp[i]             # <<<<<<<<<<<<<<
 *         if rp[i] == MPI_REQUEST_NULL:
 *             req.ob_buf = None
 */
    __pyx_v_req->ob_mpi = (__pyx_v_rp[__pyx_v_i]);

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":39
 *         req = <Request>requests[i]
 *         req.ob_mpi = rp[i]
 *         if rp[i] == MPI_REQUEST_NULL:             # <<<<<<<<<<<<<<
 *             req.ob_buf = None
 *     if statuses is not None:
 */
    __pyx_t_3 = ((__pyx_v_rp[__pyx_v_i]) == MPI_REQUEST_NULL);
    if (__pyx_t_3) {

      /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":40
 *         req.ob_mpi = rp[i]
 *         if rp[i] == MPI_REQUEST_NULL:
 *             req.ob_buf = None             # <<<<<<<<<<<<<<
 *     if statuses is not None:
 *         ns = len(statuses)
 */
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      __Pyx_GOTREF(__pyx_v_req->ob_buf);
      __Pyx_DECREF(__pyx_v_req->ob_buf);
      __pyx_v_req->ob_buf = Py_None;
      goto __pyx_L5;
    }
    __pyx_L5:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":41
 *         if rp[i] == MPI_REQUEST_NULL:
 *             req.ob_buf = None
 *     if statuses is not None:             # <<<<<<<<<<<<<<
 *         ns = len(statuses)
 *         if nr > ns :
 */
  __pyx_t_3 = (__pyx_v_statuses != Py_None);
  if (__pyx_t_3) {

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":42
 *             req.ob_buf = None
 *     if statuses is not None:
 *         ns = len(statuses)             # <<<<<<<<<<<<<<
 *         if nr > ns :
 *             if isinstance(statuses, list):
 */
    __pyx_t_1 = PyObject_Length(__pyx_v_statuses); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_ns = __pyx_t_1;

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":43
 *     if statuses is not None:
 *         ns = len(statuses)
 *         if nr > ns :             # <<<<<<<<<<<<<<
 *             if isinstance(statuses, list):
 *                 statuses += [Status.__new__(Status)
 */
    __pyx_t_3 = (__pyx_v_nr > __pyx_v_ns);
    if (__pyx_t_3) {

      /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":44
 *         ns = len(statuses)
 *         if nr > ns :
 *             if isinstance(statuses, list):             # <<<<<<<<<<<<<<
 *                 statuses += [Status.__new__(Status)
 *                              for i from ns <= i < nr]
 */
      __pyx_t_2 = ((PyObject *)((PyObject*)(&PyList_Type)));
      __Pyx_INCREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_statuses, __pyx_t_2); 
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (__pyx_t_3) {

        /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":45
 *         if nr > ns :
 *             if isinstance(statuses, list):
 *                 statuses += [Status.__new__(Status)             # <<<<<<<<<<<<<<
 *                              for i from ns <= i < nr]
 *                 ns = nr
 */
        __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_2));

        /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":46
 *             if isinstance(statuses, list):
 *                 statuses += [Status.__new__(Status)
 *                              for i from ns <= i < nr]             # <<<<<<<<<<<<<<
 *                 ns = nr
 *         for i from 0 <= i < ns:
 */
        __pyx_t_1 = __pyx_v_nr;
        for (__pyx_v_i = __pyx_v_ns; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {

          /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":45
 *         if nr > ns :
 *             if isinstance(statuses, list):
 *                 statuses += [Status.__new__(Status)             # <<<<<<<<<<<<<<
 *                              for i from ns <= i < nr]
 *                 ns = nr
 */
          __pyx_t_4 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Status)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_4);
          if (unlikely(PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_4))) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        }
        __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_statuses, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_v_statuses);
        __pyx_v_statuses = __pyx_t_4;
        __pyx_t_4 = 0;

        /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":47
 *                 statuses += [Status.__new__(Status)
 *                              for i from ns <= i < nr]
 *                 ns = nr             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < ns:
 *             (<Status?>statuses[i]).ob_mpi = sp[i]
 */
        __pyx_v_ns = __pyx_v_nr;
        goto __pyx_L8;
      }
      __pyx_L8:;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":48
 *                              for i from ns <= i < nr]
 *                 ns = nr
 *         for i from 0 <= i < ns:             # <<<<<<<<<<<<<<
 *             (<Status?>statuses[i]).ob_mpi = sp[i]
 *     return 0
 */
    __pyx_t_1 = __pyx_v_ns;
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {

      /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":49
 *                 ns = nr
 *         for i from 0 <= i < ns:
 *             (<Status?>statuses[i]).ob_mpi = sp[i]             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_statuses, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_4) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      if (!(likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6mpi4py_3MPI_Status)))) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      ((struct PyMPIStatusObject *)__pyx_t_4)->ob_mpi = (__pyx_v_sp[__pyx_v_i]);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":50
 *         for i from 0 <= i < ns:
 *             (<Status?>statuses[i]).ob_mpi = sp[i]
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.release_rs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_req);
  __Pyx_XDECREF(__pyx_v_statuses);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":62
 *     cdef dict  kargs
 * 
 *     def __cinit__(self, query_fn, free_fn, cancel_fn, args, kargs):             # <<<<<<<<<<<<<<
 *         self.query_fn  = query_fn
 *         self.free_fn   = free_fn
 */

static int __pyx_pf_6mpi4py_3MPI_7_p_greq___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_7_p_greq___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_query_fn = 0;
  PyObject *__pyx_v_free_fn = 0;
  PyObject *__pyx_v_cancel_fn = 0;
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__query_fn,&__pyx_n_s__free_fn,&__pyx_n_s__cancel_fn,&__pyx_n_s__args,&__pyx_n_s__kargs,0};
  __Pyx_RefNannySetupContext("__cinit__");
  {
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__query_fn);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__free_fn);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, 1); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__cancel_fn);
        if (likely(values[2])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, 2); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__args);
        if (likely(values[3])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, 3); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  4:
        values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__kargs);
        if (likely(values[4])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, 4); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_query_fn = values[0];
    __pyx_v_free_fn = values[1];
    __pyx_v_cancel_fn = values[2];
    __pyx_v_args = values[3];
    __pyx_v_kargs = values[4];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_greq.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":63
 * 
 *     def __cinit__(self, query_fn, free_fn, cancel_fn, args, kargs):
 *         self.query_fn  = query_fn             # <<<<<<<<<<<<<<
 *         self.free_fn   = free_fn
 *         self.cancel_fn = cancel_fn
 */
  __Pyx_INCREF(__pyx_v_query_fn);
  __Pyx_GIVEREF(__pyx_v_query_fn);
  __Pyx_GOTREF(((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self)->query_fn);
  __Pyx_DECREF(((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self)->query_fn);
  ((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self)->query_fn = __pyx_v_query_fn;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":64
 *     def __cinit__(self, query_fn, free_fn, cancel_fn, args, kargs):
 *         self.query_fn  = query_fn
 *         self.free_fn   = free_fn             # <<<<<<<<<<<<<<
 *         self.cancel_fn = cancel_fn
 *         self.args  = tuple(args) if args  is not None else ()
 */
  __Pyx_INCREF(__pyx_v_free_fn);
  __Pyx_GIVEREF(__pyx_v_free_fn);
  __Pyx_GOTREF(((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self)->free_fn);
  __Pyx_DECREF(((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self)->free_fn);
  ((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self)->free_fn = __pyx_v_free_fn;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":65
 *         self.query_fn  = query_fn
 *         self.free_fn   = free_fn
 *         self.cancel_fn = cancel_fn             # <<<<<<<<<<<<<<
 *         self.args  = tuple(args) if args  is not None else ()
 *         self.kargs = dict(kargs) if kargs is not None else {}
 */
  __Pyx_INCREF(__pyx_v_cancel_fn);
  __Pyx_GIVEREF(__pyx_v_cancel_fn);
  __Pyx_GOTREF(((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self)->cancel_fn);
  __Pyx_DECREF(((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self)->cancel_fn);
  ((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self)->cancel_fn = __pyx_v_cancel_fn;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":66
 *         self.free_fn   = free_fn
 *         self.cancel_fn = cancel_fn
 *         self.args  = tuple(args) if args  is not None else ()             # <<<<<<<<<<<<<<
 *         self.kargs = dict(kargs) if kargs is not None else {}
 * 
 */
  __pyx_t_2 = (__pyx_v_args != Py_None);
  if (__pyx_t_2) {
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __Pyx_INCREF(__pyx_v_args);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_args);
    __Pyx_GIVEREF(__pyx_v_args);
    __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
  } else {
    __Pyx_INCREF(((PyObject *)__pyx_empty_tuple));
    __pyx_t_1 = __pyx_empty_tuple;
  }
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __Pyx_GOTREF(((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self)->args);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self)->args));
  ((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self)->args = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":67
 *         self.cancel_fn = cancel_fn
 *         self.args  = tuple(args) if args  is not None else ()
 *         self.kargs = dict(kargs) if kargs is not None else {}             # <<<<<<<<<<<<<<
 * 
 *     cdef int query(self, MPI_Status *status) except -1:
 */
  __pyx_t_2 = (__pyx_v_kargs != Py_None);
  if (__pyx_t_2) {
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    __Pyx_INCREF(__pyx_v_kargs);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_kargs);
    __Pyx_GIVEREF(__pyx_v_kargs);
    __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyDict_Type))), ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __Pyx_GOTREF(((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self)->kargs);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self)->kargs));
  ((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self)->kargs = __pyx_t_1;
  __pyx_t_1 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI._p_greq.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":69
 *         self.kargs = dict(kargs) if kargs is not None else {}
 * 
 *     cdef int query(self, MPI_Status *status) except -1:             # <<<<<<<<<<<<<<
 *         status.MPI_SOURCE = MPI_ANY_SOURCE
 *         status.MPI_TAG = MPI_ANY_TAG
 */

static int __pyx_f_6mpi4py_3MPI_7_p_greq_query(struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_self, MPI_Status *__pyx_v_status) {
  struct PyMPIStatusObject *__pyx_v_sts = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("query");

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":70
 * 
 *     cdef int query(self, MPI_Status *status) except -1:
 *         status.MPI_SOURCE = MPI_ANY_SOURCE             # <<<<<<<<<<<<<<
 *         status.MPI_TAG = MPI_ANY_TAG
 *         MPI_Status_set_elements(status, MPI_BYTE, 0)
 */
  __pyx_v_status->MPI_SOURCE = MPI_ANY_SOURCE;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":71
 *     cdef int query(self, MPI_Status *status) except -1:
 *         status.MPI_SOURCE = MPI_ANY_SOURCE
 *         status.MPI_TAG = MPI_ANY_TAG             # <<<<<<<<<<<<<<
 *         MPI_Status_set_elements(status, MPI_BYTE, 0)
 *         MPI_Status_set_cancelled(status, 0)
 */
  __pyx_v_status->MPI_TAG = MPI_ANY_TAG;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":72
 *         status.MPI_SOURCE = MPI_ANY_SOURCE
 *         status.MPI_TAG = MPI_ANY_TAG
 *         MPI_Status_set_elements(status, MPI_BYTE, 0)             # <<<<<<<<<<<<<<
 *         MPI_Status_set_cancelled(status, 0)
 *         cdef Status sts = <Status>Status.__new__(Status)
 */
  MPI_Status_set_elements(__pyx_v_status, MPI_BYTE, 0);

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":73
 *         status.MPI_TAG = MPI_ANY_TAG
 *         MPI_Status_set_elements(status, MPI_BYTE, 0)
 *         MPI_Status_set_cancelled(status, 0)             # <<<<<<<<<<<<<<
 *         cdef Status sts = <Status>Status.__new__(Status)
 *         if self.query_fn is not None:
 */
  MPI_Status_set_cancelled(__pyx_v_status, 0);

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":74
 *         MPI_Status_set_elements(status, MPI_BYTE, 0)
 *         MPI_Status_set_cancelled(status, 0)
 *         cdef Status sts = <Status>Status.__new__(Status)             # <<<<<<<<<<<<<<
 *         if self.query_fn is not None:
 *             sts.ob_mpi = status[0]
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Status)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIStatusObject *)__pyx_t_1)));
  __pyx_v_sts = ((struct PyMPIStatusObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":75
 *         MPI_Status_set_cancelled(status, 0)
 *         cdef Status sts = <Status>Status.__new__(Status)
 *         if self.query_fn is not None:             # <<<<<<<<<<<<<<
 *             sts.ob_mpi = status[0]
 *             self.query_fn(sts, *self.args, **self.kargs)
 */
  __pyx_t_2 = (__pyx_v_self->query_fn != Py_None);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":76
 *         cdef Status sts = <Status>Status.__new__(Status)
 *         if self.query_fn is not None:
 *             sts.ob_mpi = status[0]             # <<<<<<<<<<<<<<
 *             self.query_fn(sts, *self.args, **self.kargs)
 *             status[0] = sts.ob_mpi
 */
    __pyx_v_sts->ob_mpi = (__pyx_v_status[0]);

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":77
 *         if self.query_fn is not None:
 *             sts.ob_mpi = status[0]
 *             self.query_fn(sts, *self.args, **self.kargs)             # <<<<<<<<<<<<<<
 *             status[0] = sts.ob_mpi
 *             if self.cancel_fn is None:
 */
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_1));
    __Pyx_INCREF(((PyObject *)__pyx_v_sts));
    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_sts));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_sts));
    __pyx_t_3 = PySequence_Tuple(((PyObject *)__pyx_v_self->args)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_4 = PyNumber_Add(((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_v_self->query_fn, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_v_self->kargs)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":78
 *             sts.ob_mpi = status[0]
 *             self.query_fn(sts, *self.args, **self.kargs)
 *             status[0] = sts.ob_mpi             # <<<<<<<<<<<<<<
 *             if self.cancel_fn is None:
 *                 MPI_Status_set_cancelled(status, 0)
 */
    (__pyx_v_status[0]) = __pyx_v_sts->ob_mpi;

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":79
 *             self.query_fn(sts, *self.args, **self.kargs)
 *             status[0] = sts.ob_mpi
 *             if self.cancel_fn is None:             # <<<<<<<<<<<<<<
 *                 MPI_Status_set_cancelled(status, 0)
 *         return MPI_SUCCESS
 */
    __pyx_t_2 = (__pyx_v_self->cancel_fn == Py_None);
    if (__pyx_t_2) {

      /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":80
 *             status[0] = sts.ob_mpi
 *             if self.cancel_fn is None:
 *                 MPI_Status_set_cancelled(status, 0)             # <<<<<<<<<<<<<<
 *         return MPI_SUCCESS
 * 
 */
      MPI_Status_set_cancelled(__pyx_v_status, 0);
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":81
 *             if self.cancel_fn is None:
 *                 MPI_Status_set_cancelled(status, 0)
 *         return MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 *     cdef int free(self) except -1:
 */
  __pyx_r = MPI_SUCCESS;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI._p_greq.query", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_sts);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":83
 *         return MPI_SUCCESS
 * 
 *     cdef int free(self) except -1:             # <<<<<<<<<<<<<<
 *         if self.free_fn is not None:
 *             self.free_fn(*self.args, **self.kargs)
 */

static int __pyx_f_6mpi4py_3MPI_7_p_greq_free(struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("free");

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":84
 * 
 *     cdef int free(self) except -1:
 *         if self.free_fn is not None:             # <<<<<<<<<<<<<<
 *             self.free_fn(*self.args, **self.kargs)
 *         return MPI_SUCCESS
 */
  __pyx_t_1 = (__pyx_v_self->free_fn != Py_None);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":85
 *     cdef int free(self) except -1:
 *         if self.free_fn is not None:
 *             self.free_fn(*self.args, **self.kargs)             # <<<<<<<<<<<<<<
 *         return MPI_SUCCESS
 * 
 */
    __pyx_t_2 = PySequence_Tuple(((PyObject *)__pyx_v_self->args)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_v_self->free_fn, ((PyObject *)__pyx_t_2), ((PyObject *)__pyx_v_self->kargs)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":86
 *         if self.free_fn is not None:
 *             self.free_fn(*self.args, **self.kargs)
 *         return MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 *     cdef int cancel(self, bint completed) except -1:
 */
  __pyx_r = MPI_SUCCESS;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._p_greq.free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":88
 *         return MPI_SUCCESS
 * 
 *     cdef int cancel(self, bint completed) except -1:             # <<<<<<<<<<<<<<
 *         if self.cancel_fn is not None:
 *             self.cancel_fn(completed, *self.args, **self.kargs)
 */

static int __pyx_f_6mpi4py_3MPI_7_p_greq_cancel(struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_self, int __pyx_v_completed) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cancel");

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":89
 * 
 *     cdef int cancel(self, bint completed) except -1:
 *         if self.cancel_fn is not None:             # <<<<<<<<<<<<<<
 *             self.cancel_fn(completed, *self.args, **self.kargs)
 *         return MPI_SUCCESS
 */
  __pyx_t_1 = (__pyx_v_self->cancel_fn != Py_None);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":90
 *     cdef int cancel(self, bint completed) except -1:
 *         if self.cancel_fn is not None:
 *             self.cancel_fn(completed, *self.args, **self.kargs)             # <<<<<<<<<<<<<<
 *         return MPI_SUCCESS
 * 
 */
    __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_completed); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = PySequence_Tuple(((PyObject *)__pyx_v_self->args)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __pyx_t_4 = PyNumber_Add(((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    __pyx_t_2 = PyEval_CallObjectWithKeywords(__pyx_v_self->cancel_fn, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_v_self->kargs)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":91
 *         if self.cancel_fn is not None:
 *             self.cancel_fn(completed, *self.args, **self.kargs)
 *         return MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 * # ---
 */
  __pyx_r = MPI_SUCCESS;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI._p_greq.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":95
 * # ---
 * 
 * cdef int greq_query(void *extra_state, MPI_Status *status) with gil:             # <<<<<<<<<<<<<<
 *     cdef _p_greq state = <_p_greq>extra_state
 *     cdef int ierr = MPI_SUCCESS
 */

static int __pyx_f_6mpi4py_3MPI_greq_query(void *__pyx_v_extra_state, MPI_Status *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_state = 0;
  int __pyx_v_ierr;
  PyObject *__pyx_v_exc = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("greq_query");

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":96
 * 
 * cdef int greq_query(void *extra_state, MPI_Status *status) with gil:
 *     cdef _p_greq state = <_p_greq>extra_state             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_extra_state)));
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_extra_state);

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":97
 * cdef int greq_query(void *extra_state, MPI_Status *status) with gil:
 *     cdef _p_greq state = <_p_greq>extra_state
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef object exc
 *     try:
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":99
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         ierr = state.query(status)
 *     except MPIException, exc:
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":100
 *     cdef object exc
 *     try:
 *         ierr = state.query(status)             # <<<<<<<<<<<<<<
 *     except MPIException, exc:
 *         print_traceback()
 */
      __pyx_t_4 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_greq *)__pyx_v_state->__pyx_vtab)->query(__pyx_v_state, __pyx_v_status); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __pyx_v_ierr = __pyx_t_4;
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":101
 *     try:
 *         ierr = state.query(status)
 *     except MPIException, exc:             # <<<<<<<<<<<<<<
 *         print_traceback()
 *         ierr = exc.Get_error_code()
 */
    __pyx_t_4 = PyErr_ExceptionMatches(__pyx_v_6mpi4py_3MPI_MPIException);
    if (__pyx_t_4) {
      __Pyx_AddTraceback("mpi4py.MPI.greq_query", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_exc = __pyx_t_6;

      /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":102
 *         ierr = state.query(status)
 *     except MPIException, exc:
 *         print_traceback()             # <<<<<<<<<<<<<<
 *         ierr = exc.Get_error_code()
 *     except:
 */
      __pyx_f_6mpi4py_3MPI_print_traceback();

      /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":103
 *     except MPIException, exc:
 *         print_traceback()
 *         ierr = exc.Get_error_code()             # <<<<<<<<<<<<<<
 *     except:
 *         print_traceback()
 */
      __pyx_t_8 = PyObject_GetAttr(__pyx_v_exc, __pyx_n_s__Get_error_code); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_v_ierr = __pyx_t_4;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":104
 *         print_traceback()
 *         ierr = exc.Get_error_code()
 *     except:             # <<<<<<<<<<<<<<
 *         print_traceback()
 *         ierr = MPI_ERR_OTHER
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.greq_query", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_5);

      /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":105
 *         ierr = exc.Get_error_code()
 *     except:
 *         print_traceback()             # <<<<<<<<<<<<<<
 *         ierr = MPI_ERR_OTHER
 *     return ierr
 */
      __pyx_f_6mpi4py_3MPI_print_traceback();

      /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":106
 *     except:
 *         print_traceback()
 *         ierr = MPI_ERR_OTHER             # <<<<<<<<<<<<<<
 *     return ierr
 * 
 */
      __pyx_v_ierr = MPI_ERR_OTHER;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L4_exception_handled;
    }
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L10_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":107
 *         print_traceback()
 *         ierr = MPI_ERR_OTHER
 *     return ierr             # <<<<<<<<<<<<<<
 * 
 * cdef int greq_free(void *extra_state) with gil:
 */
  __pyx_r = __pyx_v_ierr;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_WriteUnraisable("mpi4py.MPI.greq_query", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":109
 *     return ierr
 * 
 * cdef int greq_free(void *extra_state) with gil:             # <<<<<<<<<<<<<<
 *     cdef _p_greq state = <_p_greq>extra_state
 *     cdef int ierr = MPI_SUCCESS
 */

static int __pyx_f_6mpi4py_3MPI_greq_free(void *__pyx_v_extra_state) {
  struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_state = 0;
  int __pyx_v_ierr;
  PyObject *__pyx_v_exc = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("greq_free");

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":110
 * 
 * cdef int greq_free(void *extra_state) with gil:
 *     cdef _p_greq state = <_p_greq>extra_state             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_extra_state)));
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_extra_state);

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":111
 * cdef int greq_free(void *extra_state) with gil:
 *     cdef _p_greq state = <_p_greq>extra_state
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef object exc
 *     try:
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":113
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         ierr = state.free()
 *     except MPIException, exc:
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":114
 *     cdef object exc
 *     try:
 *         ierr = state.free()             # <<<<<<<<<<<<<<
 *     except MPIException, exc:
 *         print_traceback()
 */
      __pyx_t_4 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_greq *)__pyx_v_state->__pyx_vtab)->free(__pyx_v_state); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __pyx_v_ierr = __pyx_t_4;
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":115
 *     try:
 *         ierr = state.free()
 *     except MPIException, exc:             # <<<<<<<<<<<<<<
 *         print_traceback()
 *         ierr = exc.Get_error_code()
 */
    __pyx_t_4 = PyErr_ExceptionMatches(__pyx_v_6mpi4py_3MPI_MPIException);
    if (__pyx_t_4) {
      __Pyx_AddTraceback("mpi4py.MPI.greq_free", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_exc = __pyx_t_6;

      /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":116
 *         ierr = state.free()
 *     except MPIException, exc:
 *         print_traceback()             # <<<<<<<<<<<<<<
 *         ierr = exc.Get_error_code()
 *     except:
 */
      __pyx_f_6mpi4py_3MPI_print_traceback();

      /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":117
 *     except MPIException, exc:
 *         print_traceback()
 *         ierr = exc.Get_error_code()             # <<<<<<<<<<<<<<
 *     except:
 *         print_traceback()
 */
      __pyx_t_8 = PyObject_GetAttr(__pyx_v_exc, __pyx_n_s__Get_error_code); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_v_ierr = __pyx_t_4;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":118
 *         print_traceback()
 *         ierr = exc.Get_error_code()
 *     except:             # <<<<<<<<<<<<<<
 *         print_traceback()
 *         ierr = MPI_ERR_OTHER
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.greq_free", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_5);

      /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":119
 *         ierr = exc.Get_error_code()
 *     except:
 *         print_traceback()             # <<<<<<<<<<<<<<
 *         ierr = MPI_ERR_OTHER
 *     Py_DECREF(<object>extra_state)
 */
      __pyx_f_6mpi4py_3MPI_print_traceback();

      /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":120
 *     except:
 *         print_traceback()
 *         ierr = MPI_ERR_OTHER             # <<<<<<<<<<<<<<
 *     Py_DECREF(<object>extra_state)
 *     return ierr
 */
      __pyx_v_ierr = MPI_ERR_OTHER;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L4_exception_handled;
    }
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L10_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":121
 *         print_traceback()
 *         ierr = MPI_ERR_OTHER
 *     Py_DECREF(<object>extra_state)             # <<<<<<<<<<<<<<
 *     return ierr
 * 
 */
  Py_DECREF(((PyObject *)__pyx_v_extra_state));

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":122
 *         ierr = MPI_ERR_OTHER
 *     Py_DECREF(<object>extra_state)
 *     return ierr             # <<<<<<<<<<<<<<
 * 
 * cdef int greq_cancel(void *extra_state, int completed) with gil:
 */
  __pyx_r = __pyx_v_ierr;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_WriteUnraisable("mpi4py.MPI.greq_free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":124
 *     return ierr
 * 
 * cdef int greq_cancel(void *extra_state, int completed) with gil:             # <<<<<<<<<<<<<<
 *     cdef _p_greq state = <_p_greq>extra_state
 *     cdef int ierr = MPI_SUCCESS
 */

static int __pyx_f_6mpi4py_3MPI_greq_cancel(void *__pyx_v_extra_state, int __pyx_v_completed) {
  struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_state = 0;
  int __pyx_v_ierr;
  PyObject *__pyx_v_exc = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("greq_cancel");

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":125
 * 
 * cdef int greq_cancel(void *extra_state, int completed) with gil:
 *     cdef _p_greq state = <_p_greq>extra_state             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_extra_state)));
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_extra_state);

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":126
 * cdef int greq_cancel(void *extra_state, int completed) with gil:
 *     cdef _p_greq state = <_p_greq>extra_state
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef object exc
 *     try:
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":128
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         ierr = state.cancel(completed)
 *     except MPIException, exc:
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":129
 *     cdef object exc
 *     try:
 *         ierr = state.cancel(completed)             # <<<<<<<<<<<<<<
 *     except MPIException, exc:
 *         print_traceback()
 */
      __pyx_t_4 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_greq *)__pyx_v_state->__pyx_vtab)->cancel(__pyx_v_state, __pyx_v_completed); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __pyx_v_ierr = __pyx_t_4;
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":130
 *     try:
 *         ierr = state.cancel(completed)
 *     except MPIException, exc:             # <<<<<<<<<<<<<<
 *         print_traceback()
 *         ierr = exc.Get_error_code()
 */
    __pyx_t_4 = PyErr_ExceptionMatches(__pyx_v_6mpi4py_3MPI_MPIException);
    if (__pyx_t_4) {
      __Pyx_AddTraceback("mpi4py.MPI.greq_cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_exc = __pyx_t_6;

      /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":131
 *         ierr = state.cancel(completed)
 *     except MPIException, exc:
 *         print_traceback()             # <<<<<<<<<<<<<<
 *         ierr = exc.Get_error_code()
 *     except:
 */
      __pyx_f_6mpi4py_3MPI_print_traceback();

      /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":132
 *     except MPIException, exc:
 *         print_traceback()
 *         ierr = exc.Get_error_code()             # <<<<<<<<<<<<<<
 *     except:
 *         print_traceback()
 */
      __pyx_t_8 = PyObject_GetAttr(__pyx_v_exc, __pyx_n_s__Get_error_code); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_v_ierr = __pyx_t_4;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":133
 *         print_traceback()
 *         ierr = exc.Get_error_code()
 *     except:             # <<<<<<<<<<<<<<
 *         print_traceback()
 *         ierr = MPI_ERR_OTHER
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.greq_cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_5);

      /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":134
 *         ierr = exc.Get_error_code()
 *     except:
 *         print_traceback()             # <<<<<<<<<<<<<<
 *         ierr = MPI_ERR_OTHER
 *     return ierr
 */
      __pyx_f_6mpi4py_3MPI_print_traceback();

      /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":135
 *     except:
 *         print_traceback()
 *         ierr = MPI_ERR_OTHER             # <<<<<<<<<<<<<<
 *     return ierr
 * 
 */
      __pyx_v_ierr = MPI_ERR_OTHER;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L4_exception_handled;
    }
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L10_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":136
 *         print_traceback()
 *         ierr = MPI_ERR_OTHER
 *     return ierr             # <<<<<<<<<<<<<<
 * 
 * # ---
 */
  __pyx_r = __pyx_v_ierr;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_WriteUnraisable("mpi4py.MPI.greq_cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":141
 * 
 * @cython.callspec("PyMPIAPI")
 * cdef int greq_query_fn(void *extra_state, MPI_Status *status) nogil:             # <<<<<<<<<<<<<<
 *     if extra_state == NULL:
 *         return MPI_ERR_INTERN
 */

static int PyMPIAPI __pyx_f_6mpi4py_3MPI_greq_query_fn(void *__pyx_v_extra_state, MPI_Status *__pyx_v_status) {
  int __pyx_r;
  int __pyx_t_1;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":142
 * @cython.callspec("PyMPIAPI")
 * cdef int greq_query_fn(void *extra_state, MPI_Status *status) nogil:
 *     if extra_state == NULL:             # <<<<<<<<<<<<<<
 *         return MPI_ERR_INTERN
 *     if status == NULL:
 */
  __pyx_t_1 = (__pyx_v_extra_state == NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":143
 * cdef int greq_query_fn(void *extra_state, MPI_Status *status) nogil:
 *     if extra_state == NULL:
 *         return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if status == NULL:
 *         return MPI_ERR_INTERN
 */
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":144
 *     if extra_state == NULL:
 *         return MPI_ERR_INTERN
 *     if status == NULL:             # <<<<<<<<<<<<<<
 *         return MPI_ERR_INTERN
 *     if not Py_IsInitialized():
 */
  __pyx_t_1 = (__pyx_v_status == NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":145
 *         return MPI_ERR_INTERN
 *     if status == NULL:
 *         return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if not Py_IsInitialized():
 *         return MPI_ERR_INTERN
 */
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":146
 *     if status == NULL:
 *         return MPI_ERR_INTERN
 *     if not Py_IsInitialized():             # <<<<<<<<<<<<<<
 *         return MPI_ERR_INTERN
 *     return greq_query(extra_state, status)
 */
  __pyx_t_1 = (!Py_IsInitialized());
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":147
 *         return MPI_ERR_INTERN
 *     if not Py_IsInitialized():
 *         return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     return greq_query(extra_state, status)
 * 
 */
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":148
 *     if not Py_IsInitialized():
 *         return MPI_ERR_INTERN
 *     return greq_query(extra_state, status)             # <<<<<<<<<<<<<<
 * 
 * @cython.callspec("PyMPIAPI")
 */
  __pyx_r = __pyx_f_6mpi4py_3MPI_greq_query(__pyx_v_extra_state, __pyx_v_status);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":151
 * 
 * @cython.callspec("PyMPIAPI")
 * cdef int greq_free_fn(void *extra_state) nogil:             # <<<<<<<<<<<<<<
 *     if extra_state == NULL:
 *         return MPI_ERR_INTERN
 */

static int PyMPIAPI __pyx_f_6mpi4py_3MPI_greq_free_fn(void *__pyx_v_extra_state) {
  int __pyx_r;
  int __pyx_t_1;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":152
 * @cython.callspec("PyMPIAPI")
 * cdef int greq_free_fn(void *extra_state) nogil:
 *     if extra_state == NULL:             # <<<<<<<<<<<<<<
 *         return MPI_ERR_INTERN
 *     if not Py_IsInitialized():
 */
  __pyx_t_1 = (__pyx_v_extra_state == NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":153
 * cdef int greq_free_fn(void *extra_state) nogil:
 *     if extra_state == NULL:
 *         return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if not Py_IsInitialized():
 *         return MPI_ERR_INTERN
 */
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":154
 *     if extra_state == NULL:
 *         return MPI_ERR_INTERN
 *     if not Py_IsInitialized():             # <<<<<<<<<<<<<<
 *         return MPI_ERR_INTERN
 *     return greq_free(extra_state)
 */
  __pyx_t_1 = (!Py_IsInitialized());
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":155
 *         return MPI_ERR_INTERN
 *     if not Py_IsInitialized():
 *         return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     return greq_free(extra_state)
 * 
 */
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":156
 *     if not Py_IsInitialized():
 *         return MPI_ERR_INTERN
 *     return greq_free(extra_state)             # <<<<<<<<<<<<<<
 * 
 * @cython.callspec("PyMPIAPI")
 */
  __pyx_r = __pyx_f_6mpi4py_3MPI_greq_free(__pyx_v_extra_state);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":159
 * 
 * @cython.callspec("PyMPIAPI")
 * cdef int greq_cancel_fn(void *extra_state, int completed) nogil:             # <<<<<<<<<<<<<<
 *     if extra_state == NULL:
 *         return MPI_ERR_INTERN
 */

static int PyMPIAPI __pyx_f_6mpi4py_3MPI_greq_cancel_fn(void *__pyx_v_extra_state, int __pyx_v_completed) {
  int __pyx_r;
  int __pyx_t_1;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":160
 * @cython.callspec("PyMPIAPI")
 * cdef int greq_cancel_fn(void *extra_state, int completed) nogil:
 *     if extra_state == NULL:             # <<<<<<<<<<<<<<
 *         return MPI_ERR_INTERN
 *     if not Py_IsInitialized():
 */
  __pyx_t_1 = (__pyx_v_extra_state == NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":161
 * cdef int greq_cancel_fn(void *extra_state, int completed) nogil:
 *     if extra_state == NULL:
 *         return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if not Py_IsInitialized():
 *         return MPI_ERR_INTERN
 */
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":162
 *     if extra_state == NULL:
 *         return MPI_ERR_INTERN
 *     if not Py_IsInitialized():             # <<<<<<<<<<<<<<
 *         return MPI_ERR_INTERN
 *     return greq_cancel(extra_state, completed)
 */
  __pyx_t_1 = (!Py_IsInitialized());
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":163
 *         return MPI_ERR_INTERN
 *     if not Py_IsInitialized():
 *         return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     return greq_cancel(extra_state, completed)
 * 
 */
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":164
 *     if not Py_IsInitialized():
 *         return MPI_ERR_INTERN
 *     return greq_cancel(extra_state, completed)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = __pyx_f_6mpi4py_3MPI_greq_cancel(__pyx_v_extra_state, __pyx_v_completed);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":68
 * include "reqimpl.pxi"
 * 
 * cdef inline Request new_Request(MPI_Request ob):             # <<<<<<<<<<<<<<
 *     cdef Request request = <Request>Request.__new__(Request)
 *     request.ob_mpi = ob
 */

static CYTHON_INLINE struct PyMPIRequestObject *__pyx_f_6mpi4py_3MPI_new_Request(MPI_Request __pyx_v_ob) {
  struct PyMPIRequestObject *__pyx_v_request = 0;
  struct PyMPIRequestObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("new_Request");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":69
 * 
 * cdef inline Request new_Request(MPI_Request ob):
 *     cdef Request request = <Request>Request.__new__(Request)             # <<<<<<<<<<<<<<
 *     request.ob_mpi = ob
 *     return request
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIRequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":70
 * cdef inline Request new_Request(MPI_Request ob):
 *     cdef Request request = <Request>Request.__new__(Request)
 *     request.ob_mpi = ob             # <<<<<<<<<<<<<<
 *     return request
 * 
 */
  __pyx_v_request->ob_mpi = __pyx_v_ob;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":71
 *     cdef Request request = <Request>Request.__new__(Request)
 *     request.ob_mpi = ob
 *     return request             # <<<<<<<<<<<<<<
 * 
 * cdef inline int del_Request(MPI_Request* ob):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = __pyx_v_request;
  goto __pyx_L0;

  __pyx_r = ((struct PyMPIRequestObject *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.new_Request", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":73
 *     return request
 * 
 * cdef inline int del_Request(MPI_Request* ob):             # <<<<<<<<<<<<<<
 *     #
 *     if ob    == NULL             : return 0
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_del_Request(MPI_Request *__pyx_v_ob) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("del_Request");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":75
 * cdef inline int del_Request(MPI_Request* ob):
 *     #
 *     if ob    == NULL             : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_REQUEST_NULL : return 0
 *     if not mpi_active()          : return 0
 */
  __pyx_t_1 = (__pyx_v_ob == NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":76
 *     #
 *     if ob    == NULL             : return 0
 *     if ob[0] == MPI_REQUEST_NULL : return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active()          : return 0
 *     #
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_REQUEST_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":77
 *     if ob    == NULL             : return 0
 *     if ob[0] == MPI_REQUEST_NULL : return 0
 *     if not mpi_active()          : return 0             # <<<<<<<<<<<<<<
 *     #
 *     return MPI_Request_free(ob)
 */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":79
 *     if not mpi_active()          : return 0
 *     #
 *     return MPI_Request_free(ob)             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
  __pyx_r = MPI_Request_free(__pyx_v_ob);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":3
 * # -----------------------------------------------------------------------------
 * 
 * cdef object _op_MAX(object x, object y):             # <<<<<<<<<<<<<<
 *     """maximum"""
 *     return max(x, y)
 */

static PyObject *__pyx_f_6mpi4py_3MPI__op_MAX(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_op_MAX");

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":5
 * cdef object _op_MAX(object x, object y):
 *     """maximum"""
 *     return max(x, y)             # <<<<<<<<<<<<<<
 * 
 * cdef object _op_MIN(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_y);
  __pyx_t_1 = __pyx_v_y;
  __Pyx_INCREF(__pyx_v_x);
  __pyx_t_2 = __pyx_v_x;
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_5) {
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_3 = __pyx_t_1;
  } else {
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = __pyx_t_2;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI._op_MAX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":7
 *     return max(x, y)
 * 
 * cdef object _op_MIN(object x, object y):             # <<<<<<<<<<<<<<
 *     """minimum"""
 *     return min(x, y)
 */

static PyObject *__pyx_f_6mpi4py_3MPI__op_MIN(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_op_MIN");

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":9
 * cdef object _op_MIN(object x, object y):
 *     """minimum"""
 *     return min(x, y)             # <<<<<<<<<<<<<<
 * 
 * cdef object _op_SUM(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_y);
  __pyx_t_1 = __pyx_v_y;
  __Pyx_INCREF(__pyx_v_x);
  __pyx_t_2 = __pyx_v_x;
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_LT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_5) {
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_3 = __pyx_t_1;
  } else {
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = __pyx_t_2;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI._op_MIN", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":11
 *     return min(x, y)
 * 
 * cdef object _op_SUM(object x, object y):             # <<<<<<<<<<<<<<
 *     """sum"""
 *     return x + y
 */

static PyObject *__pyx_f_6mpi4py_3MPI__op_SUM(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_op_SUM");

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":13
 * cdef object _op_SUM(object x, object y):
 *     """sum"""
 *     return x + y             # <<<<<<<<<<<<<<
 * 
 * cdef object _op_PROD(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyNumber_Add(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._op_SUM", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":15
 *     return x + y
 * 
 * cdef object _op_PROD(object x, object y):             # <<<<<<<<<<<<<<
 *     """product"""
 *     return x * y
 */

static PyObject *__pyx_f_6mpi4py_3MPI__op_PROD(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_op_PROD");

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":17
 * cdef object _op_PROD(object x, object y):
 *     """product"""
 *     return x * y             # <<<<<<<<<<<<<<
 * 
 * cdef object _op_BAND(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyNumber_Multiply(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._op_PROD", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":19
 *     return x * y
 * 
 * cdef object _op_BAND(object x, object y):             # <<<<<<<<<<<<<<
 *     """bit-wise and"""
 *     return x & y
 */

static PyObject *__pyx_f_6mpi4py_3MPI__op_BAND(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_op_BAND");

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":21
 * cdef object _op_BAND(object x, object y):
 *     """bit-wise and"""
 *     return x & y             # <<<<<<<<<<<<<<
 * 
 * cdef object _op_BOR(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyNumber_And(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._op_BAND", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":23
 *     return x & y
 * 
 * cdef object _op_BOR(object x, object y):             # <<<<<<<<<<<<<<
 *     """bit-wise or"""
 *     return x | y
 */

static PyObject *__pyx_f_6mpi4py_3MPI__op_BOR(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_op_BOR");

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":25
 * cdef object _op_BOR(object x, object y):
 *     """bit-wise or"""
 *     return x | y             # <<<<<<<<<<<<<<
 * 
 * cdef object _op_BXOR(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyNumber_Or(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._op_BOR", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":27
 *     return x | y
 * 
 * cdef object _op_BXOR(object x, object y):             # <<<<<<<<<<<<<<
 *     """bit-wise xor"""
 *     return x ^ y
 */

static PyObject *__pyx_f_6mpi4py_3MPI__op_BXOR(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_op_BXOR");

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":29
 * cdef object _op_BXOR(object x, object y):
 *     """bit-wise xor"""
 *     return x ^ y             # <<<<<<<<<<<<<<
 * 
 * cdef object _op_LAND(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyNumber_Xor(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._op_BXOR", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":31
 *     return x ^ y
 * 
 * cdef object _op_LAND(object x, object y):             # <<<<<<<<<<<<<<
 *     """logical and"""
 *     return bool(x) & bool(y)
 */

static PyObject *__pyx_f_6mpi4py_3MPI__op_LAND(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_op_LAND");

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":33
 * cdef object _op_LAND(object x, object y):
 *     """logical and"""
 *     return bool(x) & bool(y)             # <<<<<<<<<<<<<<
 * 
 * cdef object _op_LOR(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_x); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_y); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyNumber_And(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI._op_LAND", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":35
 *     return bool(x) & bool(y)
 * 
 * cdef object _op_LOR(object x, object y):             # <<<<<<<<<<<<<<
 *     """logical or"""
 *     return bool(x) | bool(y)
 */

static PyObject *__pyx_f_6mpi4py_3MPI__op_LOR(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_op_LOR");

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":37
 * cdef object _op_LOR(object x, object y):
 *     """logical or"""
 *     return bool(x) | bool(y)             # <<<<<<<<<<<<<<
 * 
 * cdef object _op_LXOR(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_x); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_y); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyNumber_Or(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI._op_LOR", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":39
 *     return bool(x) | bool(y)
 * 
 * cdef object _op_LXOR(object x, object y):             # <<<<<<<<<<<<<<
 *     """logical xor"""
 *     return bool(x) ^ bool(y)
 */

static PyObject *__pyx_f_6mpi4py_3MPI__op_LXOR(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_op_LXOR");

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":41
 * cdef object _op_LXOR(object x, object y):
 *     """logical xor"""
 *     return bool(x) ^ bool(y)             # <<<<<<<<<<<<<<
 * 
 * cdef object _op_MAXLOC(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_x); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_y); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyNumber_Xor(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI._op_LXOR", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":43
 *     return bool(x) ^ bool(y)
 * 
 * cdef object _op_MAXLOC(object x, object y):             # <<<<<<<<<<<<<<
 *     """maximum and location"""
 *     cdef object i, j, u, v, w, k
 */

static PyObject *__pyx_f_6mpi4py_3MPI__op_MAXLOC(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_v_i = 0;
  PyObject *__pyx_v_j = 0;
  PyObject *__pyx_v_u = 0;
  PyObject *__pyx_v_v = 0;
  PyObject *__pyx_v_w = 0;
  PyObject *__pyx_v_k = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_op_MAXLOC");

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":46
 *     """maximum and location"""
 *     cdef object i, j, u, v, w, k
 *     u, i = x             # <<<<<<<<<<<<<<
 *     v, j = y
 *     w = max(u, v)
 */
  if ((likely(PyTuple_CheckExact(__pyx_v_x))) || (PyList_CheckExact(__pyx_v_x))) {
    PyObject* sequence = __pyx_v_x;
    if (likely(PyTuple_CheckExact(sequence))) {
      if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
        if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[12]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
        if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[12]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_2 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_2);
  } else {
    Py_ssize_t index = -1;
    __pyx_t_3 = PyObject_GetIter(__pyx_v_x); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = Py_TYPE(__pyx_t_3)->tp_iternext;
    index = 0; __pyx_t_1 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_1);
    index = 1; __pyx_t_2 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
    if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
    {__pyx_filename = __pyx_f[12]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_u = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_v_i = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":47
 *     cdef object i, j, u, v, w, k
 *     u, i = x
 *     v, j = y             # <<<<<<<<<<<<<<
 *     w = max(u, v)
 *     k = None
 */
  if ((likely(PyTuple_CheckExact(__pyx_v_y))) || (PyList_CheckExact(__pyx_v_y))) {
    PyObject* sequence = __pyx_v_y;
    if (likely(PyTuple_CheckExact(sequence))) {
      if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
        if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[12]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
        if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[12]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_1);
  } else {
    Py_ssize_t index = -1;
    __pyx_t_3 = PyObject_GetIter(__pyx_v_y); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = Py_TYPE(__pyx_t_3)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L5_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_1 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L5_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_1);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L6_unpacking_done;
    __pyx_L5_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
    if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
    {__pyx_filename = __pyx_f[12]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_L6_unpacking_done:;
  }
  __pyx_v_v = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_j = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":48
 *     u, i = x
 *     v, j = y
 *     w = max(u, v)             # <<<<<<<<<<<<<<
 *     k = None
 *     if u == v:
 */
  __Pyx_INCREF(__pyx_v_v);
  __pyx_t_1 = __pyx_v_v;
  __Pyx_INCREF(__pyx_v_u);
  __pyx_t_2 = __pyx_v_u;
  __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_6) {
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_3 = __pyx_t_1;
  } else {
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = __pyx_t_2;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_w = __pyx_t_3;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":49
 *     v, j = y
 *     w = max(u, v)
 *     k = None             # <<<<<<<<<<<<<<
 *     if u == v:
 *         k = min(i, j)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_k = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":50
 *     w = max(u, v)
 *     k = None
 *     if u == v:             # <<<<<<<<<<<<<<
 *         k = min(i, j)
 *     elif u <  v:
 */
  __pyx_t_3 = PyObject_RichCompare(__pyx_v_u, __pyx_v_v, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_6) {

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":51
 *     k = None
 *     if u == v:
 *         k = min(i, j)             # <<<<<<<<<<<<<<
 *     elif u <  v:
 *         k = j
 */
    __Pyx_INCREF(__pyx_v_j);
    __pyx_t_3 = __pyx_v_j;
    __Pyx_INCREF(__pyx_v_i);
    __pyx_t_1 = __pyx_v_i;
    __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_1, Py_LT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_6) {
      __Pyx_INCREF(__pyx_t_3);
      __pyx_t_2 = __pyx_t_3;
    } else {
      __Pyx_INCREF(__pyx_t_1);
      __pyx_t_2 = __pyx_t_1;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_k);
    __pyx_v_k = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L7;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":52
 *     if u == v:
 *         k = min(i, j)
 *     elif u <  v:             # <<<<<<<<<<<<<<
 *         k = j
 *     else:
 */
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_u, __pyx_v_v, Py_LT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_6) {

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":53
 *         k = min(i, j)
 *     elif u <  v:
 *         k = j             # <<<<<<<<<<<<<<
 *     else:
 *         k = i
 */
    __Pyx_INCREF(__pyx_v_j);
    __Pyx_DECREF(__pyx_v_k);
    __pyx_v_k = __pyx_v_j;
    goto __pyx_L7;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":55
 *         k = j
 *     else:
 *         k = i             # <<<<<<<<<<<<<<
 *     return (w, k)
 * 
 */
    __Pyx_INCREF(__pyx_v_i);
    __Pyx_DECREF(__pyx_v_k);
    __pyx_v_k = __pyx_v_i;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":56
 *     else:
 *         k = i
 *     return (w, k)             # <<<<<<<<<<<<<<
 * 
 * cdef object _op_MINLOC(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_w);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_w);
  __Pyx_GIVEREF(__pyx_v_w);
  __Pyx_INCREF(__pyx_v_k);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_k);
  __Pyx_GIVEREF(__pyx_v_k);
  __pyx_r = ((PyObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI._op_MAXLOC", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_j);
  __Pyx_XDECREF(__pyx_v_u);
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_XDECREF(__pyx_v_w);
  __Pyx_XDECREF(__pyx_v_k);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":58
 *     return (w, k)
 * 
 * cdef object _op_MINLOC(object x, object y):             # <<<<<<<<<<<<<<
 *     """minimum and location"""
 *     cdef object i, j, u, v, w, k
 */

static PyObject *__pyx_f_6mpi4py_3MPI__op_MINLOC(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_v_i = 0;
  PyObject *__pyx_v_j = 0;
  PyObject *__pyx_v_u = 0;
  PyObject *__pyx_v_v = 0;
  PyObject *__pyx_v_w = 0;
  PyObject *__pyx_v_k = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_op_MINLOC");

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":61
 *     """minimum and location"""
 *     cdef object i, j, u, v, w, k
 *     u, i = x             # <<<<<<<<<<<<<<
 *     v, j = y
 *     w = min(u, v)
 */
  if ((likely(PyTuple_CheckExact(__pyx_v_x))) || (PyList_CheckExact(__pyx_v_x))) {
    PyObject* sequence = __pyx_v_x;
    if (likely(PyTuple_CheckExact(sequence))) {
      if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
        if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[12]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
        if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[12]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_2 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_2);
  } else {
    Py_ssize_t index = -1;
    __pyx_t_3 = PyObject_GetIter(__pyx_v_x); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = Py_TYPE(__pyx_t_3)->tp_iternext;
    index = 0; __pyx_t_1 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_1);
    index = 1; __pyx_t_2 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
    if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
    {__pyx_filename = __pyx_f[12]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_u = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_v_i = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":62
 *     cdef object i, j, u, v, w, k
 *     u, i = x
 *     v, j = y             # <<<<<<<<<<<<<<
 *     w = min(u, v)
 *     k = None
 */
  if ((likely(PyTuple_CheckExact(__pyx_v_y))) || (PyList_CheckExact(__pyx_v_y))) {
    PyObject* sequence = __pyx_v_y;
    if (likely(PyTuple_CheckExact(sequence))) {
      if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
        if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[12]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
        if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[12]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_1);
  } else {
    Py_ssize_t index = -1;
    __pyx_t_3 = PyObject_GetIter(__pyx_v_y); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = Py_TYPE(__pyx_t_3)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L5_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_1 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L5_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_1);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L6_unpacking_done;
    __pyx_L5_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
    if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
    {__pyx_filename = __pyx_f[12]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_L6_unpacking_done:;
  }
  __pyx_v_v = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_j = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":63
 *     u, i = x
 *     v, j = y
 *     w = min(u, v)             # <<<<<<<<<<<<<<
 *     k = None
 *     if u == v:
 */
  __Pyx_INCREF(__pyx_v_v);
  __pyx_t_1 = __pyx_v_v;
  __Pyx_INCREF(__pyx_v_u);
  __pyx_t_2 = __pyx_v_u;
  __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_LT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_6) {
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_3 = __pyx_t_1;
  } else {
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = __pyx_t_2;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_w = __pyx_t_3;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":64
 *     v, j = y
 *     w = min(u, v)
 *     k = None             # <<<<<<<<<<<<<<
 *     if u == v:
 *         k = min(i, j)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_k = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":65
 *     w = min(u, v)
 *     k = None
 *     if u == v:             # <<<<<<<<<<<<<<
 *         k = min(i, j)
 *     elif u <  v:
 */
  __pyx_t_3 = PyObject_RichCompare(__pyx_v_u, __pyx_v_v, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_6) {

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":66
 *     k = None
 *     if u == v:
 *         k = min(i, j)             # <<<<<<<<<<<<<<
 *     elif u <  v:
 *         k = i
 */
    __Pyx_INCREF(__pyx_v_j);
    __pyx_t_3 = __pyx_v_j;
    __Pyx_INCREF(__pyx_v_i);
    __pyx_t_1 = __pyx_v_i;
    __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_1, Py_LT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_6) {
      __Pyx_INCREF(__pyx_t_3);
      __pyx_t_2 = __pyx_t_3;
    } else {
      __Pyx_INCREF(__pyx_t_1);
      __pyx_t_2 = __pyx_t_1;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_k);
    __pyx_v_k = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L7;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":67
 *     if u == v:
 *         k = min(i, j)
 *     elif u <  v:             # <<<<<<<<<<<<<<
 *         k = i
 *     else:
 */
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_u, __pyx_v_v, Py_LT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_6) {

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":68
 *         k = min(i, j)
 *     elif u <  v:
 *         k = i             # <<<<<<<<<<<<<<
 *     else:
 *         k = j
 */
    __Pyx_INCREF(__pyx_v_i);
    __Pyx_DECREF(__pyx_v_k);
    __pyx_v_k = __pyx_v_i;
    goto __pyx_L7;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":70
 *         k = i
 *     else:
 *         k = j             # <<<<<<<<<<<<<<
 *     return (w, k)
 * 
 */
    __Pyx_INCREF(__pyx_v_j);
    __Pyx_DECREF(__pyx_v_k);
    __pyx_v_k = __pyx_v_j;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":71
 *     else:
 *         k = j
 *     return (w, k)             # <<<<<<<<<<<<<<
 * 
 * cdef object _op_REPLACE(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_w);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_w);
  __Pyx_GIVEREF(__pyx_v_w);
  __Pyx_INCREF(__pyx_v_k);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_k);
  __Pyx_GIVEREF(__pyx_v_k);
  __pyx_r = ((PyObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI._op_MINLOC", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_j);
  __Pyx_XDECREF(__pyx_v_u);
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_XDECREF(__pyx_v_w);
  __Pyx_XDECREF(__pyx_v_k);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":73
 *     return (w, k)
 * 
 * cdef object _op_REPLACE(object x, object y):             # <<<<<<<<<<<<<<
 *     """replace,  (x, y) -> x"""
 *     return x
 */

static PyObject *__pyx_f_6mpi4py_3MPI__op_REPLACE(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_op_REPLACE");

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":75
 * cdef object _op_REPLACE(object x, object y):
 *     """replace,  (x, y) -> x"""
 *     return x             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_x);
  __pyx_r = __pyx_v_x;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":81
 * cdef object op_user_registry = [None]*(1+16)
 * 
 * cdef inline object op_user_py(int index, object x, object y, object dt):             # <<<<<<<<<<<<<<
 *     return op_user_registry[index](x, y, dt)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_op_user_py(int __pyx_v_index, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_dt) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_user_py");

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":82
 * 
 * cdef inline object op_user_py(int index, object x, object y, object dt):
 *     return op_user_registry[index](x, y, dt)             # <<<<<<<<<<<<<<
 * 
 * cdef inline void op_user_mpi(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_6mpi4py_3MPI_op_user_registry, __pyx_v_index, sizeof(int), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_x);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x);
  __Pyx_GIVEREF(__pyx_v_x);
  __Pyx_INCREF(__pyx_v_y);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_y);
  __Pyx_GIVEREF(__pyx_v_y);
  __Pyx_INCREF(__pyx_v_dt);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_dt);
  __Pyx_GIVEREF(__pyx_v_dt);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.op_user_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":84
 *     return op_user_registry[index](x, y, dt)
 * 
 * cdef inline void op_user_mpi(             # <<<<<<<<<<<<<<
 *     int index, void *a, void *b, MPI_Aint n, MPI_Datatype *t) with gil:
 *     # errors in user-defined reduction operations are unrecoverable
 */

static CYTHON_INLINE void __pyx_f_6mpi4py_3MPI_op_user_mpi(int __pyx_v_index, void *__pyx_v_a, void *__pyx_v_b, MPI_Aint __pyx_v_n, MPI_Datatype *__pyx_v_t) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("op_user_mpi");

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":87
 *     int index, void *a, void *b, MPI_Aint n, MPI_Datatype *t) with gil:
 *     # errors in user-defined reduction operations are unrecoverable
 *     try:             # <<<<<<<<<<<<<<
 *         op_user_py(index, tomemory(a, n), tomemory(b, n), new_Datatype(t[0]))
 *     except:
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":88
 *     # errors in user-defined reduction operations are unrecoverable
 *     try:
 *         op_user_py(index, tomemory(a, n), tomemory(b, n), new_Datatype(t[0]))             # <<<<<<<<<<<<<<
 *     except:
 *         # print the full exception traceback and abort.
 */
      __pyx_t_4 = __pyx_f_6mpi4py_3MPI_tomemory(__pyx_v_a, __pyx_v_n); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_f_6mpi4py_3MPI_tomemory(__pyx_v_b, __pyx_v_n); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype((__pyx_v_t[0]))); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __pyx_f_6mpi4py_3MPI_op_user_py(__pyx_v_index, __pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":89
 *     try:
 *         op_user_py(index, tomemory(a, n), tomemory(b, n), new_Datatype(t[0]))
 *     except:             # <<<<<<<<<<<<<<
 *         # print the full exception traceback and abort.
 *         PySys_WriteStderr(b"Fatal Python error: exception in "
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.op_user_mpi", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_5);

      /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":91
 *     except:
 *         # print the full exception traceback and abort.
 *         PySys_WriteStderr(b"Fatal Python error: exception in "             # <<<<<<<<<<<<<<
 *                           b"user-defined reduction operation\n", 0)
 *         print_traceback()
 */
      PySys_WriteStderr(__pyx_k_11, 0);

      /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":93
 *         PySys_WriteStderr(b"Fatal Python error: exception in "
 *                           b"user-defined reduction operation\n", 0)
 *         print_traceback()             # <<<<<<<<<<<<<<
 *         MPI_Abort(MPI_COMM_WORLD, 1)
 * 
 */
      __pyx_f_6mpi4py_3MPI_print_traceback();

      /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":94
 *                           b"user-defined reduction operation\n", 0)
 *         print_traceback()
 *         MPI_Abort(MPI_COMM_WORLD, 1)             # <<<<<<<<<<<<<<
 * 
 * cdef inline void op_user_call(
 */
      MPI_Abort(MPI_COMM_WORLD, 1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L4_exception_handled;
    }
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L10_try_end:;
  }

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("mpi4py.MPI.op_user_mpi", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":96
 *         MPI_Abort(MPI_COMM_WORLD, 1)
 * 
 * cdef inline void op_user_call(             # <<<<<<<<<<<<<<
 *     int index, void *a, void *b, int *plen, MPI_Datatype *t) nogil:
 *     # make it abort if Python has finalized
 */

static CYTHON_INLINE void __pyx_f_6mpi4py_3MPI_op_user_call(int __pyx_v_index, void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_plen, MPI_Datatype *__pyx_v_t) {
  MPI_Aint __pyx_v_lb;
  MPI_Aint __pyx_v_extent;
  MPI_Aint __pyx_v_n;
  int __pyx_t_1;

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":99
 *     int index, void *a, void *b, int *plen, MPI_Datatype *t) nogil:
 *     # make it abort if Python has finalized
 *     if not Py_IsInitialized(): MPI_Abort(MPI_COMM_WORLD, 1)             # <<<<<<<<<<<<<<
 *     # make it abort if module clenaup has been done
 *     if (<void*>op_user_registry) == NULL: MPI_Abort(MPI_COMM_WORLD, 1)
 */
  __pyx_t_1 = (!Py_IsInitialized());
  if (__pyx_t_1) {
    MPI_Abort(MPI_COMM_WORLD, 1);
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":101
 *     if not Py_IsInitialized(): MPI_Abort(MPI_COMM_WORLD, 1)
 *     # make it abort if module clenaup has been done
 *     if (<void*>op_user_registry) == NULL: MPI_Abort(MPI_COMM_WORLD, 1)             # <<<<<<<<<<<<<<
 *     # compute the byte-size of memory buffers
 *     cdef MPI_Aint lb=0, extent=0
 */
  __pyx_t_1 = (((void *)__pyx_v_6mpi4py_3MPI_op_user_registry) == NULL);
  if (__pyx_t_1) {
    MPI_Abort(MPI_COMM_WORLD, 1);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":103
 *     if (<void*>op_user_registry) == NULL: MPI_Abort(MPI_COMM_WORLD, 1)
 *     # compute the byte-size of memory buffers
 *     cdef MPI_Aint lb=0, extent=0             # <<<<<<<<<<<<<<
 *     MPI_Type_get_extent(t[0], &lb, &extent)
 *     cdef MPI_Aint n = <MPI_Aint>plen[0] * extent
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":104
 *     # compute the byte-size of memory buffers
 *     cdef MPI_Aint lb=0, extent=0
 *     MPI_Type_get_extent(t[0], &lb, &extent)             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint n = <MPI_Aint>plen[0] * extent
 *     # make the actual GIL-safe Python call
 */
  MPI_Type_get_extent((__pyx_v_t[0]), (&__pyx_v_lb), (&__pyx_v_extent));

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":105
 *     cdef MPI_Aint lb=0, extent=0
 *     MPI_Type_get_extent(t[0], &lb, &extent)
 *     cdef MPI_Aint n = <MPI_Aint>plen[0] * extent             # <<<<<<<<<<<<<<
 *     # make the actual GIL-safe Python call
 *     op_user_mpi(index, a, b, n, t)
 */
  __pyx_v_n = (((MPI_Aint)(__pyx_v_plen[0])) * __pyx_v_extent);

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":107
 *     cdef MPI_Aint n = <MPI_Aint>plen[0] * extent
 *     # make the actual GIL-safe Python call
 *     op_user_mpi(index, a, b, n, t)             # <<<<<<<<<<<<<<
 * 
 * @cython.callspec("PyMPIAPI")
 */
  __pyx_f_6mpi4py_3MPI_op_user_mpi(__pyx_v_index, __pyx_v_a, __pyx_v_b, __pyx_v_n, __pyx_v_t);

}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":110
 * 
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_01(void *a, void *b, int *n, MPI_Datatype *t) nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 1, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 */

static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_01(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":111
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_01(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 *     op_user_call( 1, a, b, n, t)             # <<<<<<<<<<<<<<
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_02(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(1, __pyx_v_a, __pyx_v_b, __pyx_v_n, __pyx_v_t);

}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":113
 *     op_user_call( 1, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_02(void *a, void *b, int *n, MPI_Datatype *t) nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 2, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 */

static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_02(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":114
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_02(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 *     op_user_call( 2, a, b, n, t)             # <<<<<<<<<<<<<<
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_03(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(2, __pyx_v_a, __pyx_v_b, __pyx_v_n, __pyx_v_t);

}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":116
 *     op_user_call( 2, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_03(void *a, void *b, int *n, MPI_Datatype *t) nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 3, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 */

static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_03(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":117
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_03(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 *     op_user_call( 3, a, b, n, t)             # <<<<<<<<<<<<<<
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_04(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(3, __pyx_v_a, __pyx_v_b, __pyx_v_n, __pyx_v_t);

}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":119
 *     op_user_call( 3, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_04(void *a, void *b, int *n, MPI_Datatype *t) nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 4, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 */

static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_04(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":120
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_04(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 *     op_user_call( 4, a, b, n, t)             # <<<<<<<<<<<<<<
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_05(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(4, __pyx_v_a, __pyx_v_b, __pyx_v_n, __pyx_v_t);

}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":122
 *     op_user_call( 4, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_05(void *a, void *b, int *n, MPI_Datatype *t) nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 5, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 */

static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_05(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":123
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_05(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 *     op_user_call( 5, a, b, n, t)             # <<<<<<<<<<<<<<
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_06(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(5, __pyx_v_a, __pyx_v_b, __pyx_v_n, __pyx_v_t);

}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":125
 *     op_user_call( 5, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_06(void *a, void *b, int *n, MPI_Datatype *t) nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 6, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 */

static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_06(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":126
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_06(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 *     op_user_call( 6, a, b, n, t)             # <<<<<<<<<<<<<<
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_07(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(6, __pyx_v_a, __pyx_v_b, __pyx_v_n, __pyx_v_t);

}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":128
 *     op_user_call( 6, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_07(void *a, void *b, int *n, MPI_Datatype *t) nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 7, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 */

static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_07(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":129
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_07(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 *     op_user_call( 7, a, b, n, t)             # <<<<<<<<<<<<<<
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_08(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(7, __pyx_v_a, __pyx_v_b, __pyx_v_n, __pyx_v_t);

}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":131
 *     op_user_call( 7, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_08(void *a, void *b, int *n, MPI_Datatype *t) nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 8, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 */

static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_08(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":132
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_08(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 *     op_user_call( 8, a, b, n, t)             # <<<<<<<<<<<<<<
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_09(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(8, __pyx_v_a, __pyx_v_b, __pyx_v_n, __pyx_v_t);

}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":134
 *     op_user_call( 8, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_09(void *a, void *b, int *n, MPI_Datatype *t) nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 9, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 */

static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_09(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":135
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_09(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 *     op_user_call( 9, a, b, n, t)             # <<<<<<<<<<<<<<
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_10(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(9, __pyx_v_a, __pyx_v_b, __pyx_v_n, __pyx_v_t);

}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":137
 *     op_user_call( 9, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_10(void *a, void *b, int *n, MPI_Datatype *t) nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(10, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 */

static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_10(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":138
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_10(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 *     op_user_call(10, a, b, n, t)             # <<<<<<<<<<<<<<
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_11(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(10, __pyx_v_a, __pyx_v_b, __pyx_v_n, __pyx_v_t);

}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":140
 *     op_user_call(10, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_11(void *a, void *b, int *n, MPI_Datatype *t) nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(11, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 */

static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_11(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":141
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_11(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 *     op_user_call(11, a, b, n, t)             # <<<<<<<<<<<<<<
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_12(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(11, __pyx_v_a, __pyx_v_b, __pyx_v_n, __pyx_v_t);

}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":143
 *     op_user_call(11, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_12(void *a, void *b, int *n, MPI_Datatype *t) nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(12, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 */

static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_12(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":144
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_12(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 *     op_user_call(12, a, b, n, t)             # <<<<<<<<<<<<<<
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_13(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(12, __pyx_v_a, __pyx_v_b, __pyx_v_n, __pyx_v_t);

}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":146
 *     op_user_call(12, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_13(void *a, void *b, int *n, MPI_Datatype *t) nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(13, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 */

static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_13(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":147
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_13(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 *     op_user_call(13, a, b, n, t)             # <<<<<<<<<<<<<<
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_14(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(13, __pyx_v_a, __pyx_v_b, __pyx_v_n, __pyx_v_t);

}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":149
 *     op_user_call(13, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_14(void *a, void *b, int *n, MPI_Datatype *t) nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(14, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 */

static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_14(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":150
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_14(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 *     op_user_call(14, a, b, n, t)             # <<<<<<<<<<<<<<
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_15(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(14, __pyx_v_a, __pyx_v_b, __pyx_v_n, __pyx_v_t);

}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":152
 *     op_user_call(14, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_15(void *a, void *b, int *n, MPI_Datatype *t) nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(15, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 */

static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_15(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":153
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_15(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 *     op_user_call(15, a, b, n, t)             # <<<<<<<<<<<<<<
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_16(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(15, __pyx_v_a, __pyx_v_b, __pyx_v_n, __pyx_v_t);

}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":155
 *     op_user_call(15, a, b, n, t)
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_16(void *a, void *b, int *n, MPI_Datatype *t) nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(15, a, b, n, t)
 * 
 */

static void PyMPIAPI __pyx_f_6mpi4py_3MPI_op_user_16(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":156
 * @cython.callspec("PyMPIAPI")
 * cdef void op_user_16(void *a, void *b, int *n, MPI_Datatype *t) nogil:
 *     op_user_call(15, a, b, n, t)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(15, __pyx_v_a, __pyx_v_b, __pyx_v_n, __pyx_v_t);

}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":159
 * 
 * 
 * cdef MPI_User_function *op_user_map(int index) nogil:             # <<<<<<<<<<<<<<
 *     if   index ==  1: return op_user_01
 *     elif index ==  2: return op_user_02
 */

static MPI_User_function *__pyx_f_6mpi4py_3MPI_op_user_map(int __pyx_v_index) {
  MPI_User_function *__pyx_r;

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":175
 *     elif index == 14: return op_user_14
 *     elif index == 15: return op_user_15
 *     elif index == 16: return op_user_16             # <<<<<<<<<<<<<<
 *     else:             return NULL
 * 
 */
  switch (__pyx_v_index) {

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":160
 * 
 * cdef MPI_User_function *op_user_map(int index) nogil:
 *     if   index ==  1: return op_user_01             # <<<<<<<<<<<<<<
 *     elif index ==  2: return op_user_02
 *     elif index ==  3: return op_user_03
 */
    case 1:
    __pyx_r = __pyx_f_6mpi4py_3MPI_op_user_01;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":161
 * cdef MPI_User_function *op_user_map(int index) nogil:
 *     if   index ==  1: return op_user_01
 *     elif index ==  2: return op_user_02             # <<<<<<<<<<<<<<
 *     elif index ==  3: return op_user_03
 *     elif index ==  4: return op_user_04
 */
    case 2:
    __pyx_r = __pyx_f_6mpi4py_3MPI_op_user_02;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":162
 *     if   index ==  1: return op_user_01
 *     elif index ==  2: return op_user_02
 *     elif index ==  3: return op_user_03             # <<<<<<<<<<<<<<
 *     elif index ==  4: return op_user_04
 *     elif index ==  5: return op_user_05
 */
    case 3:
    __pyx_r = __pyx_f_6mpi4py_3MPI_op_user_03;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":163
 *     elif index ==  2: return op_user_02
 *     elif index ==  3: return op_user_03
 *     elif index ==  4: return op_user_04             # <<<<<<<<<<<<<<
 *     elif index ==  5: return op_user_05
 *     elif index ==  6: return op_user_06
 */
    case 4:
    __pyx_r = __pyx_f_6mpi4py_3MPI_op_user_04;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":164
 *     elif index ==  3: return op_user_03
 *     elif index ==  4: return op_user_04
 *     elif index ==  5: return op_user_05             # <<<<<<<<<<<<<<
 *     elif index ==  6: return op_user_06
 *     elif index ==  7: return op_user_07
 */
    case 5:
    __pyx_r = __pyx_f_6mpi4py_3MPI_op_user_05;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":165
 *     elif index ==  4: return op_user_04
 *     elif index ==  5: return op_user_05
 *     elif index ==  6: return op_user_06             # <<<<<<<<<<<<<<
 *     elif index ==  7: return op_user_07
 *     elif index ==  8: return op_user_08
 */
    case 6:
    __pyx_r = __pyx_f_6mpi4py_3MPI_op_user_06;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":166
 *     elif index ==  5: return op_user_05
 *     elif index ==  6: return op_user_06
 *     elif index ==  7: return op_user_07             # <<<<<<<<<<<<<<
 *     elif index ==  8: return op_user_08
 *     elif index ==  9: return op_user_09
 */
    case 7:
    __pyx_r = __pyx_f_6mpi4py_3MPI_op_user_07;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":167
 *     elif index ==  6: return op_user_06
 *     elif index ==  7: return op_user_07
 *     elif index ==  8: return op_user_08             # <<<<<<<<<<<<<<
 *     elif index ==  9: return op_user_09
 *     elif index == 10: return op_user_10
 */
    case 8:
    __pyx_r = __pyx_f_6mpi4py_3MPI_op_user_08;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":168
 *     elif index ==  7: return op_user_07
 *     elif index ==  8: return op_user_08
 *     elif index ==  9: return op_user_09             # <<<<<<<<<<<<<<
 *     elif index == 10: return op_user_10
 *     elif index == 11: return op_user_11
 */
    case 9:
    __pyx_r = __pyx_f_6mpi4py_3MPI_op_user_09;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":169
 *     elif index ==  8: return op_user_08
 *     elif index ==  9: return op_user_09
 *     elif index == 10: return op_user_10             # <<<<<<<<<<<<<<
 *     elif index == 11: return op_user_11
 *     elif index == 12: return op_user_12
 */
    case 10:
    __pyx_r = __pyx_f_6mpi4py_3MPI_op_user_10;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":170
 *     elif index ==  9: return op_user_09
 *     elif index == 10: return op_user_10
 *     elif index == 11: return op_user_11             # <<<<<<<<<<<<<<
 *     elif index == 12: return op_user_12
 *     elif index == 13: return op_user_13
 */
    case 11:
    __pyx_r = __pyx_f_6mpi4py_3MPI_op_user_11;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":171
 *     elif index == 10: return op_user_10
 *     elif index == 11: return op_user_11
 *     elif index == 12: return op_user_12             # <<<<<<<<<<<<<<
 *     elif index == 13: return op_user_13
 *     elif index == 14: return op_user_14
 */
    case 12:
    __pyx_r = __pyx_f_6mpi4py_3MPI_op_user_12;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":172
 *     elif index == 11: return op_user_11
 *     elif index == 12: return op_user_12
 *     elif index == 13: return op_user_13             # <<<<<<<<<<<<<<
 *     elif index == 14: return op_user_14
 *     elif index == 15: return op_user_15
 */
    case 13:
    __pyx_r = __pyx_f_6mpi4py_3MPI_op_user_13;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":173
 *     elif index == 12: return op_user_12
 *     elif index == 13: return op_user_13
 *     elif index == 14: return op_user_14             # <<<<<<<<<<<<<<
 *     elif index == 15: return op_user_15
 *     elif index == 16: return op_user_16
 */
    case 14:
    __pyx_r = __pyx_f_6mpi4py_3MPI_op_user_14;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":174
 *     elif index == 13: return op_user_13
 *     elif index == 14: return op_user_14
 *     elif index == 15: return op_user_15             # <<<<<<<<<<<<<<
 *     elif index == 16: return op_user_16
 *     else:             return NULL
 */
    case 15:
    __pyx_r = __pyx_f_6mpi4py_3MPI_op_user_15;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":175
 *     elif index == 14: return op_user_14
 *     elif index == 15: return op_user_15
 *     elif index == 16: return op_user_16             # <<<<<<<<<<<<<<
 *     else:             return NULL
 * 
 */
    case 16:
    __pyx_r = __pyx_f_6mpi4py_3MPI_op_user_16;
    goto __pyx_L0;
    break;
    default:

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":176
 *     elif index == 15: return op_user_15
 *     elif index == 16: return op_user_16
 *     else:             return NULL             # <<<<<<<<<<<<<<
 * 
 * cdef int op_user_new(object function, MPI_User_function **cfunction) except -1:
 */
    __pyx_r = NULL;
    goto __pyx_L0;
    break;
  }

  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":178
 *     else:             return NULL
 * 
 * cdef int op_user_new(object function, MPI_User_function **cfunction) except -1:             # <<<<<<<<<<<<<<
 *     # find a free slot in the registry
 *     cdef int index = 0
 */

static int __pyx_f_6mpi4py_3MPI_op_user_new(PyObject *__pyx_v_function, MPI_User_function **__pyx_v_cfunction) {
  int __pyx_v_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_user_new");

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":180
 * cdef int op_user_new(object function, MPI_User_function **cfunction) except -1:
 *     # find a free slot in the registry
 *     cdef int index = 0             # <<<<<<<<<<<<<<
 *     try:
 *         index = op_user_registry.index(None, 1)
 */
  __pyx_v_index = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":181
 *     # find a free slot in the registry
 *     cdef int index = 0
 *     try:             # <<<<<<<<<<<<<<
 *         index = op_user_registry.index(None, 1)
 *     except ValueError:
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":182
 *     cdef int index = 0
 *     try:
 *         index = op_user_registry.index(None, 1)             # <<<<<<<<<<<<<<
 *     except ValueError:
 *         raise RuntimeError("cannot create too many "
 */
      __pyx_t_4 = PyObject_GetAttr(__pyx_v_6mpi4py_3MPI_op_user_registry, __pyx_n_s__index); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_12), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_t_5); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_v_index = __pyx_t_6;
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":183
 *     try:
 *         index = op_user_registry.index(None, 1)
 *     except ValueError:             # <<<<<<<<<<<<<<
 *         raise RuntimeError("cannot create too many "
 *                            "user-defined reduction operations")
 */
    __pyx_t_6 = PyErr_ExceptionMatches(__pyx_builtin_ValueError);
    if (__pyx_t_6) {
      __Pyx_AddTraceback("mpi4py.MPI.op_user_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_7);

      /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":184
 *         index = op_user_registry.index(None, 1)
 *     except ValueError:
 *         raise RuntimeError("cannot create too many "             # <<<<<<<<<<<<<<
 *                            "user-defined reduction operations")
 *     # the line below will fail
 */
      __pyx_t_8 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_14), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      {__pyx_filename = __pyx_f[12]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L10_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":188
 *     # the line below will fail
 *     # if the function is not callable
 *     function.__call__             # <<<<<<<<<<<<<<
 *     # register the Python function,
 *     # map it to the associated C function,
 */
  __pyx_t_7 = PyObject_GetAttr(__pyx_v_function, __pyx_n_s____call__); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":192
 *     # map it to the associated C function,
 *     # and return the slot index in registry
 *     op_user_registry[index] = function             # <<<<<<<<<<<<<<
 *     cfunction[0] = op_user_map(index)
 *     return index
 */
  if (__Pyx_SetItemInt(__pyx_v_6mpi4py_3MPI_op_user_registry, __pyx_v_index, __pyx_v_function, sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":193
 *     # and return the slot index in registry
 *     op_user_registry[index] = function
 *     cfunction[0] = op_user_map(index)             # <<<<<<<<<<<<<<
 *     return index
 * 
 */
  (__pyx_v_cfunction[0]) = __pyx_f_6mpi4py_3MPI_op_user_map(__pyx_v_index);

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":194
 *     op_user_registry[index] = function
 *     cfunction[0] = op_user_map(index)
 *     return index             # <<<<<<<<<<<<<<
 * 
 * cdef int op_user_del(int *index) except -1:
 */
  __pyx_r = __pyx_v_index;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mpi4py.MPI.op_user_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":196
 *     return index
 * 
 * cdef int op_user_del(int *index) except -1:             # <<<<<<<<<<<<<<
 *     # free slot in the registry
 *     cdef Py_ssize_t idx = index[0]
 */

static int __pyx_f_6mpi4py_3MPI_op_user_del(int *__pyx_v_index) {
  Py_ssize_t __pyx_v_idx;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_user_del");

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":198
 * cdef int op_user_del(int *index) except -1:
 *     # free slot in the registry
 *     cdef Py_ssize_t idx = index[0]             # <<<<<<<<<<<<<<
 *     index[0] = 0 # clear the value
 *     if idx > 0: op_user_registry[idx] = None
 */
  __pyx_v_idx = (__pyx_v_index[0]);

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":199
 *     # free slot in the registry
 *     cdef Py_ssize_t idx = index[0]
 *     index[0] = 0 # clear the value             # <<<<<<<<<<<<<<
 *     if idx > 0: op_user_registry[idx] = None
 *     return 0
 */
  (__pyx_v_index[0]) = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":200
 *     cdef Py_ssize_t idx = index[0]
 *     index[0] = 0 # clear the value
 *     if idx > 0: op_user_registry[idx] = None             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = (__pyx_v_idx > 0);
  if (__pyx_t_1) {
    if (__Pyx_SetItemInt(__pyx_v_6mpi4py_3MPI_op_user_registry, __pyx_v_idx, Py_None, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":201
 *     index[0] = 0 # clear the value
 *     if idx > 0: op_user_registry[idx] = None
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.op_user_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":86
 * include "opimpl.pxi"
 * 
 * cdef inline Op new_Op(MPI_Op ob):             # <<<<<<<<<<<<<<
 *     cdef Op op = <Op>Op.__new__(Op)
 *     op.ob_mpi = ob
 */

static CYTHON_INLINE struct PyMPIOpObject *__pyx_f_6mpi4py_3MPI_new_Op(MPI_Op __pyx_v_ob) {
  struct PyMPIOpObject *__pyx_v_op = 0;
  struct PyMPIOpObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("new_Op");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":87
 * 
 * cdef inline Op new_Op(MPI_Op ob):
 *     cdef Op op = <Op>Op.__new__(Op)             # <<<<<<<<<<<<<<
 *     op.ob_mpi = ob
 *     if   ob == MPI_OP_NULL : op.ob_func = NULL
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Op)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIOpObject *)__pyx_t_1)));
  __pyx_v_op = ((struct PyMPIOpObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":88
 * cdef inline Op new_Op(MPI_Op ob):
 *     cdef Op op = <Op>Op.__new__(Op)
 *     op.ob_mpi = ob             # <<<<<<<<<<<<<<
 *     if   ob == MPI_OP_NULL : op.ob_func = NULL
 *     elif ob == MPI_MAX     : op.ob_func = _op_MAX
 */
  __pyx_v_op->ob_mpi = __pyx_v_ob;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":89
 *     cdef Op op = <Op>Op.__new__(Op)
 *     op.ob_mpi = ob
 *     if   ob == MPI_OP_NULL : op.ob_func = NULL             # <<<<<<<<<<<<<<
 *     elif ob == MPI_MAX     : op.ob_func = _op_MAX
 *     elif ob == MPI_MIN     : op.ob_func = _op_MIN
 */
  __pyx_t_2 = (__pyx_v_ob == MPI_OP_NULL);
  if (__pyx_t_2) {
    __pyx_v_op->ob_func = NULL;
    goto __pyx_L3;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":90
 *     op.ob_mpi = ob
 *     if   ob == MPI_OP_NULL : op.ob_func = NULL
 *     elif ob == MPI_MAX     : op.ob_func = _op_MAX             # <<<<<<<<<<<<<<
 *     elif ob == MPI_MIN     : op.ob_func = _op_MIN
 *     elif ob == MPI_SUM     : op.ob_func = _op_SUM
 */
  __pyx_t_2 = (__pyx_v_ob == MPI_MAX);
  if (__pyx_t_2) {
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_MAX;
    goto __pyx_L3;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":91
 *     if   ob == MPI_OP_NULL : op.ob_func = NULL
 *     elif ob == MPI_MAX     : op.ob_func = _op_MAX
 *     elif ob == MPI_MIN     : op.ob_func = _op_MIN             # <<<<<<<<<<<<<<
 *     elif ob == MPI_SUM     : op.ob_func = _op_SUM
 *     elif ob == MPI_PROD    : op.ob_func = _op_PROD
 */
  __pyx_t_2 = (__pyx_v_ob == MPI_MIN);
  if (__pyx_t_2) {
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_MIN;
    goto __pyx_L3;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":92
 *     elif ob == MPI_MAX     : op.ob_func = _op_MAX
 *     elif ob == MPI_MIN     : op.ob_func = _op_MIN
 *     elif ob == MPI_SUM     : op.ob_func = _op_SUM             # <<<<<<<<<<<<<<
 *     elif ob == MPI_PROD    : op.ob_func = _op_PROD
 *     elif ob == MPI_LAND    : op.ob_func = _op_LAND
 */
  __pyx_t_2 = (__pyx_v_ob == MPI_SUM);
  if (__pyx_t_2) {
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_SUM;
    goto __pyx_L3;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":93
 *     elif ob == MPI_MIN     : op.ob_func = _op_MIN
 *     elif ob == MPI_SUM     : op.ob_func = _op_SUM
 *     elif ob == MPI_PROD    : op.ob_func = _op_PROD             # <<<<<<<<<<<<<<
 *     elif ob == MPI_LAND    : op.ob_func = _op_LAND
 *     elif ob == MPI_BAND    : op.ob_func = _op_BAND
 */
  __pyx_t_2 = (__pyx_v_ob == MPI_PROD);
  if (__pyx_t_2) {
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_PROD;
    goto __pyx_L3;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":94
 *     elif ob == MPI_SUM     : op.ob_func = _op_SUM
 *     elif ob == MPI_PROD    : op.ob_func = _op_PROD
 *     elif ob == MPI_LAND    : op.ob_func = _op_LAND             # <<<<<<<<<<<<<<
 *     elif ob == MPI_BAND    : op.ob_func = _op_BAND
 *     elif ob == MPI_LOR     : op.ob_func = _op_LOR
 */
  __pyx_t_2 = (__pyx_v_ob == MPI_LAND);
  if (__pyx_t_2) {
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_LAND;
    goto __pyx_L3;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":95
 *     elif ob == MPI_PROD    : op.ob_func = _op_PROD
 *     elif ob == MPI_LAND    : op.ob_func = _op_LAND
 *     elif ob == MPI_BAND    : op.ob_func = _op_BAND             # <<<<<<<<<<<<<<
 *     elif ob == MPI_LOR     : op.ob_func = _op_LOR
 *     elif ob == MPI_BOR     : op.ob_func = _op_BOR
 */
  __pyx_t_2 = (__pyx_v_ob == MPI_BAND);
  if (__pyx_t_2) {
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_BAND;
    goto __pyx_L3;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":96
 *     elif ob == MPI_LAND    : op.ob_func = _op_LAND
 *     elif ob == MPI_BAND    : op.ob_func = _op_BAND
 *     elif ob == MPI_LOR     : op.ob_func = _op_LOR             # <<<<<<<<<<<<<<
 *     elif ob == MPI_BOR     : op.ob_func = _op_BOR
 *     elif ob == MPI_LXOR    : op.ob_func = _op_LXOR
 */
  __pyx_t_2 = (__pyx_v_ob == MPI_LOR);
  if (__pyx_t_2) {
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_LOR;
    goto __pyx_L3;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":97
 *     elif ob == MPI_BAND    : op.ob_func = _op_BAND
 *     elif ob == MPI_LOR     : op.ob_func = _op_LOR
 *     elif ob == MPI_BOR     : op.ob_func = _op_BOR             # <<<<<<<<<<<<<<
 *     elif ob == MPI_LXOR    : op.ob_func = _op_LXOR
 *     elif ob == MPI_BXOR    : op.ob_func = _op_BXOR
 */
  __pyx_t_2 = (__pyx_v_ob == MPI_BOR);
  if (__pyx_t_2) {
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_BOR;
    goto __pyx_L3;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":98
 *     elif ob == MPI_LOR     : op.ob_func = _op_LOR
 *     elif ob == MPI_BOR     : op.ob_func = _op_BOR
 *     elif ob == MPI_LXOR    : op.ob_func = _op_LXOR             # <<<<<<<<<<<<<<
 *     elif ob == MPI_BXOR    : op.ob_func = _op_BXOR
 *     elif ob == MPI_MAXLOC  : op.ob_func = _op_MAXLOC
 */
  __pyx_t_2 = (__pyx_v_ob == MPI_LXOR);
  if (__pyx_t_2) {
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_LXOR;
    goto __pyx_L3;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":99
 *     elif ob == MPI_BOR     : op.ob_func = _op_BOR
 *     elif ob == MPI_LXOR    : op.ob_func = _op_LXOR
 *     elif ob == MPI_BXOR    : op.ob_func = _op_BXOR             # <<<<<<<<<<<<<<
 *     elif ob == MPI_MAXLOC  : op.ob_func = _op_MAXLOC
 *     elif ob == MPI_MINLOC  : op.ob_func = _op_MINLOC
 */
  __pyx_t_2 = (__pyx_v_ob == MPI_BXOR);
  if (__pyx_t_2) {
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_BXOR;
    goto __pyx_L3;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":100
 *     elif ob == MPI_LXOR    : op.ob_func = _op_LXOR
 *     elif ob == MPI_BXOR    : op.ob_func = _op_BXOR
 *     elif ob == MPI_MAXLOC  : op.ob_func = _op_MAXLOC             # <<<<<<<<<<<<<<
 *     elif ob == MPI_MINLOC  : op.ob_func = _op_MINLOC
 *     elif ob == MPI_REPLACE : op.ob_func = _op_REPLACE
 */
  __pyx_t_2 = (__pyx_v_ob == MPI_MAXLOC);
  if (__pyx_t_2) {
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_MAXLOC;
    goto __pyx_L3;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":101
 *     elif ob == MPI_BXOR    : op.ob_func = _op_BXOR
 *     elif ob == MPI_MAXLOC  : op.ob_func = _op_MAXLOC
 *     elif ob == MPI_MINLOC  : op.ob_func = _op_MINLOC             # <<<<<<<<<<<<<<
 *     elif ob == MPI_REPLACE : op.ob_func = _op_REPLACE
 *     return op
 */
  __pyx_t_2 = (__pyx_v_ob == MPI_MINLOC);
  if (__pyx_t_2) {
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_MINLOC;
    goto __pyx_L3;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":102
 *     elif ob == MPI_MAXLOC  : op.ob_func = _op_MAXLOC
 *     elif ob == MPI_MINLOC  : op.ob_func = _op_MINLOC
 *     elif ob == MPI_REPLACE : op.ob_func = _op_REPLACE             # <<<<<<<<<<<<<<
 *     return op
 * 
 */
  __pyx_t_2 = (__pyx_v_ob == MPI_REPLACE);
  if (__pyx_t_2) {
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_REPLACE;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":103
 *     elif ob == MPI_MINLOC  : op.ob_func = _op_MINLOC
 *     elif ob == MPI_REPLACE : op.ob_func = _op_REPLACE
 *     return op             # <<<<<<<<<<<<<<
 * 
 * cdef inline int del_Op(MPI_Op* ob):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_op));
  __pyx_r = __pyx_v_op;
  goto __pyx_L0;

  __pyx_r = ((struct PyMPIOpObject *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.new_Op", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_op);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":105
 *     return op
 * 
 * cdef inline int del_Op(MPI_Op* ob):             # <<<<<<<<<<<<<<
 *     #
 *     if ob    == NULL        : return 0
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_del_Op(MPI_Op *__pyx_v_ob) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("del_Op");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":107
 * cdef inline int del_Op(MPI_Op* ob):
 *     #
 *     if ob    == NULL        : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_OP_NULL : return 0
 *     if ob[0] == MPI_MAX     : return 0
 */
  __pyx_t_1 = (__pyx_v_ob == NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":108
 *     #
 *     if ob    == NULL        : return 0
 *     if ob[0] == MPI_OP_NULL : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_MAX     : return 0
 *     if ob[0] == MPI_MIN     : return 0
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_OP_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":109
 *     if ob    == NULL        : return 0
 *     if ob[0] == MPI_OP_NULL : return 0
 *     if ob[0] == MPI_MAX     : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_MIN     : return 0
 *     if ob[0] == MPI_SUM     : return 0
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_MAX);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":110
 *     if ob[0] == MPI_OP_NULL : return 0
 *     if ob[0] == MPI_MAX     : return 0
 *     if ob[0] == MPI_MIN     : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_SUM     : return 0
 *     if ob[0] == MPI_PROD    : return 0
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_MIN);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":111
 *     if ob[0] == MPI_MAX     : return 0
 *     if ob[0] == MPI_MIN     : return 0
 *     if ob[0] == MPI_SUM     : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_PROD    : return 0
 *     if ob[0] == MPI_LAND    : return 0
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_SUM);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":112
 *     if ob[0] == MPI_MIN     : return 0
 *     if ob[0] == MPI_SUM     : return 0
 *     if ob[0] == MPI_PROD    : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_LAND    : return 0
 *     if ob[0] == MPI_BAND    : return 0
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_PROD);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":113
 *     if ob[0] == MPI_SUM     : return 0
 *     if ob[0] == MPI_PROD    : return 0
 *     if ob[0] == MPI_LAND    : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_BAND    : return 0
 *     if ob[0] == MPI_LOR     : return 0
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_LAND);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L9;
  }
  __pyx_L9:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":114
 *     if ob[0] == MPI_PROD    : return 0
 *     if ob[0] == MPI_LAND    : return 0
 *     if ob[0] == MPI_BAND    : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_LOR     : return 0
 *     if ob[0] == MPI_BOR     : return 0
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_BAND);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L10;
  }
  __pyx_L10:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":115
 *     if ob[0] == MPI_LAND    : return 0
 *     if ob[0] == MPI_BAND    : return 0
 *     if ob[0] == MPI_LOR     : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_BOR     : return 0
 *     if ob[0] == MPI_LXOR    : return 0
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_LOR);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L11;
  }
  __pyx_L11:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":116
 *     if ob[0] == MPI_BAND    : return 0
 *     if ob[0] == MPI_LOR     : return 0
 *     if ob[0] == MPI_BOR     : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_LXOR    : return 0
 *     if ob[0] == MPI_BXOR    : return 0
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_BOR);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L12;
  }
  __pyx_L12:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":117
 *     if ob[0] == MPI_LOR     : return 0
 *     if ob[0] == MPI_BOR     : return 0
 *     if ob[0] == MPI_LXOR    : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_BXOR    : return 0
 *     if ob[0] == MPI_MAXLOC  : return 0
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_LXOR);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L13;
  }
  __pyx_L13:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":118
 *     if ob[0] == MPI_BOR     : return 0
 *     if ob[0] == MPI_LXOR    : return 0
 *     if ob[0] == MPI_BXOR    : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_MAXLOC  : return 0
 *     if ob[0] == MPI_MINLOC  : return 0
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_BXOR);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L14;
  }
  __pyx_L14:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":119
 *     if ob[0] == MPI_LXOR    : return 0
 *     if ob[0] == MPI_BXOR    : return 0
 *     if ob[0] == MPI_MAXLOC  : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_MINLOC  : return 0
 *     if ob[0] == MPI_REPLACE : return 0
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_MAXLOC);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L15;
  }
  __pyx_L15:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":120
 *     if ob[0] == MPI_BXOR    : return 0
 *     if ob[0] == MPI_MAXLOC  : return 0
 *     if ob[0] == MPI_MINLOC  : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_REPLACE : return 0
 *     if not mpi_active()     : return 0
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_MINLOC);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L16;
  }
  __pyx_L16:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":121
 *     if ob[0] == MPI_MAXLOC  : return 0
 *     if ob[0] == MPI_MINLOC  : return 0
 *     if ob[0] == MPI_REPLACE : return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active()     : return 0
 *     #
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_REPLACE);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L17;
  }
  __pyx_L17:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":122
 *     if ob[0] == MPI_MINLOC  : return 0
 *     if ob[0] == MPI_REPLACE : return 0
 *     if not mpi_active()     : return 0             # <<<<<<<<<<<<<<
 *     #
 *     return MPI_Op_free(ob)
 */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L18;
  }
  __pyx_L18:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":124
 *     if not mpi_active()     : return 0
 *     #
 *     return MPI_Op_free(ob)             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
  __pyx_r = MPI_Op_free(__pyx_v_ob);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":129
 * # Info
 * 
 * cdef inline Info new_Info(MPI_Info ob):             # <<<<<<<<<<<<<<
 *     cdef Info info = <Info>Info.__new__(Info)
 *     info.ob_mpi = ob
 */

static CYTHON_INLINE struct PyMPIInfoObject *__pyx_f_6mpi4py_3MPI_new_Info(MPI_Info __pyx_v_ob) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  struct PyMPIInfoObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("new_Info");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":130
 * 
 * cdef inline Info new_Info(MPI_Info ob):
 *     cdef Info info = <Info>Info.__new__(Info)             # <<<<<<<<<<<<<<
 *     info.ob_mpi = ob
 *     return info
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Info)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIInfoObject *)__pyx_t_1)));
  __pyx_v_info = ((struct PyMPIInfoObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":131
 * cdef inline Info new_Info(MPI_Info ob):
 *     cdef Info info = <Info>Info.__new__(Info)
 *     info.ob_mpi = ob             # <<<<<<<<<<<<<<
 *     return info
 * 
 */
  __pyx_v_info->ob_mpi = __pyx_v_ob;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":132
 *     cdef Info info = <Info>Info.__new__(Info)
 *     info.ob_mpi = ob
 *     return info             # <<<<<<<<<<<<<<
 * 
 * cdef inline int del_Info(MPI_Info* ob):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_info));
  __pyx_r = __pyx_v_info;
  goto __pyx_L0;

  __pyx_r = ((struct PyMPIInfoObject *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.new_Info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_info);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":134
 *     return info
 * 
 * cdef inline int del_Info(MPI_Info* ob):             # <<<<<<<<<<<<<<
 *     #
 *     if ob    == NULL          : return 0
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_del_Info(MPI_Info *__pyx_v_ob) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("del_Info");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":136
 * cdef inline int del_Info(MPI_Info* ob):
 *     #
 *     if ob    == NULL          : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_INFO_NULL : return 0
 *     if not mpi_active()       : return 0
 */
  __pyx_t_1 = (__pyx_v_ob == NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":137
 *     #
 *     if ob    == NULL          : return 0
 *     if ob[0] == MPI_INFO_NULL : return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active()       : return 0
 *     #
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_INFO_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":138
 *     if ob    == NULL          : return 0
 *     if ob[0] == MPI_INFO_NULL : return 0
 *     if not mpi_active()       : return 0             # <<<<<<<<<<<<<<
 *     #
 *     return MPI_Info_free(ob)
 */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":140
 *     if not mpi_active()       : return 0
 *     #
 *     return MPI_Info_free(ob)             # <<<<<<<<<<<<<<
 * 
 * cdef inline MPI_Info arg_Info(object info):
 */
  __pyx_r = MPI_Info_free(__pyx_v_ob);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":142
 *     return MPI_Info_free(ob)
 * 
 * cdef inline MPI_Info arg_Info(object info):             # <<<<<<<<<<<<<<
 *     if info is None: return MPI_INFO_NULL
 *     return (<Info>info).ob_mpi
 */

static CYTHON_INLINE MPI_Info __pyx_f_6mpi4py_3MPI_arg_Info(PyObject *__pyx_v_info) {
  MPI_Info __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("arg_Info");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":143
 * 
 * cdef inline MPI_Info arg_Info(object info):
 *     if info is None: return MPI_INFO_NULL             # <<<<<<<<<<<<<<
 *     return (<Info>info).ob_mpi
 * 
 */
  __pyx_t_1 = (__pyx_v_info == Py_None);
  if (__pyx_t_1) {
    __pyx_r = MPI_INFO_NULL;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":144
 * cdef inline MPI_Info arg_Info(object info):
 *     if info is None: return MPI_INFO_NULL
 *     return (<Info>info).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
  __pyx_r = ((struct PyMPIInfoObject *)__pyx_v_info)->ob_mpi;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":149
 * # Group
 * 
 * cdef inline Group new_Group(MPI_Group ob):             # <<<<<<<<<<<<<<
 *     cdef Group group = <Group>Group.__new__(Group)
 *     group.ob_mpi = ob
 */

static CYTHON_INLINE struct PyMPIGroupObject *__pyx_f_6mpi4py_3MPI_new_Group(MPI_Group __pyx_v_ob) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  struct PyMPIGroupObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("new_Group");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":150
 * 
 * cdef inline Group new_Group(MPI_Group ob):
 *     cdef Group group = <Group>Group.__new__(Group)             # <<<<<<<<<<<<<<
 *     group.ob_mpi = ob
 *     return group
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Group)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIGroupObject *)__pyx_t_1)));
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":151
 * cdef inline Group new_Group(MPI_Group ob):
 *     cdef Group group = <Group>Group.__new__(Group)
 *     group.ob_mpi = ob             # <<<<<<<<<<<<<<
 *     return group
 * 
 */
  __pyx_v_group->ob_mpi = __pyx_v_ob;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":152
 *     cdef Group group = <Group>Group.__new__(Group)
 *     group.ob_mpi = ob
 *     return group             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_group));
  __pyx_r = __pyx_v_group;
  goto __pyx_L0;

  __pyx_r = ((struct PyMPIGroupObject *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.new_Group", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":155
 * 
 * 
 * cdef inline int del_Group(MPI_Group* ob):             # <<<<<<<<<<<<<<
 *      #
 *      if ob    == NULL            : return 0
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_del_Group(MPI_Group *__pyx_v_ob) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("del_Group");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":157
 * cdef inline int del_Group(MPI_Group* ob):
 *      #
 *      if ob    == NULL            : return 0             # <<<<<<<<<<<<<<
 *      if ob[0] == MPI_GROUP_NULL  : return 0
 *      if ob[0] == MPI_GROUP_EMPTY : return 0
 */
  __pyx_t_1 = (__pyx_v_ob == NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":158
 *      #
 *      if ob    == NULL            : return 0
 *      if ob[0] == MPI_GROUP_NULL  : return 0             # <<<<<<<<<<<<<<
 *      if ob[0] == MPI_GROUP_EMPTY : return 0
 *      if not mpi_active()         : return 0
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_GROUP_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":159
 *      if ob    == NULL            : return 0
 *      if ob[0] == MPI_GROUP_NULL  : return 0
 *      if ob[0] == MPI_GROUP_EMPTY : return 0             # <<<<<<<<<<<<<<
 *      if not mpi_active()         : return 0
 *      #
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_GROUP_EMPTY);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":160
 *      if ob[0] == MPI_GROUP_NULL  : return 0
 *      if ob[0] == MPI_GROUP_EMPTY : return 0
 *      if not mpi_active()         : return 0             # <<<<<<<<<<<<<<
 *      #
 *      return MPI_Group_free(ob)
 */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":162
 *      if not mpi_active()         : return 0
 *      #
 *      return MPI_Group_free(ob)             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
  __pyx_r = MPI_Group_free(__pyx_v_ob);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":5
 * cdef dict comm_keyval = {}
 * 
 * cdef int comm_keyval_new(int keyval,             # <<<<<<<<<<<<<<
 *                          object copy_fn,object delete_fn) except -1:
 *     comm_keyval[keyval] = (copy_fn, delete_fn)
 */

static int __pyx_f_6mpi4py_3MPI_comm_keyval_new(int __pyx_v_keyval, PyObject *__pyx_v_copy_fn, PyObject *__pyx_v_delete_fn) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("comm_keyval_new");

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":7
 * cdef int comm_keyval_new(int keyval,
 *                          object copy_fn,object delete_fn) except -1:
 *     comm_keyval[keyval] = (copy_fn, delete_fn)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_copy_fn);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_copy_fn);
  __Pyx_GIVEREF(__pyx_v_copy_fn);
  __Pyx_INCREF(__pyx_v_delete_fn);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_delete_fn);
  __Pyx_GIVEREF(__pyx_v_delete_fn);
  if (__Pyx_SetItemInt(((PyObject *)__pyx_v_6mpi4py_3MPI_comm_keyval), __pyx_v_keyval, ((PyObject *)__pyx_t_1), sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":8
 *                          object copy_fn,object delete_fn) except -1:
 *     comm_keyval[keyval] = (copy_fn, delete_fn)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef int comm_keyval_del(int keyval) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.comm_keyval_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":10
 *     return 0
 * 
 * cdef int comm_keyval_del(int keyval) except -1:             # <<<<<<<<<<<<<<
 *     try: del comm_keyval[keyval]
 *     except KeyError: pass
 */

static int __pyx_f_6mpi4py_3MPI_comm_keyval_del(int __pyx_v_keyval) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("comm_keyval_del");

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":11
 * 
 * cdef int comm_keyval_del(int keyval) except -1:
 *     try: del comm_keyval[keyval]             # <<<<<<<<<<<<<<
 *     except KeyError: pass
 *     return 0
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {
      if (__Pyx_DelItemInt(((PyObject *)__pyx_v_6mpi4py_3MPI_comm_keyval), __pyx_v_keyval, sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;

    /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":12
 * cdef int comm_keyval_del(int keyval) except -1:
 *     try: del comm_keyval[keyval]
 *     except KeyError: pass             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_4 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
    if (__pyx_t_4) {
      PyErr_Restore(0,0,0);
      goto __pyx_L4_exception_handled;
    }
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L10_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":13
 *     try: del comm_keyval[keyval]
 *     except KeyError: pass
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef int comm_attr_copy(MPI_Comm comm,
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.comm_keyval_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":15
 *     return 0
 * 
 * cdef int comm_attr_copy(MPI_Comm comm,             # <<<<<<<<<<<<<<
 *                         int keyval,
 *                         void *extra_state,
 */

static int __pyx_f_6mpi4py_3MPI_comm_attr_copy(MPI_Comm __pyx_v_comm, int __pyx_v_keyval, void *__pyx_v_extra_state, void *__pyx_v_attrval_in, void *__pyx_v_attrval_out, int *__pyx_v_flag) {
  PyObject *__pyx_v_entry = 0;
  PyObject *__pyx_v_copy_fn = 0;
  PyObject *__pyx_v_attrval = 0;
  void **__pyx_v_aptr;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("comm_attr_copy");

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":21
 *                         void *attrval_out,
 *                         int *flag) except -1:
 *     cdef tuple entry = comm_keyval.get(keyval)             # <<<<<<<<<<<<<<
 *     cdef object copy_fn = None
 *     if entry is not None: copy_fn = entry[0]
 */
  if (unlikely(((PyObject *)__pyx_v_6mpi4py_3MPI_comm_keyval) == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get"); {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_1 = PyInt_FromLong(__pyx_v_keyval); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyDict_GetItemDefault(((PyObject *)__pyx_v_6mpi4py_3MPI_comm_keyval), __pyx_t_1, Py_None); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected tuple, got %.200s", Py_TYPE(__pyx_t_2)->tp_name), 0))) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_entry = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":22
 *                         int *flag) except -1:
 *     cdef tuple entry = comm_keyval.get(keyval)
 *     cdef object copy_fn = None             # <<<<<<<<<<<<<<
 *     if entry is not None: copy_fn = entry[0]
 *     if copy_fn is None or copy_fn is False:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_copy_fn = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":23
 *     cdef tuple entry = comm_keyval.get(keyval)
 *     cdef object copy_fn = None
 *     if entry is not None: copy_fn = entry[0]             # <<<<<<<<<<<<<<
 *     if copy_fn is None or copy_fn is False:
 *         flag[0] = 0
 */
  __pyx_t_3 = (__pyx_v_entry != ((PyObject*)Py_None));
  if (__pyx_t_3) {
    __pyx_t_2 = __Pyx_GetItemInt_Tuple(((PyObject *)__pyx_v_entry), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_copy_fn);
    __pyx_v_copy_fn = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":24
 *     cdef object copy_fn = None
 *     if entry is not None: copy_fn = entry[0]
 *     if copy_fn is None or copy_fn is False:             # <<<<<<<<<<<<<<
 *         flag[0] = 0
 *         return 0
 */
  __pyx_t_3 = (__pyx_v_copy_fn == Py_None);
  if (!__pyx_t_3) {
    __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = (__pyx_v_copy_fn == __pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_5 = __pyx_t_4;
  } else {
    __pyx_t_5 = __pyx_t_3;
  }
  if (__pyx_t_5) {

    /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":25
 *     if entry is not None: copy_fn = entry[0]
 *     if copy_fn is None or copy_fn is False:
 *         flag[0] = 0             # <<<<<<<<<<<<<<
 *         return 0
 *     cdef object attrval = <object>attrval_in
 */
    (__pyx_v_flag[0]) = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":26
 *     if copy_fn is None or copy_fn is False:
 *         flag[0] = 0
 *         return 0             # <<<<<<<<<<<<<<
 *     cdef object attrval = <object>attrval_in
 *     cdef void **aptr = <void **>attrval_out
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":27
 *         flag[0] = 0
 *         return 0
 *     cdef object attrval = <object>attrval_in             # <<<<<<<<<<<<<<
 *     cdef void **aptr = <void **>attrval_out
 *     if copy_fn is not True:
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_attrval_in));
  __pyx_v_attrval = ((PyObject *)__pyx_v_attrval_in);

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":28
 *         return 0
 *     cdef object attrval = <object>attrval_in
 *     cdef void **aptr = <void **>attrval_out             # <<<<<<<<<<<<<<
 *     if copy_fn is not True:
 *         attrval = copy_fn(attrval)
 */
  __pyx_v_aptr = ((void **)__pyx_v_attrval_out);

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":29
 *     cdef object attrval = <object>attrval_in
 *     cdef void **aptr = <void **>attrval_out
 *     if copy_fn is not True:             # <<<<<<<<<<<<<<
 *         attrval = copy_fn(attrval)
 *     Py_INCREF(attrval)
 */
  __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = (__pyx_v_copy_fn != __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_5) {

    /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":30
 *     cdef void **aptr = <void **>attrval_out
 *     if copy_fn is not True:
 *         attrval = copy_fn(attrval)             # <<<<<<<<<<<<<<
 *     Py_INCREF(attrval)
 *     aptr[0] = <void*>attrval
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_INCREF(__pyx_v_attrval);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_attrval);
    __Pyx_GIVEREF(__pyx_v_attrval);
    __pyx_t_1 = PyObject_Call(__pyx_v_copy_fn, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_attrval);
    __pyx_v_attrval = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":31
 *     if copy_fn is not True:
 *         attrval = copy_fn(attrval)
 *     Py_INCREF(attrval)             # <<<<<<<<<<<<<<
 *     aptr[0] = <void*>attrval
 *     flag[0] = 1
 */
  Py_INCREF(__pyx_v_attrval);

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":32
 *         attrval = copy_fn(attrval)
 *     Py_INCREF(attrval)
 *     aptr[0] = <void*>attrval             # <<<<<<<<<<<<<<
 *     flag[0] = 1
 *     return 0
 */
  (__pyx_v_aptr[0]) = ((void *)__pyx_v_attrval);

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":33
 *     Py_INCREF(attrval)
 *     aptr[0] = <void*>attrval
 *     flag[0] = 1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  (__pyx_v_flag[0]) = 1;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":34
 *     aptr[0] = <void*>attrval
 *     flag[0] = 1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef int comm_attr_delete(MPI_Comm comm,
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.comm_attr_copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_entry);
  __Pyx_XDECREF(__pyx_v_copy_fn);
  __Pyx_XDECREF(__pyx_v_attrval);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":36
 *     return 0
 * 
 * cdef int comm_attr_delete(MPI_Comm comm,             # <<<<<<<<<<<<<<
 *                           int keyval,
 *                           void *attrval,
 */

static int __pyx_f_6mpi4py_3MPI_comm_attr_delete(MPI_Comm __pyx_v_comm, int __pyx_v_keyval, void *__pyx_v_attrval, void *__pyx_v_extra_state) {
  PyObject *__pyx_v_entry = 0;
  PyObject *__pyx_v_delete_fn = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("comm_attr_delete");

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":40
 *                           void *attrval,
 *                           void *extra_state) except -1:
 *     cdef tuple entry = comm_keyval.get(keyval)             # <<<<<<<<<<<<<<
 *     cdef object delete_fn = None
 *     if entry is not None: delete_fn = entry[1]
 */
  if (unlikely(((PyObject *)__pyx_v_6mpi4py_3MPI_comm_keyval) == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get"); {__pyx_filename = __pyx_f[13]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_1 = PyInt_FromLong(__pyx_v_keyval); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyDict_GetItemDefault(((PyObject *)__pyx_v_6mpi4py_3MPI_comm_keyval), __pyx_t_1, Py_None); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected tuple, got %.200s", Py_TYPE(__pyx_t_2)->tp_name), 0))) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_entry = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":41
 *                           void *extra_state) except -1:
 *     cdef tuple entry = comm_keyval.get(keyval)
 *     cdef object delete_fn = None             # <<<<<<<<<<<<<<
 *     if entry is not None: delete_fn = entry[1]
 *     if delete_fn is not None:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_delete_fn = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":42
 *     cdef tuple entry = comm_keyval.get(keyval)
 *     cdef object delete_fn = None
 *     if entry is not None: delete_fn = entry[1]             # <<<<<<<<<<<<<<
 *     if delete_fn is not None:
 *         delete_fn(<object>attrval)
 */
  __pyx_t_3 = (__pyx_v_entry != ((PyObject*)Py_None));
  if (__pyx_t_3) {
    __pyx_t_2 = __Pyx_GetItemInt_Tuple(((PyObject *)__pyx_v_entry), 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_delete_fn);
    __pyx_v_delete_fn = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":43
 *     cdef object delete_fn = None
 *     if entry is not None: delete_fn = entry[1]
 *     if delete_fn is not None:             # <<<<<<<<<<<<<<
 *         delete_fn(<object>attrval)
 *     Py_DECREF(<object>attrval)
 */
  __pyx_t_3 = (__pyx_v_delete_fn != Py_None);
  if (__pyx_t_3) {

    /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":44
 *     if entry is not None: delete_fn = entry[1]
 *     if delete_fn is not None:
 *         delete_fn(<object>attrval)             # <<<<<<<<<<<<<<
 *     Py_DECREF(<object>attrval)
 *     return 0
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_INCREF(((PyObject *)__pyx_v_attrval));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_attrval));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_attrval));
    __pyx_t_1 = PyObject_Call(__pyx_v_delete_fn, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":45
 *     if delete_fn is not None:
 *         delete_fn(<object>attrval)
 *     Py_DECREF(<object>attrval)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  Py_DECREF(((PyObject *)__pyx_v_attrval));

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":46
 *         delete_fn(<object>attrval)
 *     Py_DECREF(<object>attrval)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * @cython.callspec("PyMPIAPI")
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.comm_attr_delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_entry);
  __Pyx_XDECREF(__pyx_v_delete_fn);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":49
 * 
 * @cython.callspec("PyMPIAPI")
 * cdef int comm_attr_copy_fn(MPI_Comm comm,             # <<<<<<<<<<<<<<
 *                            int keyval,
 *                            void *extra_state,
 */

static int PyMPIAPI __pyx_f_6mpi4py_3MPI_comm_attr_copy_fn(MPI_Comm __pyx_v_comm, int __pyx_v_keyval, void *__pyx_v_extra_state, void *__pyx_v_attrval_in, void *__pyx_v_attrval_out, int *__pyx_v_flag) {
  PyObject *__pyx_v_exc = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("comm_attr_copy_fn");

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":55
 *                            void *attrval_out,
 *                            int *flag) with gil:
 *     if not Py_IsInitialized():             # <<<<<<<<<<<<<<
 *         return MPI_SUCCESS
 *     if attrval_in == NULL:
 */
  __pyx_t_1 = (!Py_IsInitialized());
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":56
 *                            int *flag) with gil:
 *     if not Py_IsInitialized():
 *         return MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     if attrval_in == NULL:
 *         return MPI_ERR_INTERN
 */
    __pyx_r = MPI_SUCCESS;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":57
 *     if not Py_IsInitialized():
 *         return MPI_SUCCESS
 *     if attrval_in == NULL:             # <<<<<<<<<<<<<<
 *         return MPI_ERR_INTERN
 *     if attrval_out == NULL:
 */
  __pyx_t_1 = (__pyx_v_attrval_in == NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":58
 *         return MPI_SUCCESS
 *     if attrval_in == NULL:
 *         return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if attrval_out == NULL:
 *         return MPI_ERR_INTERN
 */
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":59
 *     if attrval_in == NULL:
 *         return MPI_ERR_INTERN
 *     if attrval_out == NULL:             # <<<<<<<<<<<<<<
 *         return MPI_ERR_INTERN
 *     cdef object exc
 */
  __pyx_t_1 = (__pyx_v_attrval_out == NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":60
 *         return MPI_ERR_INTERN
 *     if attrval_out == NULL:
 *         return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     cdef object exc
 *     try:
 */
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":62
 *         return MPI_ERR_INTERN
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         comm_attr_copy(comm, keyval, extra_state,
 *                        attrval_in, attrval_out, flag)
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":64
 *     try:
 *         comm_attr_copy(comm, keyval, extra_state,
 *                        attrval_in, attrval_out, flag)             # <<<<<<<<<<<<<<
 *     except MPIException, exc:
 *         print_traceback()
 */
      __pyx_t_5 = __pyx_f_6mpi4py_3MPI_comm_attr_copy(__pyx_v_comm, __pyx_v_keyval, __pyx_v_extra_state, __pyx_v_attrval_in, __pyx_v_attrval_out, __pyx_v_flag); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L13_try_end;
    __pyx_L6_error:;

    /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":65
 *         comm_attr_copy(comm, keyval, extra_state,
 *                        attrval_in, attrval_out, flag)
 *     except MPIException, exc:             # <<<<<<<<<<<<<<
 *         print_traceback()
 *         return exc.Get_error_code()
 */
    __pyx_t_5 = PyErr_ExceptionMatches(__pyx_v_6mpi4py_3MPI_MPIException);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("mpi4py.MPI.comm_attr_copy_fn", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_7);
      __pyx_v_exc = __pyx_t_7;

      /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":66
 *                        attrval_in, attrval_out, flag)
 *     except MPIException, exc:
 *         print_traceback()             # <<<<<<<<<<<<<<
 *         return exc.Get_error_code()
 *     except:
 */
      __pyx_f_6mpi4py_3MPI_print_traceback();

      /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":67
 *     except MPIException, exc:
 *         print_traceback()
 *         return exc.Get_error_code()             # <<<<<<<<<<<<<<
 *     except:
 *         print_traceback()
 */
      __pyx_t_9 = PyObject_GetAttr(__pyx_v_exc, __pyx_n_s__Get_error_code); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_t_10); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_r = __pyx_t_5;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L9_except_return;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L7_exception_handled;
    }

    /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":68
 *         print_traceback()
 *         return exc.Get_error_code()
 *     except:             # <<<<<<<<<<<<<<
 *         print_traceback()
 *         return MPI_ERR_OTHER
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.comm_attr_copy_fn", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_6);

      /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":69
 *         return exc.Get_error_code()
 *     except:
 *         print_traceback()             # <<<<<<<<<<<<<<
 *         return MPI_ERR_OTHER
 *     return MPI_SUCCESS
 */
      __pyx_f_6mpi4py_3MPI_print_traceback();

      /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":70
 *     except:
 *         print_traceback()
 *         return MPI_ERR_OTHER             # <<<<<<<<<<<<<<
 *     return MPI_SUCCESS
 * 
 */
      __pyx_r = MPI_ERR_OTHER;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L9_except_return;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L7_exception_handled;
    }
    __pyx_L8_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L9_except_return:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L0;
    __pyx_L7_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L13_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":71
 *         print_traceback()
 *         return MPI_ERR_OTHER
 *     return MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 * @cython.callspec("PyMPIAPI")
 */
  __pyx_r = MPI_SUCCESS;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_WriteUnraisable("mpi4py.MPI.comm_attr_copy_fn", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":74
 * 
 * @cython.callspec("PyMPIAPI")
 * cdef int comm_attr_delete_fn(MPI_Comm comm,             # <<<<<<<<<<<<<<
 *                              int keyval,
 *                              void *attrval,
 */

static int PyMPIAPI __pyx_f_6mpi4py_3MPI_comm_attr_delete_fn(MPI_Comm __pyx_v_comm, int __pyx_v_keyval, void *__pyx_v_attrval, void *__pyx_v_extra_state) {
  PyObject *__pyx_v_exc = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("comm_attr_delete_fn");

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":78
 *                              void *attrval,
 *                              void *extra_state) with gil:
 *     if not Py_IsInitialized():             # <<<<<<<<<<<<<<
 *         return MPI_SUCCESS
 *     if attrval == NULL:
 */
  __pyx_t_1 = (!Py_IsInitialized());
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":79
 *                              void *extra_state) with gil:
 *     if not Py_IsInitialized():
 *         return MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     if attrval == NULL:
 *         return MPI_ERR_INTERN
 */
    __pyx_r = MPI_SUCCESS;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":80
 *     if not Py_IsInitialized():
 *         return MPI_SUCCESS
 *     if attrval == NULL:             # <<<<<<<<<<<<<<
 *         return MPI_ERR_INTERN
 *     cdef object exc
 */
  __pyx_t_1 = (__pyx_v_attrval == NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":81
 *         return MPI_SUCCESS
 *     if attrval == NULL:
 *         return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     cdef object exc
 *     try:
 */
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":83
 *         return MPI_ERR_INTERN
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         comm_attr_delete(comm, keyval, attrval, extra_state)
 *     except MPIException, exc:
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":84
 *     cdef object exc
 *     try:
 *         comm_attr_delete(comm, keyval, attrval, extra_state)             # <<<<<<<<<<<<<<
 *     except MPIException, exc:
 *         print_traceback()
 */
      __pyx_t_5 = __pyx_f_6mpi4py_3MPI_comm_attr_delete(__pyx_v_comm, __pyx_v_keyval, __pyx_v_attrval, __pyx_v_extra_state); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L12_try_end;
    __pyx_L5_error:;

    /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":85
 *     try:
 *         comm_attr_delete(comm, keyval, attrval, extra_state)
 *     except MPIException, exc:             # <<<<<<<<<<<<<<
 *         print_traceback()
 *         return exc.Get_error_code()
 */
    __pyx_t_5 = PyErr_ExceptionMatches(__pyx_v_6mpi4py_3MPI_MPIException);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("mpi4py.MPI.comm_attr_delete_fn", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_7);
      __pyx_v_exc = __pyx_t_7;

      /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":86
 *         comm_attr_delete(comm, keyval, attrval, extra_state)
 *     except MPIException, exc:
 *         print_traceback()             # <<<<<<<<<<<<<<
 *         return exc.Get_error_code()
 *     except:
 */
      __pyx_f_6mpi4py_3MPI_print_traceback();

      /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":87
 *     except MPIException, exc:
 *         print_traceback()
 *         return exc.Get_error_code()             # <<<<<<<<<<<<<<
 *     except:
 *         print_traceback()
 */
      __pyx_t_9 = PyObject_GetAttr(__pyx_v_exc, __pyx_n_s__Get_error_code); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_t_10); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_r = __pyx_t_5;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L8_except_return;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L6_exception_handled;
    }

    /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":88
 *         print_traceback()
 *         return exc.Get_error_code()
 *     except:             # <<<<<<<<<<<<<<
 *         print_traceback()
 *         return MPI_ERR_OTHER
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.comm_attr_delete_fn", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_6);

      /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":89
 *         return exc.Get_error_code()
 *     except:
 *         print_traceback()             # <<<<<<<<<<<<<<
 *         return MPI_ERR_OTHER
 *     return MPI_SUCCESS
 */
      __pyx_f_6mpi4py_3MPI_print_traceback();

      /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":90
 *     except:
 *         print_traceback()
 *         return MPI_ERR_OTHER             # <<<<<<<<<<<<<<
 *     return MPI_SUCCESS
 * 
 */
      __pyx_r = MPI_ERR_OTHER;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L8_except_return;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L6_exception_handled;
    }
    __pyx_L7_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L8_except_return:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L0;
    __pyx_L6_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L12_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":91
 *         print_traceback()
 *         return MPI_ERR_OTHER
 *     return MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = MPI_SUCCESS;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_WriteUnraisable("mpi4py.MPI.comm_attr_delete_fn", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":97
 * cdef _p_buffer _buffer = None
 * 
 * cdef inline int attach_buffer(ob, void **p, int *n) except -1:             # <<<<<<<<<<<<<<
 *     global _buffer
 *     cdef void *bptr = NULL
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_attach_buffer(PyObject *__pyx_v_ob, void **__pyx_v_p, int *__pyx_v_n) {
  void *__pyx_v_bptr;
  MPI_Aint __pyx_v_blen;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("attach_buffer");

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":99
 * cdef inline int attach_buffer(ob, void **p, int *n) except -1:
 *     global _buffer
 *     cdef void *bptr = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint blen = 0
 *     _buffer = getbuffer_w(ob, &bptr, &blen)
 */
  __pyx_v_bptr = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":100
 *     global _buffer
 *     cdef void *bptr = NULL
 *     cdef MPI_Aint blen = 0             # <<<<<<<<<<<<<<
 *     _buffer = getbuffer_w(ob, &bptr, &blen)
 *     p[0] = bptr
 */
  __pyx_v_blen = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":101
 *     cdef void *bptr = NULL
 *     cdef MPI_Aint blen = 0
 *     _buffer = getbuffer_w(ob, &bptr, &blen)             # <<<<<<<<<<<<<<
 *     p[0] = bptr
 *     n[0] = <int>blen # XXX Overflow ?
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer_w(__pyx_v_ob, (&__pyx_v_bptr), (&__pyx_v_blen))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI__buffer));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI__buffer));
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_v_6mpi4py_3MPI__buffer = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":102
 *     cdef MPI_Aint blen = 0
 *     _buffer = getbuffer_w(ob, &bptr, &blen)
 *     p[0] = bptr             # <<<<<<<<<<<<<<
 *     n[0] = <int>blen # XXX Overflow ?
 *     return 0
 */
  (__pyx_v_p[0]) = __pyx_v_bptr;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":103
 *     _buffer = getbuffer_w(ob, &bptr, &blen)
 *     p[0] = bptr
 *     n[0] = <int>blen # XXX Overflow ?             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  (__pyx_v_n[0]) = ((int)__pyx_v_blen);

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":104
 *     p[0] = bptr
 *     n[0] = <int>blen # XXX Overflow ?
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline object detach_buffer(void *p, int n):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.attach_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":106
 *     return 0
 * 
 * cdef inline object detach_buffer(void *p, int n):             # <<<<<<<<<<<<<<
 *     global _buffer
 *     cdef object ob = None
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_detach_buffer(void *__pyx_v_p, int __pyx_v_n) {
  PyObject *__pyx_v_ob = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("detach_buffer");

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":108
 * cdef inline object detach_buffer(void *p, int n):
 *     global _buffer
 *     cdef object ob = None             # <<<<<<<<<<<<<<
 *     try:
 *         if (_buffer is not None and
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_ob = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":109
 *     global _buffer
 *     cdef object ob = None
 *     try:             # <<<<<<<<<<<<<<
 *         if (_buffer is not None and
 *             _buffer.view.buf == p and
 */
  /*try:*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":110
 *     cdef object ob = None
 *     try:
 *         if (_buffer is not None and             # <<<<<<<<<<<<<<
 *             _buffer.view.buf == p and
 *             _buffer.view.len == <Py_ssize_t>n and
 */
    __pyx_t_1 = (((PyObject *)__pyx_v_6mpi4py_3MPI__buffer) != Py_None);
    if (__pyx_t_1) {

      /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":111
 *     try:
 *         if (_buffer is not None and
 *             _buffer.view.buf == p and             # <<<<<<<<<<<<<<
 *             _buffer.view.len == <Py_ssize_t>n and
 *             _buffer.view.obj != NULL):
 */
      __pyx_t_2 = (__pyx_v_6mpi4py_3MPI__buffer->view.buf == __pyx_v_p);
      if (__pyx_t_2) {

        /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":112
 *         if (_buffer is not None and
 *             _buffer.view.buf == p and
 *             _buffer.view.len == <Py_ssize_t>n and             # <<<<<<<<<<<<<<
 *             _buffer.view.obj != NULL):
 *             ob = <object>_buffer.view.obj
 */
        __pyx_t_3 = (__pyx_v_6mpi4py_3MPI__buffer->view.len == ((Py_ssize_t)__pyx_v_n));
        if (__pyx_t_3) {

          /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":113
 *             _buffer.view.buf == p and
 *             _buffer.view.len == <Py_ssize_t>n and
 *             _buffer.view.obj != NULL):             # <<<<<<<<<<<<<<
 *             ob = <object>_buffer.view.obj
 *         else:
 */
          __pyx_t_4 = (__pyx_v_6mpi4py_3MPI__buffer->view.obj != NULL);
          __pyx_t_5 = __pyx_t_4;
        } else {
          __pyx_t_5 = __pyx_t_3;
        }
        __pyx_t_3 = __pyx_t_5;
      } else {
        __pyx_t_3 = __pyx_t_2;
      }
      __pyx_t_2 = __pyx_t_3;
    } else {
      __pyx_t_2 = __pyx_t_1;
    }
    if (__pyx_t_2) {

      /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":114
 *             _buffer.view.len == <Py_ssize_t>n and
 *             _buffer.view.obj != NULL):
 *             ob = <object>_buffer.view.obj             # <<<<<<<<<<<<<<
 *         else:
 *             ob = tomemory(p, <MPI_Aint>n)
 */
      __Pyx_INCREF(((PyObject *)__pyx_v_6mpi4py_3MPI__buffer->view.obj));
      __Pyx_DECREF(__pyx_v_ob);
      __pyx_v_ob = ((PyObject *)__pyx_v_6mpi4py_3MPI__buffer->view.obj);
      goto __pyx_L6;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":116
 *             ob = <object>_buffer.view.obj
 *         else:
 *             ob = tomemory(p, <MPI_Aint>n)             # <<<<<<<<<<<<<<
 *     finally:
 *         _buffer = None
 */
      __pyx_t_6 = __pyx_f_6mpi4py_3MPI_tomemory(__pyx_v_p, ((MPI_Aint)__pyx_v_n)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L4;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_v_ob);
      __pyx_v_ob = __pyx_t_6;
      __pyx_t_6 = 0;
    }
    __pyx_L6:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":118
 *             ob = tomemory(p, <MPI_Aint>n)
 *     finally:
 *         _buffer = None             # <<<<<<<<<<<<<<
 *     return ob
 * 
 */
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L5;
    __pyx_L4: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L5;
    }
    __pyx_L5:;
    __Pyx_INCREF(Py_None);
    __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI__buffer));
    __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI__buffer));
    __Pyx_GIVEREF(Py_None);
    __pyx_v_6mpi4py_3MPI__buffer = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)Py_None);
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":119
 *     finally:
 *         _buffer = None
 *     return ob             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ob);
  __pyx_r = __pyx_v_ob;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.detach_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":169
 * include "commimpl.pxi"
 * 
 * cdef inline Comm new_Comm(MPI_Comm ob):             # <<<<<<<<<<<<<<
 *     cdef Comm comm = <Comm>Comm.__new__(Comm)
 *     comm.ob_mpi = ob
 */

static CYTHON_INLINE struct PyMPICommObject *__pyx_f_6mpi4py_3MPI_new_Comm(MPI_Comm __pyx_v_ob) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  struct PyMPICommObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("new_Comm");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":170
 * 
 * cdef inline Comm new_Comm(MPI_Comm ob):
 *     cdef Comm comm = <Comm>Comm.__new__(Comm)             # <<<<<<<<<<<<<<
 *     comm.ob_mpi = ob
 *     return comm
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Comm)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPICommObject *)__pyx_t_1)));
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":171
 * cdef inline Comm new_Comm(MPI_Comm ob):
 *     cdef Comm comm = <Comm>Comm.__new__(Comm)
 *     comm.ob_mpi = ob             # <<<<<<<<<<<<<<
 *     return comm
 * 
 */
  __pyx_v_comm->ob_mpi = __pyx_v_ob;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":172
 *     cdef Comm comm = <Comm>Comm.__new__(Comm)
 *     comm.ob_mpi = ob
 *     return comm             # <<<<<<<<<<<<<<
 * 
 * cdef inline Intracomm new_Intracomm(MPI_Comm ob):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = __pyx_v_comm;
  goto __pyx_L0;

  __pyx_r = ((struct PyMPICommObject *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.new_Comm", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":174
 *     return comm
 * 
 * cdef inline Intracomm new_Intracomm(MPI_Comm ob):             # <<<<<<<<<<<<<<
 *     cdef Intracomm comm = <Intracomm>Intracomm.__new__(Intracomm)
 *     comm.ob_mpi = ob
 */

static CYTHON_INLINE struct PyMPIIntracommObject *__pyx_f_6mpi4py_3MPI_new_Intracomm(MPI_Comm __pyx_v_ob) {
  struct PyMPIIntracommObject *__pyx_v_comm = 0;
  struct PyMPIIntracommObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("new_Intracomm");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":175
 * 
 * cdef inline Intracomm new_Intracomm(MPI_Comm ob):
 *     cdef Intracomm comm = <Intracomm>Intracomm.__new__(Intracomm)             # <<<<<<<<<<<<<<
 *     comm.ob_mpi = ob
 *     return comm
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intracomm)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIIntracommObject *)__pyx_t_1)));
  __pyx_v_comm = ((struct PyMPIIntracommObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":176
 * cdef inline Intracomm new_Intracomm(MPI_Comm ob):
 *     cdef Intracomm comm = <Intracomm>Intracomm.__new__(Intracomm)
 *     comm.ob_mpi = ob             # <<<<<<<<<<<<<<
 *     return comm
 * 
 */
  __pyx_v_comm->__pyx_base.ob_mpi = __pyx_v_ob;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":177
 *     cdef Intracomm comm = <Intracomm>Intracomm.__new__(Intracomm)
 *     comm.ob_mpi = ob
 *     return comm             # <<<<<<<<<<<<<<
 * 
 * cdef inline Intercomm new_Intercomm(MPI_Comm ob):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = __pyx_v_comm;
  goto __pyx_L0;

  __pyx_r = ((struct PyMPIIntracommObject *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.new_Intracomm", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":179
 *     return comm
 * 
 * cdef inline Intercomm new_Intercomm(MPI_Comm ob):             # <<<<<<<<<<<<<<
 *     cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 *     comm.ob_mpi = ob
 */

static CYTHON_INLINE struct PyMPIIntercommObject *__pyx_f_6mpi4py_3MPI_new_Intercomm(MPI_Comm __pyx_v_ob) {
  struct PyMPIIntercommObject *__pyx_v_comm = 0;
  struct PyMPIIntercommObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("new_Intercomm");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":180
 * 
 * cdef inline Intercomm new_Intercomm(MPI_Comm ob):
 *     cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)             # <<<<<<<<<<<<<<
 *     comm.ob_mpi = ob
 *     return comm
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intercomm)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIIntercommObject *)__pyx_t_1)));
  __pyx_v_comm = ((struct PyMPIIntercommObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":181
 * cdef inline Intercomm new_Intercomm(MPI_Comm ob):
 *     cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 *     comm.ob_mpi = ob             # <<<<<<<<<<<<<<
 *     return comm
 * 
 */
  __pyx_v_comm->__pyx_base.ob_mpi = __pyx_v_ob;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":182
 *     cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 *     comm.ob_mpi = ob
 *     return comm             # <<<<<<<<<<<<<<
 * 
 * cdef inline int del_Comm(MPI_Comm* ob):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = __pyx_v_comm;
  goto __pyx_L0;

  __pyx_r = ((struct PyMPIIntercommObject *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.new_Intercomm", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":184
 *     return comm
 * 
 * cdef inline int del_Comm(MPI_Comm* ob):             # <<<<<<<<<<<<<<
 *     #
 *     if ob    == NULL           : return 0
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_del_Comm(MPI_Comm *__pyx_v_ob) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("del_Comm");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":186
 * cdef inline int del_Comm(MPI_Comm* ob):
 *     #
 *     if ob    == NULL           : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_COMM_NULL  : return 0
 *     if ob[0] == MPI_COMM_SELF  : return 0
 */
  __pyx_t_1 = (__pyx_v_ob == NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":187
 *     #
 *     if ob    == NULL           : return 0
 *     if ob[0] == MPI_COMM_NULL  : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_COMM_SELF  : return 0
 *     if ob[0] == MPI_COMM_WORLD : return 0
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":188
 *     if ob    == NULL           : return 0
 *     if ob[0] == MPI_COMM_NULL  : return 0
 *     if ob[0] == MPI_COMM_SELF  : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_COMM_WORLD : return 0
 *     if not mpi_active()        : return 0
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_COMM_SELF);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":189
 *     if ob[0] == MPI_COMM_NULL  : return 0
 *     if ob[0] == MPI_COMM_SELF  : return 0
 *     if ob[0] == MPI_COMM_WORLD : return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active()        : return 0
 *     #
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_COMM_WORLD);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":190
 *     if ob[0] == MPI_COMM_SELF  : return 0
 *     if ob[0] == MPI_COMM_WORLD : return 0
 *     if not mpi_active()        : return 0             # <<<<<<<<<<<<<<
 *     #
 *     return MPI_Comm_free(ob)
 */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":192
 *     if not mpi_active()        : return 0
 *     #
 *     return MPI_Comm_free(ob)             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
  __pyx_r = MPI_Comm_free(__pyx_v_ob);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":6
 *     int PyMPI_KEYVAL_WIN_MEMORY
 * 
 * cdef void win_memory_decref(void *ob) with gil:             # <<<<<<<<<<<<<<
 *     Py_DECREF(<object>ob)
 * 
 */

static void __pyx_f_6mpi4py_3MPI_win_memory_decref(void *__pyx_v_ob) {
  __Pyx_RefNannyDeclarations
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("win_memory_decref");

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":7
 * 
 * cdef void win_memory_decref(void *ob) with gil:
 *     Py_DECREF(<object>ob)             # <<<<<<<<<<<<<<
 * 
 * @cython.callspec("PyMPIAPI")
 */
  Py_DECREF(((PyObject *)__pyx_v_ob));

  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":10
 * 
 * @cython.callspec("PyMPIAPI")
 * cdef int win_memory_del(MPI_Win w, int k, void *v, void *xs) nogil:             # <<<<<<<<<<<<<<
 *     if  v != NULL:
 *         if Py_IsInitialized():
 */

static int PyMPIAPI __pyx_f_6mpi4py_3MPI_win_memory_del(MPI_Win __pyx_v_w, int __pyx_v_k, void *__pyx_v_v, void *__pyx_v_xs) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":11
 * @cython.callspec("PyMPIAPI")
 * cdef int win_memory_del(MPI_Win w, int k, void *v, void *xs) nogil:
 *     if  v != NULL:             # <<<<<<<<<<<<<<
 *         if Py_IsInitialized():
 *             win_memory_decref(v)
 */
  __pyx_t_1 = (__pyx_v_v != NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":12
 * cdef int win_memory_del(MPI_Win w, int k, void *v, void *xs) nogil:
 *     if  v != NULL:
 *         if Py_IsInitialized():             # <<<<<<<<<<<<<<
 *             win_memory_decref(v)
 *     return MPI_SUCCESS
 */
    __pyx_t_2 = Py_IsInitialized();
    if (__pyx_t_2) {

      /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":13
 *     if  v != NULL:
 *         if Py_IsInitialized():
 *             win_memory_decref(v)             # <<<<<<<<<<<<<<
 *     return MPI_SUCCESS
 * 
 */
      __pyx_f_6mpi4py_3MPI_win_memory_decref(__pyx_v_v);
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":14
 *         if Py_IsInitialized():
 *             win_memory_decref(v)
 *     return MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 * cdef int PyMPI_Win_setup(MPI_Win win, object memory):
 */
  __pyx_r = MPI_SUCCESS;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":16
 *     return MPI_SUCCESS
 * 
 * cdef int PyMPI_Win_setup(MPI_Win win, object memory):             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_SUCCESS
 *     # hold a reference to memory
 */

static int __pyx_f_6mpi4py_3MPI_PyMPI_Win_setup(MPI_Win __pyx_v_win, PyObject *__pyx_v_memory) {
  int __pyx_v_ierr;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("PyMPI_Win_setup");

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":17
 * 
 * cdef int PyMPI_Win_setup(MPI_Win win, object memory):
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     # hold a reference to memory
 *     global PyMPI_KEYVAL_WIN_MEMORY
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":20
 *     # hold a reference to memory
 *     global PyMPI_KEYVAL_WIN_MEMORY
 *     if memory is not None:             # <<<<<<<<<<<<<<
 *         if PyMPI_KEYVAL_WIN_MEMORY == MPI_KEYVAL_INVALID:
 *             ierr = MPI_Win_create_keyval(MPI_WIN_NULL_COPY_FN, win_memory_del,
 */
  __pyx_t_1 = (__pyx_v_memory != Py_None);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":21
 *     global PyMPI_KEYVAL_WIN_MEMORY
 *     if memory is not None:
 *         if PyMPI_KEYVAL_WIN_MEMORY == MPI_KEYVAL_INVALID:             # <<<<<<<<<<<<<<
 *             ierr = MPI_Win_create_keyval(MPI_WIN_NULL_COPY_FN, win_memory_del,
 *                                          &PyMPI_KEYVAL_WIN_MEMORY, NULL)
 */
    __pyx_t_1 = (PyMPI_KEYVAL_WIN_MEMORY == MPI_KEYVAL_INVALID);
    if (__pyx_t_1) {

      /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":23
 *         if PyMPI_KEYVAL_WIN_MEMORY == MPI_KEYVAL_INVALID:
 *             ierr = MPI_Win_create_keyval(MPI_WIN_NULL_COPY_FN, win_memory_del,
 *                                          &PyMPI_KEYVAL_WIN_MEMORY, NULL)             # <<<<<<<<<<<<<<
 *             if ierr: return ierr
 *         ierr = MPI_Win_set_attr(win, PyMPI_KEYVAL_WIN_MEMORY, <void*>memory)
 */
      __pyx_v_ierr = MPI_Win_create_keyval(MPI_WIN_NULL_COPY_FN, __pyx_f_6mpi4py_3MPI_win_memory_del, (&PyMPI_KEYVAL_WIN_MEMORY), NULL);

      /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":24
 *             ierr = MPI_Win_create_keyval(MPI_WIN_NULL_COPY_FN, win_memory_del,
 *                                          &PyMPI_KEYVAL_WIN_MEMORY, NULL)
 *             if ierr: return ierr             # <<<<<<<<<<<<<<
 *         ierr = MPI_Win_set_attr(win, PyMPI_KEYVAL_WIN_MEMORY, <void*>memory)
 *         if ierr: return ierr
 */
      if (__pyx_v_ierr) {
        __pyx_r = __pyx_v_ierr;
        goto __pyx_L0;
        goto __pyx_L5;
      }
      __pyx_L5:;
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":25
 *                                          &PyMPI_KEYVAL_WIN_MEMORY, NULL)
 *             if ierr: return ierr
 *         ierr = MPI_Win_set_attr(win, PyMPI_KEYVAL_WIN_MEMORY, <void*>memory)             # <<<<<<<<<<<<<<
 *         if ierr: return ierr
 *         Py_INCREF(memory)
 */
    __pyx_v_ierr = MPI_Win_set_attr(__pyx_v_win, PyMPI_KEYVAL_WIN_MEMORY, ((void *)__pyx_v_memory));

    /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":26
 *             if ierr: return ierr
 *         ierr = MPI_Win_set_attr(win, PyMPI_KEYVAL_WIN_MEMORY, <void*>memory)
 *         if ierr: return ierr             # <<<<<<<<<<<<<<
 *         Py_INCREF(memory)
 *     #
 */
    if (__pyx_v_ierr) {
      __pyx_r = __pyx_v_ierr;
      goto __pyx_L0;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":27
 *         ierr = MPI_Win_set_attr(win, PyMPI_KEYVAL_WIN_MEMORY, <void*>memory)
 *         if ierr: return ierr
 *         Py_INCREF(memory)             # <<<<<<<<<<<<<<
 *     #
 *     return MPI_SUCCESS
 */
    Py_INCREF(__pyx_v_memory);
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":29
 *         Py_INCREF(memory)
 *     #
 *     return MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = MPI_SUCCESS;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":35
 * cdef dict win_keyval = {}
 * 
 * cdef inline int win_keyval_new(int keyval,             # <<<<<<<<<<<<<<
 *                                object copy_fn,object delete_fn) except -1:
 *     win_keyval[keyval] = (copy_fn, delete_fn)
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_win_keyval_new(int __pyx_v_keyval, PyObject *__pyx_v_copy_fn, PyObject *__pyx_v_delete_fn) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("win_keyval_new");

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":37
 * cdef inline int win_keyval_new(int keyval,
 *                                object copy_fn,object delete_fn) except -1:
 *     win_keyval[keyval] = (copy_fn, delete_fn)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_copy_fn);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_copy_fn);
  __Pyx_GIVEREF(__pyx_v_copy_fn);
  __Pyx_INCREF(__pyx_v_delete_fn);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_delete_fn);
  __Pyx_GIVEREF(__pyx_v_delete_fn);
  if (__Pyx_SetItemInt(((PyObject *)__pyx_v_6mpi4py_3MPI_win_keyval), __pyx_v_keyval, ((PyObject *)__pyx_t_1), sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":38
 *                                object copy_fn,object delete_fn) except -1:
 *     win_keyval[keyval] = (copy_fn, delete_fn)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int win_keyval_del(int keyval) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.win_keyval_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":40
 *     return 0
 * 
 * cdef inline int win_keyval_del(int keyval) except -1:             # <<<<<<<<<<<<<<
 *     try: del win_keyval[keyval]
 *     except KeyError: pass
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_win_keyval_del(int __pyx_v_keyval) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("win_keyval_del");

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":41
 * 
 * cdef inline int win_keyval_del(int keyval) except -1:
 *     try: del win_keyval[keyval]             # <<<<<<<<<<<<<<
 *     except KeyError: pass
 *     return 0
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {
      if (__Pyx_DelItemInt(((PyObject *)__pyx_v_6mpi4py_3MPI_win_keyval), __pyx_v_keyval, sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;

    /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":42
 * cdef inline int win_keyval_del(int keyval) except -1:
 *     try: del win_keyval[keyval]
 *     except KeyError: pass             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_4 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
    if (__pyx_t_4) {
      PyErr_Restore(0,0,0);
      goto __pyx_L4_exception_handled;
    }
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L10_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":43
 *     try: del win_keyval[keyval]
 *     except KeyError: pass
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int win_attr_copy(MPI_Win win,
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.win_keyval_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":45
 *     return 0
 * 
 * cdef inline int win_attr_copy(MPI_Win win,             # <<<<<<<<<<<<<<
 *                               int keyval,
 *                               void *extra_state,
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_win_attr_copy(MPI_Win __pyx_v_win, int __pyx_v_keyval, void *__pyx_v_extra_state, void *__pyx_v_attrval_in, void *__pyx_v_attrval_out, int *__pyx_v_flag) {
  PyObject *__pyx_v_entry = 0;
  PyObject *__pyx_v_copy_fn = 0;
  PyObject *__pyx_v_attrval = 0;
  void **__pyx_v_aptr;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("win_attr_copy");

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":51
 *                               void *attrval_out,
 *                               int *flag) except -1:
 *     cdef tuple entry = win_keyval.get(keyval)             # <<<<<<<<<<<<<<
 *     cdef object copy_fn = None
 *     if entry is not None: copy_fn = entry[0]
 */
  if (unlikely(((PyObject *)__pyx_v_6mpi4py_3MPI_win_keyval) == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get"); {__pyx_filename = __pyx_f[14]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_1 = PyInt_FromLong(__pyx_v_keyval); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyDict_GetItemDefault(((PyObject *)__pyx_v_6mpi4py_3MPI_win_keyval), __pyx_t_1, Py_None); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected tuple, got %.200s", Py_TYPE(__pyx_t_2)->tp_name), 0))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_entry = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":52
 *                               int *flag) except -1:
 *     cdef tuple entry = win_keyval.get(keyval)
 *     cdef object copy_fn = None             # <<<<<<<<<<<<<<
 *     if entry is not None: copy_fn = entry[0]
 *     if copy_fn is None or copy_fn is False:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_copy_fn = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":53
 *     cdef tuple entry = win_keyval.get(keyval)
 *     cdef object copy_fn = None
 *     if entry is not None: copy_fn = entry[0]             # <<<<<<<<<<<<<<
 *     if copy_fn is None or copy_fn is False:
 *         flag[0] = 0
 */
  __pyx_t_3 = (__pyx_v_entry != ((PyObject*)Py_None));
  if (__pyx_t_3) {
    __pyx_t_2 = __Pyx_GetItemInt_Tuple(((PyObject *)__pyx_v_entry), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_copy_fn);
    __pyx_v_copy_fn = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":54
 *     cdef object copy_fn = None
 *     if entry is not None: copy_fn = entry[0]
 *     if copy_fn is None or copy_fn is False:             # <<<<<<<<<<<<<<
 *         flag[0] = 0
 *         return 0
 */
  __pyx_t_3 = (__pyx_v_copy_fn == Py_None);
  if (!__pyx_t_3) {
    __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = (__pyx_v_copy_fn == __pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_5 = __pyx_t_4;
  } else {
    __pyx_t_5 = __pyx_t_3;
  }
  if (__pyx_t_5) {

    /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":55
 *     if entry is not None: copy_fn = entry[0]
 *     if copy_fn is None or copy_fn is False:
 *         flag[0] = 0             # <<<<<<<<<<<<<<
 *         return 0
 *     cdef object attrval = <object>attrval_in
 */
    (__pyx_v_flag[0]) = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":56
 *     if copy_fn is None or copy_fn is False:
 *         flag[0] = 0
 *         return 0             # <<<<<<<<<<<<<<
 *     cdef object attrval = <object>attrval_in
 *     cdef void **aptr = <void **>attrval_out
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":57
 *         flag[0] = 0
 *         return 0
 *     cdef object attrval = <object>attrval_in             # <<<<<<<<<<<<<<
 *     cdef void **aptr = <void **>attrval_out
 *     if copy_fn is not True:
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_attrval_in));
  __pyx_v_attrval = ((PyObject *)__pyx_v_attrval_in);

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":58
 *         return 0
 *     cdef object attrval = <object>attrval_in
 *     cdef void **aptr = <void **>attrval_out             # <<<<<<<<<<<<<<
 *     if copy_fn is not True:
 *         attrval = copy_fn(attrval)
 */
  __pyx_v_aptr = ((void **)__pyx_v_attrval_out);

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":59
 *     cdef object attrval = <object>attrval_in
 *     cdef void **aptr = <void **>attrval_out
 *     if copy_fn is not True:             # <<<<<<<<<<<<<<
 *         attrval = copy_fn(attrval)
 *     Py_INCREF(attrval)
 */
  __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = (__pyx_v_copy_fn != __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_5) {

    /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":60
 *     cdef void **aptr = <void **>attrval_out
 *     if copy_fn is not True:
 *         attrval = copy_fn(attrval)             # <<<<<<<<<<<<<<
 *     Py_INCREF(attrval)
 *     aptr[0] = <void*>attrval
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_INCREF(__pyx_v_attrval);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_attrval);
    __Pyx_GIVEREF(__pyx_v_attrval);
    __pyx_t_1 = PyObject_Call(__pyx_v_copy_fn, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_attrval);
    __pyx_v_attrval = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":61
 *     if copy_fn is not True:
 *         attrval = copy_fn(attrval)
 *     Py_INCREF(attrval)             # <<<<<<<<<<<<<<
 *     aptr[0] = <void*>attrval
 *     flag[0] = 1
 */
  Py_INCREF(__pyx_v_attrval);

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":62
 *         attrval = copy_fn(attrval)
 *     Py_INCREF(attrval)
 *     aptr[0] = <void*>attrval             # <<<<<<<<<<<<<<
 *     flag[0] = 1
 *     return 0
 */
  (__pyx_v_aptr[0]) = ((void *)__pyx_v_attrval);

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":63
 *     Py_INCREF(attrval)
 *     aptr[0] = <void*>attrval
 *     flag[0] = 1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  (__pyx_v_flag[0]) = 1;

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":64
 *     aptr[0] = <void*>attrval
 *     flag[0] = 1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int win_attr_delete(MPI_Win win,
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.win_attr_copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_entry);
  __Pyx_XDECREF(__pyx_v_copy_fn);
  __Pyx_XDECREF(__pyx_v_attrval);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":66
 *     return 0
 * 
 * cdef inline int win_attr_delete(MPI_Win win,             # <<<<<<<<<<<<<<
 *                                 int keyval,
 *                                 void *attrval,
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_win_attr_delete(MPI_Win __pyx_v_win, int __pyx_v_keyval, void *__pyx_v_attrval, void *__pyx_v_extra_state) {
  PyObject *__pyx_v_entry = 0;
  PyObject *__pyx_v_delete_fn = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("win_attr_delete");

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":70
 *                                 void *attrval,
 *                                 void *extra_state) except -1:
 *     cdef tuple entry = win_keyval.get(keyval)             # <<<<<<<<<<<<<<
 *     cdef object delete_fn = None
 *     if entry is not None: delete_fn = entry[1]
 */
  if (unlikely(((PyObject *)__pyx_v_6mpi4py_3MPI_win_keyval) == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get"); {__pyx_filename = __pyx_f[14]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_1 = PyInt_FromLong(__pyx_v_keyval); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyDict_GetItemDefault(((PyObject *)__pyx_v_6mpi4py_3MPI_win_keyval), __pyx_t_1, Py_None); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected tuple, got %.200s", Py_TYPE(__pyx_t_2)->tp_name), 0))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_entry = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":71
 *                                 void *extra_state) except -1:
 *     cdef tuple entry = win_keyval.get(keyval)
 *     cdef object delete_fn = None             # <<<<<<<<<<<<<<
 *     if entry is not None: delete_fn = entry[1]
 *     if delete_fn is not None:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_delete_fn = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":72
 *     cdef tuple entry = win_keyval.get(keyval)
 *     cdef object delete_fn = None
 *     if entry is not None: delete_fn = entry[1]             # <<<<<<<<<<<<<<
 *     if delete_fn is not None:
 *         delete_fn(<object>attrval)
 */
  __pyx_t_3 = (__pyx_v_entry != ((PyObject*)Py_None));
  if (__pyx_t_3) {
    __pyx_t_2 = __Pyx_GetItemInt_Tuple(((PyObject *)__pyx_v_entry), 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_delete_fn);
    __pyx_v_delete_fn = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":73
 *     cdef object delete_fn = None
 *     if entry is not None: delete_fn = entry[1]
 *     if delete_fn is not None:             # <<<<<<<<<<<<<<
 *         delete_fn(<object>attrval)
 *     Py_DECREF(<object>attrval)
 */
  __pyx_t_3 = (__pyx_v_delete_fn != Py_None);
  if (__pyx_t_3) {

    /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":74
 *     if entry is not None: delete_fn = entry[1]
 *     if delete_fn is not None:
 *         delete_fn(<object>attrval)             # <<<<<<<<<<<<<<
 *     Py_DECREF(<object>attrval)
 *     return 0
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_INCREF(((PyObject *)__pyx_v_attrval));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_attrval));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_attrval));
    __pyx_t_1 = PyObject_Call(__pyx_v_delete_fn, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":75
 *     if delete_fn is not None:
 *         delete_fn(<object>attrval)
 *     Py_DECREF(<object>attrval)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  Py_DECREF(((PyObject *)__pyx_v_attrval));

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":76
 *         delete_fn(<object>attrval)
 *     Py_DECREF(<object>attrval)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * @cython.callspec("PyMPIAPI")
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.win_attr_delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_entry);
  __Pyx_XDECREF(__pyx_v_delete_fn);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":79
 * 
 * @cython.callspec("PyMPIAPI")
 * cdef int win_attr_copy_fn(MPI_Win win,             # <<<<<<<<<<<<<<
 *                            int keyval,
 *                            void *extra_state,
 */

static int PyMPIAPI __pyx_f_6mpi4py_3MPI_win_attr_copy_fn(MPI_Win __pyx_v_win, int __pyx_v_keyval, void *__pyx_v_extra_state, void *__pyx_v_attrval_in, void *__pyx_v_attrval_out, int *__pyx_v_flag) {
  PyObject *__pyx_v_exc = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("win_attr_copy_fn");

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":85
 *                            void *attrval_out,
 *                            int *flag) with gil:
 *     if not Py_IsInitialized():             # <<<<<<<<<<<<<<
 *         return MPI_SUCCESS
 *     if attrval_in == NULL:
 */
  __pyx_t_1 = (!Py_IsInitialized());
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":86
 *                            int *flag) with gil:
 *     if not Py_IsInitialized():
 *         return MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     if attrval_in == NULL:
 *         return MPI_ERR_INTERN
 */
    __pyx_r = MPI_SUCCESS;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":87
 *     if not Py_IsInitialized():
 *         return MPI_SUCCESS
 *     if attrval_in == NULL:             # <<<<<<<<<<<<<<
 *         return MPI_ERR_INTERN
 *     if attrval_out == NULL:
 */
  __pyx_t_1 = (__pyx_v_attrval_in == NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":88
 *         return MPI_SUCCESS
 *     if attrval_in == NULL:
 *         return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if attrval_out == NULL:
 *         return MPI_ERR_INTERN
 */
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":89
 *     if attrval_in == NULL:
 *         return MPI_ERR_INTERN
 *     if attrval_out == NULL:             # <<<<<<<<<<<<<<
 *         return MPI_ERR_INTERN
 *     cdef object exc
 */
  __pyx_t_1 = (__pyx_v_attrval_out == NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":90
 *         return MPI_ERR_INTERN
 *     if attrval_out == NULL:
 *         return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     cdef object exc
 *     try:
 */
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":92
 *         return MPI_ERR_INTERN
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         win_attr_copy(win, keyval, extra_state,
 *                        attrval_in, attrval_out, flag)
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":94
 *     try:
 *         win_attr_copy(win, keyval, extra_state,
 *                        attrval_in, attrval_out, flag)             # <<<<<<<<<<<<<<
 *     except MPIException, exc:
 *         print_traceback()
 */
      __pyx_t_5 = __pyx_f_6mpi4py_3MPI_win_attr_copy(__pyx_v_win, __pyx_v_keyval, __pyx_v_extra_state, __pyx_v_attrval_in, __pyx_v_attrval_out, __pyx_v_flag); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L13_try_end;
    __pyx_L6_error:;

    /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":95
 *         win_attr_copy(win, keyval, extra_state,
 *                        attrval_in, attrval_out, flag)
 *     except MPIException, exc:             # <<<<<<<<<<<<<<
 *         print_traceback()
 *         return exc.Get_error_code()
 */
    __pyx_t_5 = PyErr_ExceptionMatches(__pyx_v_6mpi4py_3MPI_MPIException);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("mpi4py.MPI.win_attr_copy_fn", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_7);
      __pyx_v_exc = __pyx_t_7;

      /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":96
 *                        attrval_in, attrval_out, flag)
 *     except MPIException, exc:
 *         print_traceback()             # <<<<<<<<<<<<<<
 *         return exc.Get_error_code()
 *     except:
 */
      __pyx_f_6mpi4py_3MPI_print_traceback();

      /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":97
 *     except MPIException, exc:
 *         print_traceback()
 *         return exc.Get_error_code()             # <<<<<<<<<<<<<<
 *     except:
 *         print_traceback()
 */
      __pyx_t_9 = PyObject_GetAttr(__pyx_v_exc, __pyx_n_s__Get_error_code); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_t_10); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_r = __pyx_t_5;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L9_except_return;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L7_exception_handled;
    }

    /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":98
 *         print_traceback()
 *         return exc.Get_error_code()
 *     except:             # <<<<<<<<<<<<<<
 *         print_traceback()
 *         return MPI_ERR_OTHER
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.win_attr_copy_fn", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_6);

      /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":99
 *         return exc.Get_error_code()
 *     except:
 *         print_traceback()             # <<<<<<<<<<<<<<
 *         return MPI_ERR_OTHER
 *     return MPI_SUCCESS
 */
      __pyx_f_6mpi4py_3MPI_print_traceback();

      /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":100
 *     except:
 *         print_traceback()
 *         return MPI_ERR_OTHER             # <<<<<<<<<<<<<<
 *     return MPI_SUCCESS
 * 
 */
      __pyx_r = MPI_ERR_OTHER;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L9_except_return;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L7_exception_handled;
    }
    __pyx_L8_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L9_except_return:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L0;
    __pyx_L7_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L13_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":101
 *         print_traceback()
 *         return MPI_ERR_OTHER
 *     return MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 * @cython.callspec("PyMPIAPI")
 */
  __pyx_r = MPI_SUCCESS;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_WriteUnraisable("mpi4py.MPI.win_attr_copy_fn", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":104
 * 
 * @cython.callspec("PyMPIAPI")
 * cdef int win_attr_delete_fn(MPI_Win win,             # <<<<<<<<<<<<<<
 *                              int keyval,
 *                              void *attrval,
 */

static int PyMPIAPI __pyx_f_6mpi4py_3MPI_win_attr_delete_fn(MPI_Win __pyx_v_win, int __pyx_v_keyval, void *__pyx_v_attrval, void *__pyx_v_extra_state) {
  PyObject *__pyx_v_exc = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("win_attr_delete_fn");

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":108
 *                              void *attrval,
 *                              void *extra_state) with gil:
 *     if not Py_IsInitialized():             # <<<<<<<<<<<<<<
 *         return MPI_SUCCESS
 *     if attrval == NULL:
 */
  __pyx_t_1 = (!Py_IsInitialized());
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":109
 *                              void *extra_state) with gil:
 *     if not Py_IsInitialized():
 *         return MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     if attrval == NULL:
 *         return MPI_ERR_INTERN
 */
    __pyx_r = MPI_SUCCESS;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":110
 *     if not Py_IsInitialized():
 *         return MPI_SUCCESS
 *     if attrval == NULL:             # <<<<<<<<<<<<<<
 *         return MPI_ERR_INTERN
 *     cdef object exc
 */
  __pyx_t_1 = (__pyx_v_attrval == NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":111
 *         return MPI_SUCCESS
 *     if attrval == NULL:
 *         return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     cdef object exc
 *     try:
 */
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":113
 *         return MPI_ERR_INTERN
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         win_attr_delete(win, keyval, attrval, extra_state)
 *     except MPIException, exc:
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":114
 *     cdef object exc
 *     try:
 *         win_attr_delete(win, keyval, attrval, extra_state)             # <<<<<<<<<<<<<<
 *     except MPIException, exc:
 *         print_traceback()
 */
      __pyx_t_5 = __pyx_f_6mpi4py_3MPI_win_attr_delete(__pyx_v_win, __pyx_v_keyval, __pyx_v_attrval, __pyx_v_extra_state); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L12_try_end;
    __pyx_L5_error:;

    /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":115
 *     try:
 *         win_attr_delete(win, keyval, attrval, extra_state)
 *     except MPIException, exc:             # <<<<<<<<<<<<<<
 *         print_traceback()
 *         return exc.Get_error_code()
 */
    __pyx_t_5 = PyErr_ExceptionMatches(__pyx_v_6mpi4py_3MPI_MPIException);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("mpi4py.MPI.win_attr_delete_fn", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_7);
      __pyx_v_exc = __pyx_t_7;

      /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":116
 *         win_attr_delete(win, keyval, attrval, extra_state)
 *     except MPIException, exc:
 *         print_traceback()             # <<<<<<<<<<<<<<
 *         return exc.Get_error_code()
 *     except:
 */
      __pyx_f_6mpi4py_3MPI_print_traceback();

      /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":117
 *     except MPIException, exc:
 *         print_traceback()
 *         return exc.Get_error_code()             # <<<<<<<<<<<<<<
 *     except:
 *         print_traceback()
 */
      __pyx_t_9 = PyObject_GetAttr(__pyx_v_exc, __pyx_n_s__Get_error_code); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_t_10); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_r = __pyx_t_5;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L8_except_return;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L6_exception_handled;
    }

    /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":118
 *         print_traceback()
 *         return exc.Get_error_code()
 *     except:             # <<<<<<<<<<<<<<
 *         print_traceback()
 *         return MPI_ERR_OTHER
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.win_attr_delete_fn", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_6);

      /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":119
 *         return exc.Get_error_code()
 *     except:
 *         print_traceback()             # <<<<<<<<<<<<<<
 *         return MPI_ERR_OTHER
 *     return MPI_SUCCESS
 */
      __pyx_f_6mpi4py_3MPI_print_traceback();

      /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":120
 *     except:
 *         print_traceback()
 *         return MPI_ERR_OTHER             # <<<<<<<<<<<<<<
 *     return MPI_SUCCESS
 * 
 */
      __pyx_r = MPI_ERR_OTHER;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L8_except_return;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L6_exception_handled;
    }
    __pyx_L7_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L8_except_return:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L0;
    __pyx_L6_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L12_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":121
 *         print_traceback()
 *         return MPI_ERR_OTHER
 *     return MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = MPI_SUCCESS;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_WriteUnraisable("mpi4py.MPI.win_attr_delete_fn", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":199
 * include "winimpl.pxi"
 * 
 * cdef inline Win new_Win(MPI_Win ob):             # <<<<<<<<<<<<<<
 *     cdef Win win = <Win>Win.__new__(Win)
 *     win.ob_mpi = ob
 */

static CYTHON_INLINE struct PyMPIWinObject *__pyx_f_6mpi4py_3MPI_new_Win(MPI_Win __pyx_v_ob) {
  struct PyMPIWinObject *__pyx_v_win = 0;
  struct PyMPIWinObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("new_Win");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":200
 * 
 * cdef inline Win new_Win(MPI_Win ob):
 *     cdef Win win = <Win>Win.__new__(Win)             # <<<<<<<<<<<<<<
 *     win.ob_mpi = ob
 *     return win
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Win)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIWinObject *)__pyx_t_1)));
  __pyx_v_win = ((struct PyMPIWinObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":201
 * cdef inline Win new_Win(MPI_Win ob):
 *     cdef Win win = <Win>Win.__new__(Win)
 *     win.ob_mpi = ob             # <<<<<<<<<<<<<<
 *     return win
 * 
 */
  __pyx_v_win->ob_mpi = __pyx_v_ob;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":202
 *     cdef Win win = <Win>Win.__new__(Win)
 *     win.ob_mpi = ob
 *     return win             # <<<<<<<<<<<<<<
 * 
 * cdef inline int del_Win(MPI_Win* ob):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_win));
  __pyx_r = __pyx_v_win;
  goto __pyx_L0;

  __pyx_r = ((struct PyMPIWinObject *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.new_Win", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_win);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":204
 *     return win
 * 
 * cdef inline int del_Win(MPI_Win* ob):             # <<<<<<<<<<<<<<
 *     #
 *     if ob    == NULL         : return 0
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_del_Win(MPI_Win *__pyx_v_ob) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("del_Win");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":206
 * cdef inline int del_Win(MPI_Win* ob):
 *     #
 *     if ob    == NULL         : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_WIN_NULL : return 0
 *     if not mpi_active()      : return 0
 */
  __pyx_t_1 = (__pyx_v_ob == NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":207
 *     #
 *     if ob    == NULL         : return 0
 *     if ob[0] == MPI_WIN_NULL : return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active()      : return 0
 *     #
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_WIN_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":208
 *     if ob    == NULL         : return 0
 *     if ob[0] == MPI_WIN_NULL : return 0
 *     if not mpi_active()      : return 0             # <<<<<<<<<<<<<<
 *     #
 *     return MPI_Win_free(ob)
 */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":210
 *     if not mpi_active()      : return 0
 *     #
 *     return MPI_Win_free(ob)             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
  __pyx_r = MPI_Win_free(__pyx_v_ob);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":215
 * # File
 * 
 * cdef inline File new_File(MPI_File ob):             # <<<<<<<<<<<<<<
 *     cdef File file = <File>File.__new__(File)
 *     file.ob_mpi = ob
 */

static CYTHON_INLINE struct PyMPIFileObject *__pyx_f_6mpi4py_3MPI_new_File(MPI_File __pyx_v_ob) {
  struct PyMPIFileObject *__pyx_v_file = 0;
  struct PyMPIFileObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("new_File");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":216
 * 
 * cdef inline File new_File(MPI_File ob):
 *     cdef File file = <File>File.__new__(File)             # <<<<<<<<<<<<<<
 *     file.ob_mpi = ob
 *     return file
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_File)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIFileObject *)__pyx_t_1)));
  __pyx_v_file = ((struct PyMPIFileObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":217
 * cdef inline File new_File(MPI_File ob):
 *     cdef File file = <File>File.__new__(File)
 *     file.ob_mpi = ob             # <<<<<<<<<<<<<<
 *     return file
 * 
 */
  __pyx_v_file->ob_mpi = __pyx_v_ob;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":218
 *     cdef File file = <File>File.__new__(File)
 *     file.ob_mpi = ob
 *     return file             # <<<<<<<<<<<<<<
 * 
 * cdef inline int del_File(MPI_File* ob):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_file));
  __pyx_r = __pyx_v_file;
  goto __pyx_L0;

  __pyx_r = ((struct PyMPIFileObject *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.new_File", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_file);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":220
 *     return file
 * 
 * cdef inline int del_File(MPI_File* ob):             # <<<<<<<<<<<<<<
 *     #
 *     if ob    == NULL          : return 0
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_del_File(MPI_File *__pyx_v_ob) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("del_File");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":222
 * cdef inline int del_File(MPI_File* ob):
 *     #
 *     if ob    == NULL          : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_FILE_NULL : return 0
 *     if not mpi_active()       : return 0
 */
  __pyx_t_1 = (__pyx_v_ob == NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":223
 *     #
 *     if ob    == NULL          : return 0
 *     if ob[0] == MPI_FILE_NULL : return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active()       : return 0
 *     #
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_FILE_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":224
 *     if ob    == NULL          : return 0
 *     if ob[0] == MPI_FILE_NULL : return 0
 *     if not mpi_active()       : return 0             # <<<<<<<<<<<<<<
 *     #
 *     return MPI_File_close(ob)
 */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":226
 *     if not mpi_active()       : return 0
 *     #
 *     return MPI_File_close(ob)             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
  __pyx_r = MPI_File_close(__pyx_v_ob);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":231
 * # Errhandler
 * 
 * cdef inline Errhandler new_Errhandler(MPI_Errhandler ob):             # <<<<<<<<<<<<<<
 *     cdef Errhandler errhandler = <Errhandler>Errhandler.__new__(Errhandler)
 *     errhandler.ob_mpi = ob
 */

static CYTHON_INLINE struct PyMPIErrhandlerObject *__pyx_f_6mpi4py_3MPI_new_Errhandler(MPI_Errhandler __pyx_v_ob) {
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  struct PyMPIErrhandlerObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("new_Errhandler");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":232
 * 
 * cdef inline Errhandler new_Errhandler(MPI_Errhandler ob):
 *     cdef Errhandler errhandler = <Errhandler>Errhandler.__new__(Errhandler)             # <<<<<<<<<<<<<<
 *     errhandler.ob_mpi = ob
 *     return errhandler
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Errhandler)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIErrhandlerObject *)__pyx_t_1)));
  __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":233
 * cdef inline Errhandler new_Errhandler(MPI_Errhandler ob):
 *     cdef Errhandler errhandler = <Errhandler>Errhandler.__new__(Errhandler)
 *     errhandler.ob_mpi = ob             # <<<<<<<<<<<<<<
 *     return errhandler
 * 
 */
  __pyx_v_errhandler->ob_mpi = __pyx_v_ob;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":234
 *     cdef Errhandler errhandler = <Errhandler>Errhandler.__new__(Errhandler)
 *     errhandler.ob_mpi = ob
 *     return errhandler             # <<<<<<<<<<<<<<
 * 
 * cdef inline int del_Errhandler(MPI_Errhandler* ob):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_errhandler));
  __pyx_r = __pyx_v_errhandler;
  goto __pyx_L0;

  __pyx_r = ((struct PyMPIErrhandlerObject *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.new_Errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_errhandler);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":236
 *     return errhandler
 * 
 * cdef inline int del_Errhandler(MPI_Errhandler* ob):             # <<<<<<<<<<<<<<
 *     #
 *     if ob    == NULL                : return 0
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_del_Errhandler(MPI_Errhandler *__pyx_v_ob) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("del_Errhandler");

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":238
 * cdef inline int del_Errhandler(MPI_Errhandler* ob):
 *     #
 *     if ob    == NULL                : return 0             # <<<<<<<<<<<<<<
 *     if ob[0] == MPI_ERRHANDLER_NULL : return 0
 *     if not mpi_active()             : return 0
 */
  __pyx_t_1 = (__pyx_v_ob == NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":239
 *     #
 *     if ob    == NULL                : return 0
 *     if ob[0] == MPI_ERRHANDLER_NULL : return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active()             : return 0
 *     #
 */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_ERRHANDLER_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":240
 *     if ob    == NULL                : return 0
 *     if ob[0] == MPI_ERRHANDLER_NULL : return 0
 *     if not mpi_active()             : return 0             # <<<<<<<<<<<<<<
 *     #
 *     return MPI_Errhandler_free(ob)
 */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/helpers.pxi":242
 *     if not mpi_active()             : return 0
 *     #
 *     return MPI_Errhandler_free(ob)             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
  __pyx_r = MPI_Errhandler_free(__pyx_v_ob);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":8
 *     int is_tuple  "PyTuple_Check" (object)
 * 
 * cdef inline bint is_buffer(object ob):             # <<<<<<<<<<<<<<
 *     return (PyObject_CheckBuffer(ob) or
 *             PyObject_CheckReadBuffer(ob))
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_buffer(PyObject *__pyx_v_ob) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("is_buffer");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":9
 * 
 * cdef inline bint is_buffer(object ob):
 *     return (PyObject_CheckBuffer(ob) or             # <<<<<<<<<<<<<<
 *             PyObject_CheckReadBuffer(ob))
 * 
 */
  __pyx_t_1 = PyObject_CheckBuffer(__pyx_v_ob);
  if (!__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":10
 * cdef inline bint is_buffer(object ob):
 *     return (PyObject_CheckBuffer(ob) or
 *             PyObject_CheckReadBuffer(ob))             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
    __pyx_t_2 = PyObject_CheckReadBuffer(__pyx_v_ob);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  __pyx_r = __pyx_t_3;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":26
 *     cdef Datatype type
 * 
 * cdef _p_message message_basic(object o_buf,             # <<<<<<<<<<<<<<
 *                               object o_type,
 *                               bint readonly,
 */

static struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_f_6mpi4py_3MPI_message_basic(PyObject *__pyx_v_o_buf, PyObject *__pyx_v_o_type, int __pyx_v_readonly, void **__pyx_v_baddr, MPI_Aint *__pyx_v_bsize, MPI_Datatype *__pyx_v_btype) {
  struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_v_m = 0;
  int __pyx_v_f;
  struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_basic");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":35
 *                               ):
 *     global TypeDict
 *     cdef _p_message m = <_p_message>_p_message.__new__(_p_message)             # <<<<<<<<<<<<<<
 *     cdef int f = (o_type is None)
 *     # special-case for BOTTOM or None,
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_message)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_6mpi4py_3MPI__p_message *)__pyx_t_1)));
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_message *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":36
 *     global TypeDict
 *     cdef _p_message m = <_p_message>_p_message.__new__(_p_message)
 *     cdef int f = (o_type is None)             # <<<<<<<<<<<<<<
 *     # special-case for BOTTOM or None,
 *     # an explicit MPI datatype is required
 */
  __pyx_t_2 = (__pyx_v_o_type == Py_None);
  __pyx_v_f = __pyx_t_2;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":39
 *     # special-case for BOTTOM or None,
 *     # an explicit MPI datatype is required
 *     if o_buf is __BOTTOM__ or o_buf is None:             # <<<<<<<<<<<<<<
 *         if isinstance(o_type, Datatype):
 *             m.type = <Datatype>o_type
 */
  __pyx_t_2 = (__pyx_v_o_buf == __pyx_v_6mpi4py_3MPI___BOTTOM__);
  if (!__pyx_t_2) {
    __pyx_t_3 = (__pyx_v_o_buf == Py_None);
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_2;
  }
  if (__pyx_t_4) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":40
 *     # an explicit MPI datatype is required
 *     if o_buf is __BOTTOM__ or o_buf is None:
 *         if isinstance(o_type, Datatype):             # <<<<<<<<<<<<<<
 *             m.type = <Datatype>o_type
 *         else:
 */
    __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype));
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_TypeCheck(__pyx_v_o_type, __pyx_t_1); 
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_4) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":41
 *     if o_buf is __BOTTOM__ or o_buf is None:
 *         if isinstance(o_type, Datatype):
 *             m.type = <Datatype>o_type             # <<<<<<<<<<<<<<
 *         else:
 *             m.type = TypeDict[o_type]
 */
      __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_v_o_type)));
      __Pyx_GIVEREF(__pyx_v_o_type);
      __Pyx_GOTREF(__pyx_v_m->type);
      __Pyx_DECREF(((PyObject *)__pyx_v_m->type));
      __pyx_v_m->type = ((struct PyMPIDatatypeObject *)__pyx_v_o_type);
      goto __pyx_L4;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":43
 *             m.type = <Datatype>o_type
 *         else:
 *             m.type = TypeDict[o_type]             # <<<<<<<<<<<<<<
 *         m.buf = newbuffer()
 *         baddr[0] = MPI_BOTTOM
 */
      __pyx_t_1 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict), __pyx_v_o_type); if (!__pyx_t_1) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Datatype))))) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_v_m->type);
      __Pyx_DECREF(((PyObject *)__pyx_v_m->type));
      __pyx_v_m->type = ((struct PyMPIDatatypeObject *)__pyx_t_1);
      __pyx_t_1 = 0;
    }
    __pyx_L4:;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":44
 *         else:
 *             m.type = TypeDict[o_type]
 *         m.buf = newbuffer()             # <<<<<<<<<<<<<<
 *         baddr[0] = MPI_BOTTOM
 *         bsize[0] = 0
 */
    __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_newbuffer()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_v_m->buf);
    __Pyx_DECREF(((PyObject *)__pyx_v_m->buf));
    __pyx_v_m->buf = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":45
 *             m.type = TypeDict[o_type]
 *         m.buf = newbuffer()
 *         baddr[0] = MPI_BOTTOM             # <<<<<<<<<<<<<<
 *         bsize[0] = 0
 *         btype[0] = m.type.ob_mpi
 */
    (__pyx_v_baddr[0]) = MPI_BOTTOM;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":46
 *         m.buf = newbuffer()
 *         baddr[0] = MPI_BOTTOM
 *         bsize[0] = 0             # <<<<<<<<<<<<<<
 *         btype[0] = m.type.ob_mpi
 *         return m
 */
    (__pyx_v_bsize[0]) = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":47
 *         baddr[0] = MPI_BOTTOM
 *         bsize[0] = 0
 *         btype[0] = m.type.ob_mpi             # <<<<<<<<<<<<<<
 *         return m
 *     #elif obuf
 */
    (__pyx_v_btype[0]) = __pyx_v_m->type->ob_mpi;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":48
 *         bsize[0] = 0
 *         btype[0] = m.type.ob_mpi
 *         return m             # <<<<<<<<<<<<<<
 *     #elif obuf
 *     # get buffer base address and length
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(((PyObject *)__pyx_v_m));
    __pyx_r = __pyx_v_m;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":51
 *     #elif obuf
 *     # get buffer base address and length
 *     m.buf = getbuffer(o_buf, readonly, f)             # <<<<<<<<<<<<<<
 *     baddr[0] = <void*>    m.buf.view.buf
 *     bsize[0] = <MPI_Aint> m.buf.view.len
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer(__pyx_v_o_buf, __pyx_v_readonly, __pyx_v_f)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_m->buf);
  __Pyx_DECREF(((PyObject *)__pyx_v_m->buf));
  __pyx_v_m->buf = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":52
 *     # get buffer base address and length
 *     m.buf = getbuffer(o_buf, readonly, f)
 *     baddr[0] = <void*>    m.buf.view.buf             # <<<<<<<<<<<<<<
 *     bsize[0] = <MPI_Aint> m.buf.view.len
 *     # lookup datatype if not provided or not a Datatype
 */
  (__pyx_v_baddr[0]) = ((void *)__pyx_v_m->buf->view.buf);

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":53
 *     m.buf = getbuffer(o_buf, readonly, f)
 *     baddr[0] = <void*>    m.buf.view.buf
 *     bsize[0] = <MPI_Aint> m.buf.view.len             # <<<<<<<<<<<<<<
 *     # lookup datatype if not provided or not a Datatype
 *     if isinstance(o_type, Datatype):
 */
  (__pyx_v_bsize[0]) = ((MPI_Aint)__pyx_v_m->buf->view.len);

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":55
 *     bsize[0] = <MPI_Aint> m.buf.view.len
 *     # lookup datatype if not provided or not a Datatype
 *     if isinstance(o_type, Datatype):             # <<<<<<<<<<<<<<
 *         m.type = <Datatype>o_type
 *     elif o_type is None:
 */
  __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype));
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_TypeCheck(__pyx_v_o_type, __pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_4) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":56
 *     # lookup datatype if not provided or not a Datatype
 *     if isinstance(o_type, Datatype):
 *         m.type = <Datatype>o_type             # <<<<<<<<<<<<<<
 *     elif o_type is None:
 *         m.type = TypeDict[getformat(m.buf)]
 */
    __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_v_o_type)));
    __Pyx_GIVEREF(__pyx_v_o_type);
    __Pyx_GOTREF(__pyx_v_m->type);
    __Pyx_DECREF(((PyObject *)__pyx_v_m->type));
    __pyx_v_m->type = ((struct PyMPIDatatypeObject *)__pyx_v_o_type);
    goto __pyx_L5;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":57
 *     if isinstance(o_type, Datatype):
 *         m.type = <Datatype>o_type
 *     elif o_type is None:             # <<<<<<<<<<<<<<
 *         m.type = TypeDict[getformat(m.buf)]
 *     else:
 */
  __pyx_t_4 = (__pyx_v_o_type == Py_None);
  if (__pyx_t_4) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":58
 *         m.type = <Datatype>o_type
 *     elif o_type is None:
 *         m.type = TypeDict[getformat(m.buf)]             # <<<<<<<<<<<<<<
 *     else:
 *         m.type = TypeDict[o_type]
 */
    __pyx_t_1 = ((PyObject *)__pyx_v_m->buf);
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_5 = __pyx_f_6mpi4py_3MPI_getformat(((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict), __pyx_t_5); if (!__pyx_t_1) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Datatype))))) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_v_m->type);
    __Pyx_DECREF(((PyObject *)__pyx_v_m->type));
    __pyx_v_m->type = ((struct PyMPIDatatypeObject *)__pyx_t_1);
    __pyx_t_1 = 0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":60
 *         m.type = TypeDict[getformat(m.buf)]
 *     else:
 *         m.type = TypeDict[o_type]             # <<<<<<<<<<<<<<
 *     btype[0] = m.type.ob_mpi
 *     # and we are done ...
 */
    __pyx_t_1 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict), __pyx_v_o_type); if (!__pyx_t_1) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Datatype))))) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_v_m->type);
    __Pyx_DECREF(((PyObject *)__pyx_v_m->type));
    __pyx_v_m->type = ((struct PyMPIDatatypeObject *)__pyx_t_1);
    __pyx_t_1 = 0;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":61
 *     else:
 *         m.type = TypeDict[o_type]
 *     btype[0] = m.type.ob_mpi             # <<<<<<<<<<<<<<
 *     # and we are done ...
 *     return m
 */
  (__pyx_v_btype[0]) = __pyx_v_m->type->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":63
 *     btype[0] = m.type.ob_mpi
 *     # and we are done ...
 *     return m             # <<<<<<<<<<<<<<
 * 
 * cdef _p_message message_simple(object msg,
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_m));
  __pyx_r = __pyx_v_m;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_message *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.message_basic", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":65
 *     return m
 * 
 * cdef _p_message message_simple(object msg,             # <<<<<<<<<<<<<<
 *                                int readonly,
 *                                int rank,
 */

static struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_f_6mpi4py_3MPI_message_simple(PyObject *__pyx_v_msg, int __pyx_v_readonly, int __pyx_v_rank, int __pyx_v_blocks, void **__pyx_v__addr, int *__pyx_v__count, MPI_Datatype *__pyx_v__type) {
  Py_ssize_t __pyx_v_nargs;
  PyObject *__pyx_v_o_buf = 0;
  PyObject *__pyx_v_o_count = 0;
  PyObject *__pyx_v_o_displ = 0;
  PyObject *__pyx_v_o_type = 0;
  void *__pyx_v_baddr;
  MPI_Aint __pyx_v_bsize;
  MPI_Datatype __pyx_v_btype;
  struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_v_m = 0;
  int __pyx_v_count;
  int __pyx_v_displ;
  MPI_Aint __pyx_v_offset;
  MPI_Aint __pyx_v_extent;
  MPI_Aint __pyx_v_lb;
  struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *(*__pyx_t_8)(PyObject *);
  int __pyx_t_9;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_simple");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":75
 *                                ):
 *     # special-case PROC_NULL target rank
 *     if rank == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         _addr[0]  = NULL
 *         _count[0] = 0
 */
  __pyx_t_1 = (__pyx_v_rank == MPI_PROC_NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":76
 *     # special-case PROC_NULL target rank
 *     if rank == MPI_PROC_NULL:
 *         _addr[0]  = NULL             # <<<<<<<<<<<<<<
 *         _count[0] = 0
 *         _type[0]  = MPI_BYTE
 */
    (__pyx_v__addr[0]) = NULL;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":77
 *     if rank == MPI_PROC_NULL:
 *         _addr[0]  = NULL
 *         _count[0] = 0             # <<<<<<<<<<<<<<
 *         _type[0]  = MPI_BYTE
 *         return None
 */
    (__pyx_v__count[0]) = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":78
 *         _addr[0]  = NULL
 *         _count[0] = 0
 *         _type[0]  = MPI_BYTE             # <<<<<<<<<<<<<<
 *         return None
 *     # unpack message list/tuple
 */
    (__pyx_v__type[0]) = MPI_BYTE;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":79
 *         _count[0] = 0
 *         _type[0]  = MPI_BYTE
 *         return None             # <<<<<<<<<<<<<<
 *     # unpack message list/tuple
 *     cdef Py_ssize_t nargs = 0
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(Py_None);
    __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_message *)Py_None);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":81
 *         return None
 *     # unpack message list/tuple
 *     cdef Py_ssize_t nargs = 0             # <<<<<<<<<<<<<<
 *     cdef object o_buf   = None
 *     cdef object o_count = None
 */
  __pyx_v_nargs = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":82
 *     # unpack message list/tuple
 *     cdef Py_ssize_t nargs = 0
 *     cdef object o_buf   = None             # <<<<<<<<<<<<<<
 *     cdef object o_count = None
 *     cdef object o_displ = None
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_o_buf = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":83
 *     cdef Py_ssize_t nargs = 0
 *     cdef object o_buf   = None
 *     cdef object o_count = None             # <<<<<<<<<<<<<<
 *     cdef object o_displ = None
 *     cdef object o_type  = None
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_o_count = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":84
 *     cdef object o_buf   = None
 *     cdef object o_count = None
 *     cdef object o_displ = None             # <<<<<<<<<<<<<<
 *     cdef object o_type  = None
 *     if is_buffer(msg):
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_o_displ = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":85
 *     cdef object o_count = None
 *     cdef object o_displ = None
 *     cdef object o_type  = None             # <<<<<<<<<<<<<<
 *     if is_buffer(msg):
 *         o_buf = msg
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_o_type = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":86
 *     cdef object o_displ = None
 *     cdef object o_type  = None
 *     if is_buffer(msg):             # <<<<<<<<<<<<<<
 *         o_buf = msg
 *     elif is_list(msg) or is_tuple(msg):
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_is_buffer(__pyx_v_msg);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":87
 *     cdef object o_type  = None
 *     if is_buffer(msg):
 *         o_buf = msg             # <<<<<<<<<<<<<<
 *     elif is_list(msg) or is_tuple(msg):
 *         nargs = len(msg)
 */
    __Pyx_INCREF(__pyx_v_msg);
    __Pyx_DECREF(__pyx_v_o_buf);
    __pyx_v_o_buf = __pyx_v_msg;
    goto __pyx_L4;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":88
 *     if is_buffer(msg):
 *         o_buf = msg
 *     elif is_list(msg) or is_tuple(msg):             # <<<<<<<<<<<<<<
 *         nargs = len(msg)
 *         if nargs == 2:
 */
  __pyx_t_2 = PyList_Check(__pyx_v_msg);
  if (!__pyx_t_2) {
    __pyx_t_3 = PyTuple_Check(__pyx_v_msg);
    __pyx_t_1 = __pyx_t_3;
  } else {
    __pyx_t_1 = __pyx_t_2;
  }
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":89
 *         o_buf = msg
 *     elif is_list(msg) or is_tuple(msg):
 *         nargs = len(msg)             # <<<<<<<<<<<<<<
 *         if nargs == 2:
 *             (o_buf, o_count) = msg
 */
    __pyx_t_4 = PyObject_Length(__pyx_v_msg); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_nargs = __pyx_t_4;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":101
 *             if is_tuple(o_count) or is_list(o_count):
 *                 (o_count, o_displ) = o_count
 *         elif nargs == 4:             # <<<<<<<<<<<<<<
 *             (o_buf, o_count, o_displ, o_type) = msg
 *         else:
 */
    switch (__pyx_v_nargs) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":90
 *     elif is_list(msg) or is_tuple(msg):
 *         nargs = len(msg)
 *         if nargs == 2:             # <<<<<<<<<<<<<<
 *             (o_buf, o_count) = msg
 *             if (isinstance(o_count, Datatype) or
 */
      case 2:

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":91
 *         nargs = len(msg)
 *         if nargs == 2:
 *             (o_buf, o_count) = msg             # <<<<<<<<<<<<<<
 *             if (isinstance(o_count, Datatype) or
 *                 isinstance(o_count, str)):
 */
      if ((likely(PyTuple_CheckExact(__pyx_v_msg))) || (PyList_CheckExact(__pyx_v_msg))) {
        PyObject* sequence = __pyx_v_msg;
        if (likely(PyTuple_CheckExact(sequence))) {
          if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
            if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
            else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
            {__pyx_filename = __pyx_f[15]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
            if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
            else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
            {__pyx_filename = __pyx_f[15]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
      } else {
        Py_ssize_t index = -1;
        __pyx_t_7 = PyObject_GetIter(__pyx_v_msg); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
        index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_5);
        index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L6_unpacking_done;
        __pyx_L5_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
        if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[15]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_L6_unpacking_done:;
      }
      __Pyx_DECREF(__pyx_v_o_buf);
      __pyx_v_o_buf = __pyx_t_5;
      __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_o_count);
      __pyx_v_o_count = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":92
 *         if nargs == 2:
 *             (o_buf, o_count) = msg
 *             if (isinstance(o_count, Datatype) or             # <<<<<<<<<<<<<<
 *                 isinstance(o_count, str)):
 *                 (o_count, o_type) = None, o_count
 */
      __pyx_t_6 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype));
      __Pyx_INCREF(__pyx_t_6);
      __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_o_count, __pyx_t_6); 
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (!__pyx_t_1) {

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":93
 *             (o_buf, o_count) = msg
 *             if (isinstance(o_count, Datatype) or
 *                 isinstance(o_count, str)):             # <<<<<<<<<<<<<<
 *                 (o_count, o_type) = None, o_count
 *             elif is_tuple(o_count) or is_list(o_count):
 */
        __pyx_t_6 = ((PyObject *)((PyObject*)(&PyString_Type)));
        __Pyx_INCREF(__pyx_t_6);
        __pyx_t_9 = __Pyx_TypeCheck(__pyx_v_o_count, __pyx_t_6); 
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_10 = __pyx_t_9;
      } else {
        __pyx_t_10 = __pyx_t_1;
      }
      if (__pyx_t_10) {

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":94
 *             if (isinstance(o_count, Datatype) or
 *                 isinstance(o_count, str)):
 *                 (o_count, o_type) = None, o_count             # <<<<<<<<<<<<<<
 *             elif is_tuple(o_count) or is_list(o_count):
 *                 (o_count, o_displ) = o_count
 */
        __pyx_t_6 = Py_None;
        __Pyx_INCREF(__pyx_t_6);
        __pyx_t_5 = __pyx_v_o_count;
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_v_o_count);
        __pyx_v_o_count = __pyx_t_6;
        __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_v_o_type);
        __pyx_v_o_type = __pyx_t_5;
        __pyx_t_5 = 0;
        goto __pyx_L7;
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":95
 *                 isinstance(o_count, str)):
 *                 (o_count, o_type) = None, o_count
 *             elif is_tuple(o_count) or is_list(o_count):             # <<<<<<<<<<<<<<
 *                 (o_count, o_displ) = o_count
 *         elif nargs == 3:
 */
      __pyx_t_2 = PyTuple_Check(__pyx_v_o_count);
      if (!__pyx_t_2) {
        __pyx_t_3 = PyList_Check(__pyx_v_o_count);
        __pyx_t_10 = __pyx_t_3;
      } else {
        __pyx_t_10 = __pyx_t_2;
      }
      if (__pyx_t_10) {

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":96
 *                 (o_count, o_type) = None, o_count
 *             elif is_tuple(o_count) or is_list(o_count):
 *                 (o_count, o_displ) = o_count             # <<<<<<<<<<<<<<
 *         elif nargs == 3:
 *             (o_buf, o_count, o_type) = msg
 */
        if ((likely(PyTuple_CheckExact(__pyx_v_o_count))) || (PyList_CheckExact(__pyx_v_o_count))) {
          PyObject* sequence = __pyx_v_o_count;
          if (likely(PyTuple_CheckExact(sequence))) {
            if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
              if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
              else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
              {__pyx_filename = __pyx_f[15]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
              if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
              else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
              {__pyx_filename = __pyx_f[15]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
        } else {
          Py_ssize_t index = -1;
          __pyx_t_7 = PyObject_GetIter(__pyx_v_o_count); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
          index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L8_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_5);
          index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L8_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_6);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          goto __pyx_L9_unpacking_done;
          __pyx_L8_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
          if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
          {__pyx_filename = __pyx_f[15]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __pyx_L9_unpacking_done:;
        }
        __Pyx_DECREF(__pyx_v_o_count);
        __pyx_v_o_count = __pyx_t_5;
        __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_v_o_displ);
        __pyx_v_o_displ = __pyx_t_6;
        __pyx_t_6 = 0;
        goto __pyx_L7;
      }
      __pyx_L7:;
      break;

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":97
 *             elif is_tuple(o_count) or is_list(o_count):
 *                 (o_count, o_displ) = o_count
 *         elif nargs == 3:             # <<<<<<<<<<<<<<
 *             (o_buf, o_count, o_type) = msg
 *             if is_tuple(o_count) or is_list(o_count):
 */
      case 3:

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":98
 *                 (o_count, o_displ) = o_count
 *         elif nargs == 3:
 *             (o_buf, o_count, o_type) = msg             # <<<<<<<<<<<<<<
 *             if is_tuple(o_count) or is_list(o_count):
 *                 (o_count, o_displ) = o_count
 */
      if ((likely(PyTuple_CheckExact(__pyx_v_msg))) || (PyList_CheckExact(__pyx_v_msg))) {
        PyObject* sequence = __pyx_v_msg;
        if (likely(PyTuple_CheckExact(sequence))) {
          if (unlikely(PyTuple_GET_SIZE(sequence) != 3)) {
            if (PyTuple_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3);
            else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
            {__pyx_filename = __pyx_f[15]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 2); 
        } else {
          if (unlikely(PyList_GET_SIZE(sequence) != 3)) {
            if (PyList_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3);
            else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
            {__pyx_filename = __pyx_f[15]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_6 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
          __pyx_t_7 = PyList_GET_ITEM(sequence, 2); 
        }
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_7);
      } else {
        Py_ssize_t index = -1;
        __pyx_t_11 = PyObject_GetIter(__pyx_v_msg); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_t_8 = Py_TYPE(__pyx_t_11)->tp_iternext;
        index = 0; __pyx_t_6 = __pyx_t_8(__pyx_t_11); if (unlikely(!__pyx_t_6)) goto __pyx_L10_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        index = 1; __pyx_t_5 = __pyx_t_8(__pyx_t_11); if (unlikely(!__pyx_t_5)) goto __pyx_L10_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_5);
        index = 2; __pyx_t_7 = __pyx_t_8(__pyx_t_11); if (unlikely(!__pyx_t_7)) goto __pyx_L10_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_11), 3) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        goto __pyx_L11_unpacking_done;
        __pyx_L10_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
        if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[15]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_L11_unpacking_done:;
      }
      __Pyx_DECREF(__pyx_v_o_buf);
      __pyx_v_o_buf = __pyx_t_6;
      __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_v_o_count);
      __pyx_v_o_count = __pyx_t_5;
      __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_o_type);
      __pyx_v_o_type = __pyx_t_7;
      __pyx_t_7 = 0;

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":99
 *         elif nargs == 3:
 *             (o_buf, o_count, o_type) = msg
 *             if is_tuple(o_count) or is_list(o_count):             # <<<<<<<<<<<<<<
 *                 (o_count, o_displ) = o_count
 *         elif nargs == 4:
 */
      __pyx_t_2 = PyTuple_Check(__pyx_v_o_count);
      if (!__pyx_t_2) {
        __pyx_t_3 = PyList_Check(__pyx_v_o_count);
        __pyx_t_10 = __pyx_t_3;
      } else {
        __pyx_t_10 = __pyx_t_2;
      }
      if (__pyx_t_10) {

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":100
 *             (o_buf, o_count, o_type) = msg
 *             if is_tuple(o_count) or is_list(o_count):
 *                 (o_count, o_displ) = o_count             # <<<<<<<<<<<<<<
 *         elif nargs == 4:
 *             (o_buf, o_count, o_displ, o_type) = msg
 */
        if ((likely(PyTuple_CheckExact(__pyx_v_o_count))) || (PyList_CheckExact(__pyx_v_o_count))) {
          PyObject* sequence = __pyx_v_o_count;
          if (likely(PyTuple_CheckExact(sequence))) {
            if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
              if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
              else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
              {__pyx_filename = __pyx_f[15]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
              if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
              else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
              {__pyx_filename = __pyx_f[15]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_5);
        } else {
          Py_ssize_t index = -1;
          __pyx_t_6 = PyObject_GetIter(__pyx_v_o_count); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_8 = Py_TYPE(__pyx_t_6)->tp_iternext;
          index = 0; __pyx_t_7 = __pyx_t_8(__pyx_t_6); if (unlikely(!__pyx_t_7)) goto __pyx_L13_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_7);
          index = 1; __pyx_t_5 = __pyx_t_8(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L13_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_5);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          goto __pyx_L14_unpacking_done;
          __pyx_L13_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
          if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
          {__pyx_filename = __pyx_f[15]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __pyx_L14_unpacking_done:;
        }
        __Pyx_DECREF(__pyx_v_o_count);
        __pyx_v_o_count = __pyx_t_7;
        __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_v_o_displ);
        __pyx_v_o_displ = __pyx_t_5;
        __pyx_t_5 = 0;
        goto __pyx_L12;
      }
      __pyx_L12:;
      break;

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":101
 *             if is_tuple(o_count) or is_list(o_count):
 *                 (o_count, o_displ) = o_count
 *         elif nargs == 4:             # <<<<<<<<<<<<<<
 *             (o_buf, o_count, o_displ, o_type) = msg
 *         else:
 */
      case 4:

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":102
 *                 (o_count, o_displ) = o_count
 *         elif nargs == 4:
 *             (o_buf, o_count, o_displ, o_type) = msg             # <<<<<<<<<<<<<<
 *         else:
 *             raise ValueError("message: expecting 2 to 4 items")
 */
      if ((likely(PyTuple_CheckExact(__pyx_v_msg))) || (PyList_CheckExact(__pyx_v_msg))) {
        PyObject* sequence = __pyx_v_msg;
        if (likely(PyTuple_CheckExact(sequence))) {
          if (unlikely(PyTuple_GET_SIZE(sequence) != 4)) {
            if (PyTuple_GET_SIZE(sequence) > 4) __Pyx_RaiseTooManyValuesError(4);
            else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
            {__pyx_filename = __pyx_f[15]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2); 
          __pyx_t_11 = PyTuple_GET_ITEM(sequence, 3); 
        } else {
          if (unlikely(PyList_GET_SIZE(sequence) != 4)) {
            if (PyList_GET_SIZE(sequence) > 4) __Pyx_RaiseTooManyValuesError(4);
            else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
            {__pyx_filename = __pyx_f[15]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 2); 
          __pyx_t_11 = PyList_GET_ITEM(sequence, 3); 
        }
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_11);
      } else {
        Py_ssize_t index = -1;
        __pyx_t_12 = PyObject_GetIter(__pyx_v_msg); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_8 = Py_TYPE(__pyx_t_12)->tp_iternext;
        index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_12); if (unlikely(!__pyx_t_5)) goto __pyx_L15_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_5);
        index = 1; __pyx_t_7 = __pyx_t_8(__pyx_t_12); if (unlikely(!__pyx_t_7)) goto __pyx_L15_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        index = 2; __pyx_t_6 = __pyx_t_8(__pyx_t_12); if (unlikely(!__pyx_t_6)) goto __pyx_L15_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        index = 3; __pyx_t_11 = __pyx_t_8(__pyx_t_12); if (unlikely(!__pyx_t_11)) goto __pyx_L15_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_11);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_12), 4) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        goto __pyx_L16_unpacking_done;
        __pyx_L15_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
        if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[15]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_L16_unpacking_done:;
      }
      __Pyx_DECREF(__pyx_v_o_buf);
      __pyx_v_o_buf = __pyx_t_5;
      __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_o_count);
      __pyx_v_o_count = __pyx_t_7;
      __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_v_o_displ);
      __pyx_v_o_displ = __pyx_t_6;
      __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_v_o_type);
      __pyx_v_o_type = __pyx_t_11;
      __pyx_t_11 = 0;
      break;
      default:

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":104
 *             (o_buf, o_count, o_displ, o_type) = msg
 *         else:
 *             raise ValueError("message: expecting 2 to 4 items")             # <<<<<<<<<<<<<<
 *     else:
 *         raise TypeError("message: expecting buffer or list/tuple")
 */
      __pyx_t_11 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_16), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_Raise(__pyx_t_11, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      {__pyx_filename = __pyx_f[15]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      break;
    }
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":106
 *             raise ValueError("message: expecting 2 to 4 items")
 *     else:
 *         raise TypeError("message: expecting buffer or list/tuple")             # <<<<<<<<<<<<<<
 *     # buffer: address, length, and datatype
 *     cdef void *baddr = NULL
 */
    __pyx_t_11 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_18), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_Raise(__pyx_t_11, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    {__pyx_filename = __pyx_f[15]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":108
 *         raise TypeError("message: expecting buffer or list/tuple")
 *     # buffer: address, length, and datatype
 *     cdef void *baddr = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint bsize = 0
 *     cdef MPI_Datatype btype = MPI_DATATYPE_NULL
 */
  __pyx_v_baddr = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":109
 *     # buffer: address, length, and datatype
 *     cdef void *baddr = NULL
 *     cdef MPI_Aint bsize = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype btype = MPI_DATATYPE_NULL
 *     cdef _p_message m = message_basic(o_buf, o_type, readonly,
 */
  __pyx_v_bsize = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":110
 *     cdef void *baddr = NULL
 *     cdef MPI_Aint bsize = 0
 *     cdef MPI_Datatype btype = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *     cdef _p_message m = message_basic(o_buf, o_type, readonly,
 *                                       &baddr, &bsize, &btype)
 */
  __pyx_v_btype = MPI_DATATYPE_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":112
 *     cdef MPI_Datatype btype = MPI_DATATYPE_NULL
 *     cdef _p_message m = message_basic(o_buf, o_type, readonly,
 *                                       &baddr, &bsize, &btype)             # <<<<<<<<<<<<<<
 *     # buffer: count and displacement
 *     cdef int count = 0 # number of datatype entries
 */
  __pyx_t_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_basic(__pyx_v_o_buf, __pyx_v_o_type, __pyx_v_readonly, (&__pyx_v_baddr), (&__pyx_v_bsize), (&__pyx_v_btype))); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_message *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":114
 *                                       &baddr, &bsize, &btype)
 *     # buffer: count and displacement
 *     cdef int count = 0 # number of datatype entries             # <<<<<<<<<<<<<<
 *     cdef int displ = 0 # from base buffer, in datatype entries
 *     cdef MPI_Aint offset = 0 # from base buffer, in bytes
 */
  __pyx_v_count = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":115
 *     # buffer: count and displacement
 *     cdef int count = 0 # number of datatype entries
 *     cdef int displ = 0 # from base buffer, in datatype entries             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint offset = 0 # from base buffer, in bytes
 *     cdef MPI_Aint extent = 0, lb = 0
 */
  __pyx_v_displ = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":116
 *     cdef int count = 0 # number of datatype entries
 *     cdef int displ = 0 # from base buffer, in datatype entries
 *     cdef MPI_Aint offset = 0 # from base buffer, in bytes             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint extent = 0, lb = 0
 *     if o_displ is not None:
 */
  __pyx_v_offset = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":117
 *     cdef int displ = 0 # from base buffer, in datatype entries
 *     cdef MPI_Aint offset = 0 # from base buffer, in bytes
 *     cdef MPI_Aint extent = 0, lb = 0             # <<<<<<<<<<<<<<
 *     if o_displ is not None:
 *         if o_count is None: raise ValueError(
 */
  __pyx_v_extent = 0;
  __pyx_v_lb = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":118
 *     cdef MPI_Aint offset = 0 # from base buffer, in bytes
 *     cdef MPI_Aint extent = 0, lb = 0
 *     if o_displ is not None:             # <<<<<<<<<<<<<<
 *         if o_count is None: raise ValueError(
 *             "message: cannot handle displacement, "
 */
  __pyx_t_10 = (__pyx_v_o_displ != Py_None);
  if (__pyx_t_10) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":119
 *     cdef MPI_Aint extent = 0, lb = 0
 *     if o_displ is not None:
 *         if o_count is None: raise ValueError(             # <<<<<<<<<<<<<<
 *             "message: cannot handle displacement, "
 *             "explicit count required")
 */
    __pyx_t_10 = (__pyx_v_o_count == Py_None);
    if (__pyx_t_10) {
      __pyx_t_11 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_20), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_Raise(__pyx_t_11, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      {__pyx_filename = __pyx_f[15]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L18;
    }
    __pyx_L18:;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":122
 *             "message: cannot handle displacement, "
 *             "explicit count required")
 *         count = <int> o_count             # <<<<<<<<<<<<<<
 *         if count < 0: raise ValueError(
 *             "message: negative count %d" % count)
 */
    __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_v_o_count); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_count = ((int)__pyx_t_2);

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":123
 *             "explicit count required")
 *         count = <int> o_count
 *         if count < 0: raise ValueError(             # <<<<<<<<<<<<<<
 *             "message: negative count %d" % count)
 *         displ = <int> o_displ
 */
    __pyx_t_10 = (__pyx_v_count < 0);
    if (__pyx_t_10) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":124
 *         count = <int> o_count
 *         if count < 0: raise ValueError(
 *             "message: negative count %d" % count)             # <<<<<<<<<<<<<<
 *         displ = <int> o_displ
 *         if displ < 0: raise ValueError(
 */
      __pyx_t_11 = PyInt_FromLong(__pyx_v_count); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_21), __pyx_t_11); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_6));
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_11));
      PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)__pyx_t_6));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
      __pyx_t_6 = 0;
      __pyx_t_6 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      {__pyx_filename = __pyx_f[15]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L19;
    }
    __pyx_L19:;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":125
 *         if count < 0: raise ValueError(
 *             "message: negative count %d" % count)
 *         displ = <int> o_displ             # <<<<<<<<<<<<<<
 *         if displ < 0: raise ValueError(
 *             "message: negative diplacement %d" % displ)
 */
    __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_v_o_displ); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_displ = ((int)__pyx_t_2);

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":126
 *             "message: negative count %d" % count)
 *         displ = <int> o_displ
 *         if displ < 0: raise ValueError(             # <<<<<<<<<<<<<<
 *             "message: negative diplacement %d" % displ)
 *         if displ != 0:
 */
    __pyx_t_10 = (__pyx_v_displ < 0);
    if (__pyx_t_10) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":127
 *         displ = <int> o_displ
 *         if displ < 0: raise ValueError(
 *             "message: negative diplacement %d" % displ)             # <<<<<<<<<<<<<<
 *         if displ != 0:
 *             if btype == MPI_DATATYPE_NULL: raise ValueError(
 */
      __pyx_t_6 = PyInt_FromLong(__pyx_v_displ); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_11 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_22), __pyx_t_6); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_11));
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_6));
      PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_t_11));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_11));
      __pyx_t_11 = 0;
      __pyx_t_11 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
      __Pyx_Raise(__pyx_t_11, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      {__pyx_filename = __pyx_f[15]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L20;
    }
    __pyx_L20:;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":128
 *         if displ < 0: raise ValueError(
 *             "message: negative diplacement %d" % displ)
 *         if displ != 0:             # <<<<<<<<<<<<<<
 *             if btype == MPI_DATATYPE_NULL: raise ValueError(
 *                 "message: cannot handle diplacement, "
 */
    __pyx_t_10 = (__pyx_v_displ != 0);
    if (__pyx_t_10) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":129
 *             "message: negative diplacement %d" % displ)
 *         if displ != 0:
 *             if btype == MPI_DATATYPE_NULL: raise ValueError(             # <<<<<<<<<<<<<<
 *                 "message: cannot handle diplacement, "
 *                 "datatype is null")
 */
      __pyx_t_10 = (__pyx_v_btype == MPI_DATATYPE_NULL);
      if (__pyx_t_10) {
        __pyx_t_11 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_24), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_Raise(__pyx_t_11, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        {__pyx_filename = __pyx_f[15]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L22;
      }
      __pyx_L22:;

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":132
 *                 "message: cannot handle diplacement, "
 *                 "datatype is null")
 *             CHKERR( MPI_Type_get_extent(btype, &lb, &extent) )             # <<<<<<<<<<<<<<
 *             offset = displ*extent # XXX overflow?
 *     elif o_count is not None:
 */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent(__pyx_v_btype, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":133
 *                 "datatype is null")
 *             CHKERR( MPI_Type_get_extent(btype, &lb, &extent) )
 *             offset = displ*extent # XXX overflow?             # <<<<<<<<<<<<<<
 *     elif o_count is not None:
 *         count = <int> o_count
 */
      __pyx_v_offset = (__pyx_v_displ * __pyx_v_extent);
      goto __pyx_L21;
    }
    __pyx_L21:;
    goto __pyx_L17;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":134
 *             CHKERR( MPI_Type_get_extent(btype, &lb, &extent) )
 *             offset = displ*extent # XXX overflow?
 *     elif o_count is not None:             # <<<<<<<<<<<<<<
 *         count = <int> o_count
 *         if count < 0:
 */
  __pyx_t_10 = (__pyx_v_o_count != Py_None);
  if (__pyx_t_10) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":135
 *             offset = displ*extent # XXX overflow?
 *     elif o_count is not None:
 *         count = <int> o_count             # <<<<<<<<<<<<<<
 *         if count < 0:
 *             raise ValueError(
 */
    __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_v_o_count); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_count = ((int)__pyx_t_2);

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":136
 *     elif o_count is not None:
 *         count = <int> o_count
 *         if count < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 "message: negative count %d" % count)
 */
    __pyx_t_10 = (__pyx_v_count < 0);
    if (__pyx_t_10) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":138
 *         if count < 0:
 *             raise ValueError(
 *                 "message: negative count %d" % count)             # <<<<<<<<<<<<<<
 *     elif bsize > 0:
 *         if btype == MPI_DATATYPE_NULL: raise ValueError(
 */
      __pyx_t_11 = PyInt_FromLong(__pyx_v_count); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_21), __pyx_t_11); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_6));
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_11));
      PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)__pyx_t_6));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
      __pyx_t_6 = 0;
      __pyx_t_6 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      {__pyx_filename = __pyx_f[15]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L23;
    }
    __pyx_L23:;
    goto __pyx_L17;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":139
 *             raise ValueError(
 *                 "message: negative count %d" % count)
 *     elif bsize > 0:             # <<<<<<<<<<<<<<
 *         if btype == MPI_DATATYPE_NULL: raise ValueError(
 *             "message: cannot guess count, "
 */
  __pyx_t_10 = (__pyx_v_bsize > 0);
  if (__pyx_t_10) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":140
 *                 "message: negative count %d" % count)
 *     elif bsize > 0:
 *         if btype == MPI_DATATYPE_NULL: raise ValueError(             # <<<<<<<<<<<<<<
 *             "message: cannot guess count, "
 *             "datatype is null")
 */
    __pyx_t_10 = (__pyx_v_btype == MPI_DATATYPE_NULL);
    if (__pyx_t_10) {
      __pyx_t_6 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_26), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      {__pyx_filename = __pyx_f[15]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L24;
    }
    __pyx_L24:;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":143
 *             "message: cannot guess count, "
 *             "datatype is null")
 *         CHKERR( MPI_Type_get_extent(btype, &lb, &extent) )             # <<<<<<<<<<<<<<
 *         if extent <= 0: raise ValueError(
 *             ("message: cannot guess count, "
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent(__pyx_v_btype, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":144
 *             "datatype is null")
 *         CHKERR( MPI_Type_get_extent(btype, &lb, &extent) )
 *         if extent <= 0: raise ValueError(             # <<<<<<<<<<<<<<
 *             ("message: cannot guess count, "
 *              "datatype extent %d (lb:%d, ub:%d)"
 */
    __pyx_t_10 = (__pyx_v_extent <= 0);
    if (__pyx_t_10) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":147
 *             ("message: cannot guess count, "
 *              "datatype extent %d (lb:%d, ub:%d)"
 *              ) % (extent, lb, lb+extent))             # <<<<<<<<<<<<<<
 *         if (bsize % extent) != 0: raise ValueError(
 *             ("message: cannot guess count, "
 */
      __pyx_t_6 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_extent); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_11 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_lb); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_7 = __Pyx_PyInt_to_py_MPI_Aint((__pyx_v_lb + __pyx_v_extent)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_5));
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_11);
      __Pyx_GIVEREF(__pyx_t_11);
      PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_7);
      __pyx_t_6 = 0;
      __pyx_t_11 = 0;
      __pyx_t_7 = 0;
      __pyx_t_7 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_27), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_7));
      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_5));
      PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_7));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_7));
      __pyx_t_7 = 0;
      __pyx_t_7 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
      __Pyx_Raise(__pyx_t_7, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      {__pyx_filename = __pyx_f[15]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L25;
    }
    __pyx_L25:;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":148
 *              "datatype extent %d (lb:%d, ub:%d)"
 *              ) % (extent, lb, lb+extent))
 *         if (bsize % extent) != 0: raise ValueError(             # <<<<<<<<<<<<<<
 *             ("message: cannot guess count, "
 *              "buffer length %d is not a multiple of "
 */
    __pyx_t_10 = ((__pyx_v_bsize % __pyx_v_extent) != 0);
    if (__pyx_t_10) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":152
 *              "buffer length %d is not a multiple of "
 *              "datatype extent %d (lb:%d, ub:%d)"
 *              ) % (bsize, extent, lb, lb+extent))             # <<<<<<<<<<<<<<
 *         if blocks < 1: blocks = 1
 *         if ((bsize // extent) % blocks) != 0: raise ValueError(
 */
      __pyx_t_7 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_bsize); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_5 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_extent); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_11 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_lb); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_6 = __Pyx_PyInt_to_py_MPI_Aint((__pyx_v_lb + __pyx_v_extent)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_12 = PyTuple_New(4); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_12));
      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_t_11);
      __Pyx_GIVEREF(__pyx_t_11);
      PyTuple_SET_ITEM(__pyx_t_12, 3, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      __pyx_t_7 = 0;
      __pyx_t_5 = 0;
      __pyx_t_11 = 0;
      __pyx_t_6 = 0;
      __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_28), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_6));
      __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
      __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_12));
      PyTuple_SET_ITEM(__pyx_t_12, 0, ((PyObject *)__pyx_t_6));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
      __pyx_t_6 = 0;
      __pyx_t_6 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      {__pyx_filename = __pyx_f[15]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L26;
    }
    __pyx_L26:;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":153
 *              "datatype extent %d (lb:%d, ub:%d)"
 *              ) % (bsize, extent, lb, lb+extent))
 *         if blocks < 1: blocks = 1             # <<<<<<<<<<<<<<
 *         if ((bsize // extent) % blocks) != 0: raise ValueError(
 *             ("message: cannot guess count, "
 */
    __pyx_t_10 = (__pyx_v_blocks < 1);
    if (__pyx_t_10) {
      __pyx_v_blocks = 1;
      goto __pyx_L27;
    }
    __pyx_L27:;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":154
 *              ) % (bsize, extent, lb, lb+extent))
 *         if blocks < 1: blocks = 1
 *         if ((bsize // extent) % blocks) != 0: raise ValueError(             # <<<<<<<<<<<<<<
 *             ("message: cannot guess count, "
 *              "number of datatype items %d is not a multiple of"
 */
    __pyx_t_10 = (((__pyx_v_bsize / __pyx_v_extent) % __pyx_v_blocks) != 0);
    if (__pyx_t_10) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":158
 *              "number of datatype items %d is not a multiple of"
 *              "the required number of blocks %d"
 *              ) %  (bsize//extent, blocks))             # <<<<<<<<<<<<<<
 *         count = <int> ((bsize // extent) // blocks) # XXX overflow?
 *     if o_count is None: o_count = count
 */
      __pyx_t_6 = __Pyx_PyInt_to_py_MPI_Aint((__pyx_v_bsize / __pyx_v_extent)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_12 = PyInt_FromLong(__pyx_v_blocks); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_11));
      PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_12);
      __Pyx_GIVEREF(__pyx_t_12);
      __pyx_t_6 = 0;
      __pyx_t_12 = 0;
      __pyx_t_12 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_29), ((PyObject *)__pyx_t_11)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_12));
      __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
      __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_11));
      PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)__pyx_t_12));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_12));
      __pyx_t_12 = 0;
      __pyx_t_12 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
      __Pyx_Raise(__pyx_t_12, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      {__pyx_filename = __pyx_f[15]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L28;
    }
    __pyx_L28:;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":159
 *              "the required number of blocks %d"
 *              ) %  (bsize//extent, blocks))
 *         count = <int> ((bsize // extent) // blocks) # XXX overflow?             # <<<<<<<<<<<<<<
 *     if o_count is None: o_count = count
 *     if o_displ is None: o_displ = displ
 */
    __pyx_v_count = ((int)((__pyx_v_bsize / __pyx_v_extent) / __pyx_v_blocks));
    goto __pyx_L17;
  }
  __pyx_L17:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":160
 *              ) %  (bsize//extent, blocks))
 *         count = <int> ((bsize // extent) // blocks) # XXX overflow?
 *     if o_count is None: o_count = count             # <<<<<<<<<<<<<<
 *     if o_displ is None: o_displ = displ
 *     m.count = o_count
 */
  __pyx_t_10 = (__pyx_v_o_count == Py_None);
  if (__pyx_t_10) {
    __pyx_t_12 = PyInt_FromLong(__pyx_v_count); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_v_o_count);
    __pyx_v_o_count = __pyx_t_12;
    __pyx_t_12 = 0;
    goto __pyx_L29;
  }
  __pyx_L29:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":161
 *         count = <int> ((bsize // extent) // blocks) # XXX overflow?
 *     if o_count is None: o_count = count
 *     if o_displ is None: o_displ = displ             # <<<<<<<<<<<<<<
 *     m.count = o_count
 *     m.displ = o_displ
 */
  __pyx_t_10 = (__pyx_v_o_displ == Py_None);
  if (__pyx_t_10) {
    __pyx_t_12 = PyInt_FromLong(__pyx_v_displ); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_v_o_displ);
    __pyx_v_o_displ = __pyx_t_12;
    __pyx_t_12 = 0;
    goto __pyx_L30;
  }
  __pyx_L30:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":162
 *     if o_count is None: o_count = count
 *     if o_displ is None: o_displ = displ
 *     m.count = o_count             # <<<<<<<<<<<<<<
 *     m.displ = o_displ
 *     # sanity-check zero-sized messages
 */
  __Pyx_INCREF(__pyx_v_o_count);
  __Pyx_GIVEREF(__pyx_v_o_count);
  __Pyx_GOTREF(__pyx_v_m->count);
  __Pyx_DECREF(__pyx_v_m->count);
  __pyx_v_m->count = __pyx_v_o_count;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":163
 *     if o_displ is None: o_displ = displ
 *     m.count = o_count
 *     m.displ = o_displ             # <<<<<<<<<<<<<<
 *     # sanity-check zero-sized messages
 *     if o_buf is None:
 */
  __Pyx_INCREF(__pyx_v_o_displ);
  __Pyx_GIVEREF(__pyx_v_o_displ);
  __Pyx_GOTREF(__pyx_v_m->displ);
  __Pyx_DECREF(__pyx_v_m->displ);
  __pyx_v_m->displ = __pyx_v_o_displ;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":165
 *     m.displ = o_displ
 *     # sanity-check zero-sized messages
 *     if o_buf is None:             # <<<<<<<<<<<<<<
 *         if count != 0:
 *             raise ValueError(
 */
  __pyx_t_10 = (__pyx_v_o_buf == Py_None);
  if (__pyx_t_10) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":166
 *     # sanity-check zero-sized messages
 *     if o_buf is None:
 *         if count != 0:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 "message: buffer is None but count is %d" % count)
 */
    __pyx_t_10 = (__pyx_v_count != 0);
    if (__pyx_t_10) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":168
 *         if count != 0:
 *             raise ValueError(
 *                 "message: buffer is None but count is %d" % count)             # <<<<<<<<<<<<<<
 *         if displ != 0:
 *             raise ValueError(
 */
      __pyx_t_12 = PyInt_FromLong(__pyx_v_count); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_11 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_30), __pyx_t_12); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_11));
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_12));
      PyTuple_SET_ITEM(__pyx_t_12, 0, ((PyObject *)__pyx_t_11));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_11));
      __pyx_t_11 = 0;
      __pyx_t_11 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
      __Pyx_Raise(__pyx_t_11, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      {__pyx_filename = __pyx_f[15]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L32;
    }
    __pyx_L32:;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":169
 *             raise ValueError(
 *                 "message: buffer is None but count is %d" % count)
 *         if displ != 0:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 "message: buffer is None but displacement is %d" % displ)
 */
    __pyx_t_10 = (__pyx_v_displ != 0);
    if (__pyx_t_10) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":171
 *         if displ != 0:
 *             raise ValueError(
 *                 "message: buffer is None but displacement is %d" % displ)             # <<<<<<<<<<<<<<
 *     # return collected message data
 *     _addr[0]  = <void*>(<char*>baddr + offset)
 */
      __pyx_t_11 = PyInt_FromLong(__pyx_v_displ); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_12 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_31), __pyx_t_11); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_12));
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_11));
      PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)__pyx_t_12));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_12));
      __pyx_t_12 = 0;
      __pyx_t_12 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
      __Pyx_Raise(__pyx_t_12, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      {__pyx_filename = __pyx_f[15]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L33;
    }
    __pyx_L33:;
    goto __pyx_L31;
  }
  __pyx_L31:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":173
 *                 "message: buffer is None but displacement is %d" % displ)
 *     # return collected message data
 *     _addr[0]  = <void*>(<char*>baddr + offset)             # <<<<<<<<<<<<<<
 *     _count[0] = count
 *     _type[0]  = btype
 */
  (__pyx_v__addr[0]) = ((void *)(((char *)__pyx_v_baddr) + __pyx_v_offset));

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":174
 *     # return collected message data
 *     _addr[0]  = <void*>(<char*>baddr + offset)
 *     _count[0] = count             # <<<<<<<<<<<<<<
 *     _type[0]  = btype
 *     return m
 */
  (__pyx_v__count[0]) = __pyx_v_count;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":175
 *     _addr[0]  = <void*>(<char*>baddr + offset)
 *     _count[0] = count
 *     _type[0]  = btype             # <<<<<<<<<<<<<<
 *     return m
 * 
 */
  (__pyx_v__type[0]) = __pyx_v_btype;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":176
 *     _count[0] = count
 *     _type[0]  = btype
 *     return m             # <<<<<<<<<<<<<<
 * 
 * cdef _p_message message_vector(object msg,
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_m));
  __pyx_r = __pyx_v_m;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_message *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("mpi4py.MPI.message_simple", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_o_buf);
  __Pyx_XDECREF(__pyx_v_o_count);
  __Pyx_XDECREF(__pyx_v_o_displ);
  __Pyx_XDECREF(__pyx_v_o_type);
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":178
 *     return m
 * 
 * cdef _p_message message_vector(object msg,             # <<<<<<<<<<<<<<
 *                                int readonly,
 *                                int rank,
 */

static struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_f_6mpi4py_3MPI_message_vector(PyObject *__pyx_v_msg, int __pyx_v_readonly, int __pyx_v_rank, int __pyx_v_blocks, void **__pyx_v__addr, int **__pyx_v__counts, int **__pyx_v__displs, MPI_Datatype *__pyx_v__type) {
  Py_ssize_t __pyx_v_nargs;
  PyObject *__pyx_v_o_buf = 0;
  PyObject *__pyx_v_o_counts = 0;
  PyObject *__pyx_v_o_displs = 0;
  PyObject *__pyx_v_o_type = 0;
  void *__pyx_v_baddr;
  MPI_Aint __pyx_v_bsize;
  MPI_Datatype __pyx_v_btype;
  struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_v_m = 0;
  int *__pyx_v_counts;
  int *__pyx_v_displs;
  int __pyx_v_i;
  int __pyx_v_val;
  MPI_Aint __pyx_v_extent;
  MPI_Aint __pyx_v_lb;
  MPI_Aint __pyx_v_asize;
  MPI_Aint __pyx_v_aval;
  struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *(*__pyx_t_8)(PyObject *);
  int __pyx_t_9;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_vector");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":189
 *                                ):
 *     # special-case PROC_NULL target rank
 *     if rank == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         _addr[0]   = NULL
 *         _counts[0] = NULL
 */
  __pyx_t_1 = (__pyx_v_rank == MPI_PROC_NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":190
 *     # special-case PROC_NULL target rank
 *     if rank == MPI_PROC_NULL:
 *         _addr[0]   = NULL             # <<<<<<<<<<<<<<
 *         _counts[0] = NULL
 *         _displs[0] = NULL
 */
    (__pyx_v__addr[0]) = NULL;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":191
 *     if rank == MPI_PROC_NULL:
 *         _addr[0]   = NULL
 *         _counts[0] = NULL             # <<<<<<<<<<<<<<
 *         _displs[0] = NULL
 *         _type[0]   = MPI_BYTE
 */
    (__pyx_v__counts[0]) = NULL;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":192
 *         _addr[0]   = NULL
 *         _counts[0] = NULL
 *         _displs[0] = NULL             # <<<<<<<<<<<<<<
 *         _type[0]   = MPI_BYTE
 *         return None
 */
    (__pyx_v__displs[0]) = NULL;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":193
 *         _counts[0] = NULL
 *         _displs[0] = NULL
 *         _type[0]   = MPI_BYTE             # <<<<<<<<<<<<<<
 *         return None
 *     # unpack message list/tuple
 */
    (__pyx_v__type[0]) = MPI_BYTE;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":194
 *         _displs[0] = NULL
 *         _type[0]   = MPI_BYTE
 *         return None             # <<<<<<<<<<<<<<
 *     # unpack message list/tuple
 *     cdef Py_ssize_t nargs = 0
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(Py_None);
    __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_message *)Py_None);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":196
 *         return None
 *     # unpack message list/tuple
 *     cdef Py_ssize_t nargs = 0             # <<<<<<<<<<<<<<
 *     cdef object o_buf    = None
 *     cdef object o_counts = None
 */
  __pyx_v_nargs = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":197
 *     # unpack message list/tuple
 *     cdef Py_ssize_t nargs = 0
 *     cdef object o_buf    = None             # <<<<<<<<<<<<<<
 *     cdef object o_counts = None
 *     cdef object o_displs = None
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_o_buf = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":198
 *     cdef Py_ssize_t nargs = 0
 *     cdef object o_buf    = None
 *     cdef object o_counts = None             # <<<<<<<<<<<<<<
 *     cdef object o_displs = None
 *     cdef object o_type   = None
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_o_counts = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":199
 *     cdef object o_buf    = None
 *     cdef object o_counts = None
 *     cdef object o_displs = None             # <<<<<<<<<<<<<<
 *     cdef object o_type   = None
 *     if is_buffer(msg):
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_o_displs = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":200
 *     cdef object o_counts = None
 *     cdef object o_displs = None
 *     cdef object o_type   = None             # <<<<<<<<<<<<<<
 *     if is_buffer(msg):
 *         o_buf = msg
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_o_type = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":201
 *     cdef object o_displs = None
 *     cdef object o_type   = None
 *     if is_buffer(msg):             # <<<<<<<<<<<<<<
 *         o_buf = msg
 *     elif is_list(msg) or is_tuple(msg):
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_is_buffer(__pyx_v_msg);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":202
 *     cdef object o_type   = None
 *     if is_buffer(msg):
 *         o_buf = msg             # <<<<<<<<<<<<<<
 *     elif is_list(msg) or is_tuple(msg):
 *         nargs = len(msg)
 */
    __Pyx_INCREF(__pyx_v_msg);
    __Pyx_DECREF(__pyx_v_o_buf);
    __pyx_v_o_buf = __pyx_v_msg;
    goto __pyx_L4;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":203
 *     if is_buffer(msg):
 *         o_buf = msg
 *     elif is_list(msg) or is_tuple(msg):             # <<<<<<<<<<<<<<
 *         nargs = len(msg)
 *         if nargs == 2:
 */
  __pyx_t_2 = PyList_Check(__pyx_v_msg);
  if (!__pyx_t_2) {
    __pyx_t_3 = PyTuple_Check(__pyx_v_msg);
    __pyx_t_1 = __pyx_t_3;
  } else {
    __pyx_t_1 = __pyx_t_2;
  }
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":204
 *         o_buf = msg
 *     elif is_list(msg) or is_tuple(msg):
 *         nargs = len(msg)             # <<<<<<<<<<<<<<
 *         if nargs == 2:
 *             (o_buf, o_counts) = msg
 */
    __pyx_t_4 = PyObject_Length(__pyx_v_msg); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_nargs = __pyx_t_4;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":216
 *             if is_tuple(o_counts):
 *                 (o_counts, o_displs) = o_counts
 *         elif nargs == 4:             # <<<<<<<<<<<<<<
 *             (o_buf, o_counts, o_displs, o_type) = msg
 *         else:
 */
    switch (__pyx_v_nargs) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":205
 *     elif is_list(msg) or is_tuple(msg):
 *         nargs = len(msg)
 *         if nargs == 2:             # <<<<<<<<<<<<<<
 *             (o_buf, o_counts) = msg
 *             if (isinstance(o_counts, Datatype) or
 */
      case 2:

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":206
 *         nargs = len(msg)
 *         if nargs == 2:
 *             (o_buf, o_counts) = msg             # <<<<<<<<<<<<<<
 *             if (isinstance(o_counts, Datatype) or
 *                 isinstance(o_counts, str)):
 */
      if ((likely(PyTuple_CheckExact(__pyx_v_msg))) || (PyList_CheckExact(__pyx_v_msg))) {
        PyObject* sequence = __pyx_v_msg;
        if (likely(PyTuple_CheckExact(sequence))) {
          if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
            if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
            else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
            {__pyx_filename = __pyx_f[15]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
            if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
            else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
            {__pyx_filename = __pyx_f[15]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
      } else {
        Py_ssize_t index = -1;
        __pyx_t_7 = PyObject_GetIter(__pyx_v_msg); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
        index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_5);
        index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L6_unpacking_done;
        __pyx_L5_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
        if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[15]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_L6_unpacking_done:;
      }
      __Pyx_DECREF(__pyx_v_o_buf);
      __pyx_v_o_buf = __pyx_t_5;
      __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_o_counts);
      __pyx_v_o_counts = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":207
 *         if nargs == 2:
 *             (o_buf, o_counts) = msg
 *             if (isinstance(o_counts, Datatype) or             # <<<<<<<<<<<<<<
 *                 isinstance(o_counts, str)):
 *                 (o_counts, o_type) = None, o_counts
 */
      __pyx_t_6 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype));
      __Pyx_INCREF(__pyx_t_6);
      __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_o_counts, __pyx_t_6); 
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (!__pyx_t_1) {

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":208
 *             (o_buf, o_counts) = msg
 *             if (isinstance(o_counts, Datatype) or
 *                 isinstance(o_counts, str)):             # <<<<<<<<<<<<<<
 *                 (o_counts, o_type) = None, o_counts
 *             elif is_tuple(o_counts):
 */
        __pyx_t_6 = ((PyObject *)((PyObject*)(&PyString_Type)));
        __Pyx_INCREF(__pyx_t_6);
        __pyx_t_9 = __Pyx_TypeCheck(__pyx_v_o_counts, __pyx_t_6); 
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_10 = __pyx_t_9;
      } else {
        __pyx_t_10 = __pyx_t_1;
      }
      if (__pyx_t_10) {

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":209
 *             if (isinstance(o_counts, Datatype) or
 *                 isinstance(o_counts, str)):
 *                 (o_counts, o_type) = None, o_counts             # <<<<<<<<<<<<<<
 *             elif is_tuple(o_counts):
 *                 (o_counts, o_displs) = o_counts
 */
        __pyx_t_6 = Py_None;
        __Pyx_INCREF(__pyx_t_6);
        __pyx_t_5 = __pyx_v_o_counts;
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_v_o_counts);
        __pyx_v_o_counts = __pyx_t_6;
        __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_v_o_type);
        __pyx_v_o_type = __pyx_t_5;
        __pyx_t_5 = 0;
        goto __pyx_L7;
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":210
 *                 isinstance(o_counts, str)):
 *                 (o_counts, o_type) = None, o_counts
 *             elif is_tuple(o_counts):             # <<<<<<<<<<<<<<
 *                 (o_counts, o_displs) = o_counts
 *         elif nargs == 3:
 */
      __pyx_t_2 = PyTuple_Check(__pyx_v_o_counts);
      if (__pyx_t_2) {

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":211
 *                 (o_counts, o_type) = None, o_counts
 *             elif is_tuple(o_counts):
 *                 (o_counts, o_displs) = o_counts             # <<<<<<<<<<<<<<
 *         elif nargs == 3:
 *             (o_buf, o_counts, o_type) = msg
 */
        if ((likely(PyTuple_CheckExact(__pyx_v_o_counts))) || (PyList_CheckExact(__pyx_v_o_counts))) {
          PyObject* sequence = __pyx_v_o_counts;
          if (likely(PyTuple_CheckExact(sequence))) {
            if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
              if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
              else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
              {__pyx_filename = __pyx_f[15]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
              if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
              else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
              {__pyx_filename = __pyx_f[15]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
        } else {
          Py_ssize_t index = -1;
          __pyx_t_7 = PyObject_GetIter(__pyx_v_o_counts); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
          index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L8_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_5);
          index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L8_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_6);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          goto __pyx_L9_unpacking_done;
          __pyx_L8_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
          if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
          {__pyx_filename = __pyx_f[15]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __pyx_L9_unpacking_done:;
        }
        __Pyx_DECREF(__pyx_v_o_counts);
        __pyx_v_o_counts = __pyx_t_5;
        __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_v_o_displs);
        __pyx_v_o_displs = __pyx_t_6;
        __pyx_t_6 = 0;
        goto __pyx_L7;
      }
      __pyx_L7:;
      break;

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":212
 *             elif is_tuple(o_counts):
 *                 (o_counts, o_displs) = o_counts
 *         elif nargs == 3:             # <<<<<<<<<<<<<<
 *             (o_buf, o_counts, o_type) = msg
 *             if is_tuple(o_counts):
 */
      case 3:

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":213
 *                 (o_counts, o_displs) = o_counts
 *         elif nargs == 3:
 *             (o_buf, o_counts, o_type) = msg             # <<<<<<<<<<<<<<
 *             if is_tuple(o_counts):
 *                 (o_counts, o_displs) = o_counts
 */
      if ((likely(PyTuple_CheckExact(__pyx_v_msg))) || (PyList_CheckExact(__pyx_v_msg))) {
        PyObject* sequence = __pyx_v_msg;
        if (likely(PyTuple_CheckExact(sequence))) {
          if (unlikely(PyTuple_GET_SIZE(sequence) != 3)) {
            if (PyTuple_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3);
            else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
            {__pyx_filename = __pyx_f[15]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 2); 
        } else {
          if (unlikely(PyList_GET_SIZE(sequence) != 3)) {
            if (PyList_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3);
            else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
            {__pyx_filename = __pyx_f[15]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_6 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
          __pyx_t_7 = PyList_GET_ITEM(sequence, 2); 
        }
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_7);
      } else {
        Py_ssize_t index = -1;
        __pyx_t_11 = PyObject_GetIter(__pyx_v_msg); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_t_8 = Py_TYPE(__pyx_t_11)->tp_iternext;
        index = 0; __pyx_t_6 = __pyx_t_8(__pyx_t_11); if (unlikely(!__pyx_t_6)) goto __pyx_L10_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        index = 1; __pyx_t_5 = __pyx_t_8(__pyx_t_11); if (unlikely(!__pyx_t_5)) goto __pyx_L10_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_5);
        index = 2; __pyx_t_7 = __pyx_t_8(__pyx_t_11); if (unlikely(!__pyx_t_7)) goto __pyx_L10_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_11), 3) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        goto __pyx_L11_unpacking_done;
        __pyx_L10_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
        if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[15]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_L11_unpacking_done:;
      }
      __Pyx_DECREF(__pyx_v_o_buf);
      __pyx_v_o_buf = __pyx_t_6;
      __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_v_o_counts);
      __pyx_v_o_counts = __pyx_t_5;
      __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_o_type);
      __pyx_v_o_type = __pyx_t_7;
      __pyx_t_7 = 0;

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":214
 *         elif nargs == 3:
 *             (o_buf, o_counts, o_type) = msg
 *             if is_tuple(o_counts):             # <<<<<<<<<<<<<<
 *                 (o_counts, o_displs) = o_counts
 *         elif nargs == 4:
 */
      __pyx_t_2 = PyTuple_Check(__pyx_v_o_counts);
      if (__pyx_t_2) {

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":215
 *             (o_buf, o_counts, o_type) = msg
 *             if is_tuple(o_counts):
 *                 (o_counts, o_displs) = o_counts             # <<<<<<<<<<<<<<
 *         elif nargs == 4:
 *             (o_buf, o_counts, o_displs, o_type) = msg
 */
        if ((likely(PyTuple_CheckExact(__pyx_v_o_counts))) || (PyList_CheckExact(__pyx_v_o_counts))) {
          PyObject* sequence = __pyx_v_o_counts;
          if (likely(PyTuple_CheckExact(sequence))) {
            if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
              if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
              else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
              {__pyx_filename = __pyx_f[15]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
              if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
              else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
              {__pyx_filename = __pyx_f[15]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_5);
        } else {
          Py_ssize_t index = -1;
          __pyx_t_6 = PyObject_GetIter(__pyx_v_o_counts); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_8 = Py_TYPE(__pyx_t_6)->tp_iternext;
          index = 0; __pyx_t_7 = __pyx_t_8(__pyx_t_6); if (unlikely(!__pyx_t_7)) goto __pyx_L13_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_7);
          index = 1; __pyx_t_5 = __pyx_t_8(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L13_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_5);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          goto __pyx_L14_unpacking_done;
          __pyx_L13_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
          if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
          {__pyx_filename = __pyx_f[15]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __pyx_L14_unpacking_done:;
        }
        __Pyx_DECREF(__pyx_v_o_counts);
        __pyx_v_o_counts = __pyx_t_7;
        __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_v_o_displs);
        __pyx_v_o_displs = __pyx_t_5;
        __pyx_t_5 = 0;
        goto __pyx_L12;
      }
      __pyx_L12:;
      break;

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":216
 *             if is_tuple(o_counts):
 *                 (o_counts, o_displs) = o_counts
 *         elif nargs == 4:             # <<<<<<<<<<<<<<
 *             (o_buf, o_counts, o_displs, o_type) = msg
 *         else:
 */
      case 4:

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":217
 *                 (o_counts, o_displs) = o_counts
 *         elif nargs == 4:
 *             (o_buf, o_counts, o_displs, o_type) = msg             # <<<<<<<<<<<<<<
 *         else:
 *             raise ValueError("message: expecting 2 to 4 items")
 */
      if ((likely(PyTuple_CheckExact(__pyx_v_msg))) || (PyList_CheckExact(__pyx_v_msg))) {
        PyObject* sequence = __pyx_v_msg;
        if (likely(PyTuple_CheckExact(sequence))) {
          if (unlikely(PyTuple_GET_SIZE(sequence) != 4)) {
            if (PyTuple_GET_SIZE(sequence) > 4) __Pyx_RaiseTooManyValuesError(4);
            else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
            {__pyx_filename = __pyx_f[15]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2); 
          __pyx_t_11 = PyTuple_GET_ITEM(sequence, 3); 
        } else {
          if (unlikely(PyList_GET_SIZE(sequence) != 4)) {
            if (PyList_GET_SIZE(sequence) > 4) __Pyx_RaiseTooManyValuesError(4);
            else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
            {__pyx_filename = __pyx_f[15]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 2); 
          __pyx_t_11 = PyList_GET_ITEM(sequence, 3); 
        }
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_11);
      } else {
        Py_ssize_t index = -1;
        __pyx_t_12 = PyObject_GetIter(__pyx_v_msg); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_8 = Py_TYPE(__pyx_t_12)->tp_iternext;
        index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_12); if (unlikely(!__pyx_t_5)) goto __pyx_L15_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_5);
        index = 1; __pyx_t_7 = __pyx_t_8(__pyx_t_12); if (unlikely(!__pyx_t_7)) goto __pyx_L15_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        index = 2; __pyx_t_6 = __pyx_t_8(__pyx_t_12); if (unlikely(!__pyx_t_6)) goto __pyx_L15_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        index = 3; __pyx_t_11 = __pyx_t_8(__pyx_t_12); if (unlikely(!__pyx_t_11)) goto __pyx_L15_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_11);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_12), 4) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        goto __pyx_L16_unpacking_done;
        __pyx_L15_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
        if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[15]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_L16_unpacking_done:;
      }
      __Pyx_DECREF(__pyx_v_o_buf);
      __pyx_v_o_buf = __pyx_t_5;
      __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_o_counts);
      __pyx_v_o_counts = __pyx_t_7;
      __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_v_o_displs);
      __pyx_v_o_displs = __pyx_t_6;
      __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_v_o_type);
      __pyx_v_o_type = __pyx_t_11;
      __pyx_t_11 = 0;
      break;
      default:

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":219
 *             (o_buf, o_counts, o_displs, o_type) = msg
 *         else:
 *             raise ValueError("message: expecting 2 to 4 items")             # <<<<<<<<<<<<<<
 *     else:
 *         raise TypeError("message: expecting buffer or list/tuple")
 */
      __pyx_t_11 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_32), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_Raise(__pyx_t_11, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      {__pyx_filename = __pyx_f[15]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      break;
    }
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":221
 *             raise ValueError("message: expecting 2 to 4 items")
 *     else:
 *         raise TypeError("message: expecting buffer or list/tuple")             # <<<<<<<<<<<<<<
 *     # buffer: address, length, and datatype
 *     cdef void *baddr = NULL
 */
    __pyx_t_11 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_33), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_Raise(__pyx_t_11, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    {__pyx_filename = __pyx_f[15]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":223
 *         raise TypeError("message: expecting buffer or list/tuple")
 *     # buffer: address, length, and datatype
 *     cdef void *baddr = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint bsize = 0
 *     cdef MPI_Datatype btype = MPI_DATATYPE_NULL
 */
  __pyx_v_baddr = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":224
 *     # buffer: address, length, and datatype
 *     cdef void *baddr = NULL
 *     cdef MPI_Aint bsize = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype btype = MPI_DATATYPE_NULL
 *     cdef _p_message m = message_basic(o_buf, o_type, readonly,
 */
  __pyx_v_bsize = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":225
 *     cdef void *baddr = NULL
 *     cdef MPI_Aint bsize = 0
 *     cdef MPI_Datatype btype = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *     cdef _p_message m = message_basic(o_buf, o_type, readonly,
 *                                       &baddr, &bsize, &btype)
 */
  __pyx_v_btype = MPI_DATATYPE_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":227
 *     cdef MPI_Datatype btype = MPI_DATATYPE_NULL
 *     cdef _p_message m = message_basic(o_buf, o_type, readonly,
 *                                       &baddr, &bsize, &btype)             # <<<<<<<<<<<<<<
 *     # counts and displacements
 *     cdef int *counts = NULL
 */
  __pyx_t_11 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_basic(__pyx_v_o_buf, __pyx_v_o_type, __pyx_v_readonly, (&__pyx_v_baddr), (&__pyx_v_bsize), (&__pyx_v_btype))); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_message *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":229
 *                                       &baddr, &bsize, &btype)
 *     # counts and displacements
 *     cdef int *counts = NULL             # <<<<<<<<<<<<<<
 *     cdef int *displs = NULL
 *     cdef int i=0, val=0
 */
  __pyx_v_counts = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":230
 *     # counts and displacements
 *     cdef int *counts = NULL
 *     cdef int *displs = NULL             # <<<<<<<<<<<<<<
 *     cdef int i=0, val=0
 *     cdef MPI_Aint extent=0, lb=0
 */
  __pyx_v_displs = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":231
 *     cdef int *counts = NULL
 *     cdef int *displs = NULL
 *     cdef int i=0, val=0             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint extent=0, lb=0
 *     cdef MPI_Aint asize=0, aval=0
 */
  __pyx_v_i = 0;
  __pyx_v_val = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":232
 *     cdef int *displs = NULL
 *     cdef int i=0, val=0
 *     cdef MPI_Aint extent=0, lb=0             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint asize=0, aval=0
 *     if o_counts is None:
 */
  __pyx_v_extent = 0;
  __pyx_v_lb = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":233
 *     cdef int i=0, val=0
 *     cdef MPI_Aint extent=0, lb=0
 *     cdef MPI_Aint asize=0, aval=0             # <<<<<<<<<<<<<<
 *     if o_counts is None:
 *         if bsize > 0:
 */
  __pyx_v_asize = 0;
  __pyx_v_aval = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":234
 *     cdef MPI_Aint extent=0, lb=0
 *     cdef MPI_Aint asize=0, aval=0
 *     if o_counts is None:             # <<<<<<<<<<<<<<
 *         if bsize > 0:
 *             if btype == MPI_DATATYPE_NULL:
 */
  __pyx_t_10 = (__pyx_v_o_counts == Py_None);
  if (__pyx_t_10) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":235
 *     cdef MPI_Aint asize=0, aval=0
 *     if o_counts is None:
 *         if bsize > 0:             # <<<<<<<<<<<<<<
 *             if btype == MPI_DATATYPE_NULL:
 *                 raise ValueError(
 */
    __pyx_t_10 = (__pyx_v_bsize > 0);
    if (__pyx_t_10) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":236
 *     if o_counts is None:
 *         if bsize > 0:
 *             if btype == MPI_DATATYPE_NULL:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     "message: cannot guess count, "
 */
      __pyx_t_10 = (__pyx_v_btype == MPI_DATATYPE_NULL);
      if (__pyx_t_10) {

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":237
 *         if bsize > 0:
 *             if btype == MPI_DATATYPE_NULL:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     "message: cannot guess count, "
 *                     "datatype is null")
 */
        __pyx_t_11 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_34), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_Raise(__pyx_t_11, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        {__pyx_filename = __pyx_f[15]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L19;
      }
      __pyx_L19:;

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":240
 *                     "message: cannot guess count, "
 *                     "datatype is null")
 *             CHKERR( MPI_Type_get_extent(btype, &lb, &extent) )             # <<<<<<<<<<<<<<
 *             if extent <= 0: raise ValueError(
 *                 ("message: cannot guess count, "
 */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent(__pyx_v_btype, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":241
 *                     "datatype is null")
 *             CHKERR( MPI_Type_get_extent(btype, &lb, &extent) )
 *             if extent <= 0: raise ValueError(             # <<<<<<<<<<<<<<
 *                 ("message: cannot guess count, "
 *                  "datatype extent %d (lb:%d, ub:%d)"
 */
      __pyx_t_10 = (__pyx_v_extent <= 0);
      if (__pyx_t_10) {

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":244
 *                 ("message: cannot guess count, "
 *                  "datatype extent %d (lb:%d, ub:%d)"
 *                  ) % (extent, lb, lb+extent))             # <<<<<<<<<<<<<<
 *             if (bsize % extent) != 0: raise ValueError(
 *                 ("message: cannot guess count, "
 */
        __pyx_t_11 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_extent); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_t_6 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_lb); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyInt_to_py_MPI_Aint((__pyx_v_lb + __pyx_v_extent)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_5));
        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_11);
        __Pyx_GIVEREF(__pyx_t_11);
        PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_7);
        __pyx_t_11 = 0;
        __pyx_t_6 = 0;
        __pyx_t_7 = 0;
        __pyx_t_7 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_27), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_7));
        __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_5));
        PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_7));
        __Pyx_GIVEREF(((PyObject *)__pyx_t_7));
        __pyx_t_7 = 0;
        __pyx_t_7 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
        __Pyx_Raise(__pyx_t_7, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        {__pyx_filename = __pyx_f[15]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L20;
      }
      __pyx_L20:;

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":245
 *                  "datatype extent %d (lb:%d, ub:%d)"
 *                  ) % (extent, lb, lb+extent))
 *             if (bsize % extent) != 0: raise ValueError(             # <<<<<<<<<<<<<<
 *                 ("message: cannot guess count, "
 *                  "buffer length %d is not a multiple of "
 */
      __pyx_t_10 = ((__pyx_v_bsize % __pyx_v_extent) != 0);
      if (__pyx_t_10) {

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":249
 *                  "buffer length %d is not a multiple of "
 *                  "datatype extent %d (lb:%d, ub:%d)"
 *                  ) % (bsize, extent, lb, lb+extent))             # <<<<<<<<<<<<<<
 *             asize = bsize // extent
 *         o_counts = newarray_int(blocks, &counts)
 */
        __pyx_t_7 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_bsize); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_5 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_extent); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_lb); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_11 = __Pyx_PyInt_to_py_MPI_Aint((__pyx_v_lb + __pyx_v_extent)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_t_12 = PyTuple_New(4); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_12));
        PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_12, 3, __pyx_t_11);
        __Pyx_GIVEREF(__pyx_t_11);
        __pyx_t_7 = 0;
        __pyx_t_5 = 0;
        __pyx_t_6 = 0;
        __pyx_t_11 = 0;
        __pyx_t_11 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_28), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_11));
        __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
        __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_12));
        PyTuple_SET_ITEM(__pyx_t_12, 0, ((PyObject *)__pyx_t_11));
        __Pyx_GIVEREF(((PyObject *)__pyx_t_11));
        __pyx_t_11 = 0;
        __pyx_t_11 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
        __Pyx_Raise(__pyx_t_11, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        {__pyx_filename = __pyx_f[15]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L21;
      }
      __pyx_L21:;

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":250
 *                  "datatype extent %d (lb:%d, ub:%d)"
 *                  ) % (bsize, extent, lb, lb+extent))
 *             asize = bsize // extent             # <<<<<<<<<<<<<<
 *         o_counts = newarray_int(blocks, &counts)
 *         for i from 0 <= i < blocks:
 */
      __pyx_v_asize = (__pyx_v_bsize / __pyx_v_extent);
      goto __pyx_L18;
    }
    __pyx_L18:;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":251
 *                  ) % (bsize, extent, lb, lb+extent))
 *             asize = bsize // extent
 *         o_counts = newarray_int(blocks, &counts)             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < blocks:
 *             aval = (asize // blocks) + (asize % blocks > i)
 */
    __pyx_t_11 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_blocks, (&__pyx_v_counts)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_v_o_counts);
    __pyx_v_o_counts = __pyx_t_11;
    __pyx_t_11 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":252
 *             asize = bsize // extent
 *         o_counts = newarray_int(blocks, &counts)
 *         for i from 0 <= i < blocks:             # <<<<<<<<<<<<<<
 *             aval = (asize // blocks) + (asize % blocks > i)
 *             counts[i] = <int> aval # XXX overflow?
 */
    __pyx_t_2 = __pyx_v_blocks;
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":253
 *         o_counts = newarray_int(blocks, &counts)
 *         for i from 0 <= i < blocks:
 *             aval = (asize // blocks) + (asize % blocks > i)             # <<<<<<<<<<<<<<
 *             counts[i] = <int> aval # XXX overflow?
 *     elif is_int(o_counts):
 */
      __pyx_v_aval = ((__pyx_v_asize / __pyx_v_blocks) + ((__pyx_v_asize % __pyx_v_blocks) > __pyx_v_i));

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":254
 *         for i from 0 <= i < blocks:
 *             aval = (asize // blocks) + (asize % blocks > i)
 *             counts[i] = <int> aval # XXX overflow?             # <<<<<<<<<<<<<<
 *     elif is_int(o_counts):
 *         val = <int> o_counts
 */
      (__pyx_v_counts[__pyx_v_i]) = ((int)__pyx_v_aval);
    }
    goto __pyx_L17;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":255
 *             aval = (asize // blocks) + (asize % blocks > i)
 *             counts[i] = <int> aval # XXX overflow?
 *     elif is_int(o_counts):             # <<<<<<<<<<<<<<
 *         val = <int> o_counts
 *         o_counts = newarray_int(blocks, &counts)
 */
  __pyx_t_2 = PyInt_Check(__pyx_v_o_counts);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":256
 *             counts[i] = <int> aval # XXX overflow?
 *     elif is_int(o_counts):
 *         val = <int> o_counts             # <<<<<<<<<<<<<<
 *         o_counts = newarray_int(blocks, &counts)
 *         for i from 0 <= i < blocks:
 */
    __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_v_o_counts); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_val = ((int)__pyx_t_2);

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":257
 *     elif is_int(o_counts):
 *         val = <int> o_counts
 *         o_counts = newarray_int(blocks, &counts)             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < blocks:
 *             counts[i] = val
 */
    __pyx_t_11 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_blocks, (&__pyx_v_counts)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_v_o_counts);
    __pyx_v_o_counts = __pyx_t_11;
    __pyx_t_11 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":258
 *         val = <int> o_counts
 *         o_counts = newarray_int(blocks, &counts)
 *         for i from 0 <= i < blocks:             # <<<<<<<<<<<<<<
 *             counts[i] = val
 *     else:
 */
    __pyx_t_2 = __pyx_v_blocks;
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":259
 *         o_counts = newarray_int(blocks, &counts)
 *         for i from 0 <= i < blocks:
 *             counts[i] = val             # <<<<<<<<<<<<<<
 *     else:
 *         o_counts = chkarray_int(o_counts, blocks, &counts)
 */
      (__pyx_v_counts[__pyx_v_i]) = __pyx_v_val;
    }
    goto __pyx_L17;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":261
 *             counts[i] = val
 *     else:
 *         o_counts = chkarray_int(o_counts, blocks, &counts)             # <<<<<<<<<<<<<<
 *     if o_displs is None: # contiguous
 *         val = 0
 */
    __pyx_t_11 = __pyx_f_6mpi4py_3MPI_chkarray_int(__pyx_v_o_counts, __pyx_v_blocks, (&__pyx_v_counts)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_v_o_counts);
    __pyx_v_o_counts = __pyx_t_11;
    __pyx_t_11 = 0;
  }
  __pyx_L17:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":262
 *     else:
 *         o_counts = chkarray_int(o_counts, blocks, &counts)
 *     if o_displs is None: # contiguous             # <<<<<<<<<<<<<<
 *         val = 0
 *         o_displs = newarray_int(blocks, &displs)
 */
  __pyx_t_10 = (__pyx_v_o_displs == Py_None);
  if (__pyx_t_10) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":263
 *         o_counts = chkarray_int(o_counts, blocks, &counts)
 *     if o_displs is None: # contiguous
 *         val = 0             # <<<<<<<<<<<<<<
 *         o_displs = newarray_int(blocks, &displs)
 *         for i from 0 <= i < blocks:
 */
    __pyx_v_val = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":264
 *     if o_displs is None: # contiguous
 *         val = 0
 *         o_displs = newarray_int(blocks, &displs)             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < blocks:
 *             displs[i] = val
 */
    __pyx_t_11 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_blocks, (&__pyx_v_displs)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_v_o_displs);
    __pyx_v_o_displs = __pyx_t_11;
    __pyx_t_11 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":265
 *         val = 0
 *         o_displs = newarray_int(blocks, &displs)
 *         for i from 0 <= i < blocks:             # <<<<<<<<<<<<<<
 *             displs[i] = val
 *             val += counts[i]
 */
    __pyx_t_2 = __pyx_v_blocks;
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":266
 *         o_displs = newarray_int(blocks, &displs)
 *         for i from 0 <= i < blocks:
 *             displs[i] = val             # <<<<<<<<<<<<<<
 *             val += counts[i]
 *     elif is_int(o_displs): # strided
 */
      (__pyx_v_displs[__pyx_v_i]) = __pyx_v_val;

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":267
 *         for i from 0 <= i < blocks:
 *             displs[i] = val
 *             val += counts[i]             # <<<<<<<<<<<<<<
 *     elif is_int(o_displs): # strided
 *         val = <int> o_displs
 */
      __pyx_v_val = (__pyx_v_val + (__pyx_v_counts[__pyx_v_i]));
    }
    goto __pyx_L26;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":268
 *             displs[i] = val
 *             val += counts[i]
 *     elif is_int(o_displs): # strided             # <<<<<<<<<<<<<<
 *         val = <int> o_displs
 *         o_displs = newarray_int(blocks, &displs)
 */
  __pyx_t_2 = PyInt_Check(__pyx_v_o_displs);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":269
 *             val += counts[i]
 *     elif is_int(o_displs): # strided
 *         val = <int> o_displs             # <<<<<<<<<<<<<<
 *         o_displs = newarray_int(blocks, &displs)
 *         for i from 0 <= i < blocks:
 */
    __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_v_o_displs); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_val = ((int)__pyx_t_2);

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":270
 *     elif is_int(o_displs): # strided
 *         val = <int> o_displs
 *         o_displs = newarray_int(blocks, &displs)             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < blocks:
 *             displs[i] = val * i
 */
    __pyx_t_11 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_blocks, (&__pyx_v_displs)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_v_o_displs);
    __pyx_v_o_displs = __pyx_t_11;
    __pyx_t_11 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":271
 *         val = <int> o_displs
 *         o_displs = newarray_int(blocks, &displs)
 *         for i from 0 <= i < blocks:             # <<<<<<<<<<<<<<
 *             displs[i] = val * i
 *     else: # general
 */
    __pyx_t_2 = __pyx_v_blocks;
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":272
 *         o_displs = newarray_int(blocks, &displs)
 *         for i from 0 <= i < blocks:
 *             displs[i] = val * i             # <<<<<<<<<<<<<<
 *     else: # general
 *         o_displs = chkarray_int(o_displs, blocks, &displs)
 */
      (__pyx_v_displs[__pyx_v_i]) = (__pyx_v_val * __pyx_v_i);
    }
    goto __pyx_L26;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":274
 *             displs[i] = val * i
 *     else: # general
 *         o_displs = chkarray_int(o_displs, blocks, &displs)             # <<<<<<<<<<<<<<
 *     m.count = o_counts
 *     m.displ = o_displs
 */
    __pyx_t_11 = __pyx_f_6mpi4py_3MPI_chkarray_int(__pyx_v_o_displs, __pyx_v_blocks, (&__pyx_v_displs)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_v_o_displs);
    __pyx_v_o_displs = __pyx_t_11;
    __pyx_t_11 = 0;
  }
  __pyx_L26:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":275
 *     else: # general
 *         o_displs = chkarray_int(o_displs, blocks, &displs)
 *     m.count = o_counts             # <<<<<<<<<<<<<<
 *     m.displ = o_displs
 *     # return collected message data
 */
  __Pyx_INCREF(__pyx_v_o_counts);
  __Pyx_GIVEREF(__pyx_v_o_counts);
  __Pyx_GOTREF(__pyx_v_m->count);
  __Pyx_DECREF(__pyx_v_m->count);
  __pyx_v_m->count = __pyx_v_o_counts;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":276
 *         o_displs = chkarray_int(o_displs, blocks, &displs)
 *     m.count = o_counts
 *     m.displ = o_displs             # <<<<<<<<<<<<<<
 *     # return collected message data
 *     _addr[0]   = baddr
 */
  __Pyx_INCREF(__pyx_v_o_displs);
  __Pyx_GIVEREF(__pyx_v_o_displs);
  __Pyx_GOTREF(__pyx_v_m->displ);
  __Pyx_DECREF(__pyx_v_m->displ);
  __pyx_v_m->displ = __pyx_v_o_displs;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":278
 *     m.displ = o_displs
 *     # return collected message data
 *     _addr[0]   = baddr             # <<<<<<<<<<<<<<
 *     _counts[0] = counts
 *     _displs[0] = displs
 */
  (__pyx_v__addr[0]) = __pyx_v_baddr;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":279
 *     # return collected message data
 *     _addr[0]   = baddr
 *     _counts[0] = counts             # <<<<<<<<<<<<<<
 *     _displs[0] = displs
 *     _type[0]   = btype
 */
  (__pyx_v__counts[0]) = __pyx_v_counts;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":280
 *     _addr[0]   = baddr
 *     _counts[0] = counts
 *     _displs[0] = displs             # <<<<<<<<<<<<<<
 *     _type[0]   = btype
 *     return m
 */
  (__pyx_v__displs[0]) = __pyx_v_displs;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":281
 *     _counts[0] = counts
 *     _displs[0] = displs
 *     _type[0]   = btype             # <<<<<<<<<<<<<<
 *     return m
 * 
 */
  (__pyx_v__type[0]) = __pyx_v_btype;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":282
 *     _displs[0] = displs
 *     _type[0]   = btype
 *     return m             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_m));
  __pyx_r = __pyx_v_m;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_message *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("mpi4py.MPI.message_vector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_o_buf);
  __Pyx_XDECREF(__pyx_v_o_counts);
  __Pyx_XDECREF(__pyx_v_o_displs);
  __Pyx_XDECREF(__pyx_v_o_type);
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":295
 *     cdef object _msg
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.buf   = NULL
 *         self.count = 0
 */

static int __pyx_pf_6mpi4py_3MPI_10_p_msg_p2p___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_10_p_msg_p2p___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":296
 * 
 *     def __cinit__(self):
 *         self.buf   = NULL             # <<<<<<<<<<<<<<
 *         self.count = 0
 *         self.dtype = MPI_DATATYPE_NULL
 */
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_v_self)->buf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":297
 *     def __cinit__(self):
 *         self.buf   = NULL
 *         self.count = 0             # <<<<<<<<<<<<<<
 *         self.dtype = MPI_DATATYPE_NULL
 * 
 */
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_v_self)->count = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":298
 *         self.buf   = NULL
 *         self.count = 0
 *         self.dtype = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_send(self, object msg, int rank) except -1:
 */
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_v_self)->dtype = MPI_DATATYPE_NULL;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":300
 *         self.dtype = MPI_DATATYPE_NULL
 * 
 *     cdef int for_send(self, object msg, int rank) except -1:             # <<<<<<<<<<<<<<
 *         self._msg = message_simple(msg, 1, # readonly
 *                                    rank, 0,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_p2p_for_send(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_self, PyObject *__pyx_v_msg, int __pyx_v_rank) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_send");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":305
 *                                    &self.buf,
 *                                    &self.count,
 *                                    &self.dtype)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_msg, 1, __pyx_v_rank, 0, (&__pyx_v_self->buf), (&__pyx_v_self->count), (&__pyx_v_self->dtype))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":301
 * 
 *     cdef int for_send(self, object msg, int rank) except -1:
 *         self._msg = message_simple(msg, 1, # readonly             # <<<<<<<<<<<<<<
 *                                    rank, 0,
 *                                    &self.buf,
 */
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_msg);
  __Pyx_DECREF(__pyx_v_self->_msg);
  __pyx_v_self->_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":306
 *                                    &self.count,
 *                                    &self.dtype)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_recv(self, object msg, int rank) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_p2p.for_send", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":308
 *         return 0
 * 
 *     cdef int for_recv(self, object msg, int rank) except -1:             # <<<<<<<<<<<<<<
 *         self._msg = message_simple(msg, 0, # writable
 *                                    rank, 0,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_p2p_for_recv(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_self, PyObject *__pyx_v_msg, int __pyx_v_rank) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_recv");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":313
 *                                    &self.buf,
 *                                    &self.count,
 *                                    &self.dtype)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_msg, 0, __pyx_v_rank, 0, (&__pyx_v_self->buf), (&__pyx_v_self->count), (&__pyx_v_self->dtype))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":309
 * 
 *     cdef int for_recv(self, object msg, int rank) except -1:
 *         self._msg = message_simple(msg, 0, # writable             # <<<<<<<<<<<<<<
 *                                    rank, 0,
 *                                    &self.buf,
 */
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_msg);
  __Pyx_DECREF(__pyx_v_self->_msg);
  __pyx_v_self->_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":314
 *                                    &self.count,
 *                                    &self.dtype)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline _p_msg_p2p message_p2p_send(object sendbuf, int dest):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_p2p.for_recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":316
 *         return 0
 * 
 * cdef inline _p_msg_p2p message_p2p_send(object sendbuf, int dest):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_p2p msg = <_p_msg_p2p>_p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_send(sendbuf, dest)
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_f_6mpi4py_3MPI_message_p2p_send(PyObject *__pyx_v_sendbuf, int __pyx_v_dest) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_msg = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_p2p_send");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":317
 * 
 * cdef inline _p_msg_p2p message_p2p_send(object sendbuf, int dest):
 *     cdef _p_msg_p2p msg = <_p_msg_p2p>_p_msg_p2p.__new__(_p_msg_p2p)             # <<<<<<<<<<<<<<
 *     msg.for_send(sendbuf, dest)
 *     return msg
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_msg_p2p)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1)));
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":318
 * cdef inline _p_msg_p2p message_p2p_send(object sendbuf, int dest):
 *     cdef _p_msg_p2p msg = <_p_msg_p2p>_p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_send(sendbuf, dest)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_p2p *)__pyx_v_msg->__pyx_vtab)->for_send(__pyx_v_msg, __pyx_v_sendbuf, __pyx_v_dest); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":319
 *     cdef _p_msg_p2p msg = <_p_msg_p2p>_p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_send(sendbuf, dest)
 *     return msg             # <<<<<<<<<<<<<<
 * 
 * cdef inline _p_msg_p2p message_p2p_recv(object recvbuf, int source):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_msg));
  __pyx_r = __pyx_v_msg;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.message_p2p_send", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":321
 *     return msg
 * 
 * cdef inline _p_msg_p2p message_p2p_recv(object recvbuf, int source):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_p2p msg = <_p_msg_p2p>_p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_recv(recvbuf, source)
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_f_6mpi4py_3MPI_message_p2p_recv(PyObject *__pyx_v_recvbuf, int __pyx_v_source) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_msg = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_p2p_recv");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":322
 * 
 * cdef inline _p_msg_p2p message_p2p_recv(object recvbuf, int source):
 *     cdef _p_msg_p2p msg = <_p_msg_p2p>_p_msg_p2p.__new__(_p_msg_p2p)             # <<<<<<<<<<<<<<
 *     msg.for_recv(recvbuf, source)
 *     return msg
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_msg_p2p)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1)));
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":323
 * cdef inline _p_msg_p2p message_p2p_recv(object recvbuf, int source):
 *     cdef _p_msg_p2p msg = <_p_msg_p2p>_p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_recv(recvbuf, source)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_p2p *)__pyx_v_msg->__pyx_vtab)->for_recv(__pyx_v_msg, __pyx_v_recvbuf, __pyx_v_source); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":324
 *     cdef _p_msg_p2p msg = <_p_msg_p2p>_p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_recv(recvbuf, source)
 *     return msg             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_msg));
  __pyx_r = __pyx_v_msg;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.message_p2p_recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":340
 *     cdef object _rcnt
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.sbuf    = self.rbuf    = NULL
 *         self.scount  = self.rcount  = 0
 */

static int __pyx_pf_6mpi4py_3MPI_10_p_msg_cco___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_10_p_msg_cco___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":341
 * 
 *     def __cinit__(self):
 *         self.sbuf    = self.rbuf    = NULL             # <<<<<<<<<<<<<<
 *         self.scount  = self.rcount  = 0
 *         self.scounts = self.rcounts = NULL
 */
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self)->sbuf = NULL;
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self)->rbuf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":342
 *     def __cinit__(self):
 *         self.sbuf    = self.rbuf    = NULL
 *         self.scount  = self.rcount  = 0             # <<<<<<<<<<<<<<
 *         self.scounts = self.rcounts = NULL
 *         self.sdispls = self.rdispls = NULL
 */
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self)->scount = 0;
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self)->rcount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":343
 *         self.sbuf    = self.rbuf    = NULL
 *         self.scount  = self.rcount  = 0
 *         self.scounts = self.rcounts = NULL             # <<<<<<<<<<<<<<
 *         self.sdispls = self.rdispls = NULL
 *         self.stype   = self.rtype   = MPI_DATATYPE_NULL
 */
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self)->scounts = NULL;
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self)->rcounts = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":344
 *         self.scount  = self.rcount  = 0
 *         self.scounts = self.rcounts = NULL
 *         self.sdispls = self.rdispls = NULL             # <<<<<<<<<<<<<<
 *         self.stype   = self.rtype   = MPI_DATATYPE_NULL
 * 
 */
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self)->sdispls = NULL;
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self)->rdispls = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":345
 *         self.scounts = self.rcounts = NULL
 *         self.sdispls = self.rdispls = NULL
 *         self.stype   = self.rtype   = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 * 
 *     # Collective Communication Operations
 */
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self)->stype = MPI_DATATYPE_NULL;
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self)->rtype = MPI_DATATYPE_NULL;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":351
 * 
 *     # sendbuf arguments
 *     cdef int for_cco_send(self, int vector,             # <<<<<<<<<<<<<<
 *                           object amsg,
 *                           int root, int size) except -1:
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_vector, PyObject *__pyx_v_amsg, int __pyx_v_root, int __pyx_v_size) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_cco_send");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":354
 *                           object amsg,
 *                           int root, int size) except -1:
 *         if not vector: # block variant             # <<<<<<<<<<<<<<
 *             self._smsg = message_simple(
 *                 amsg, 1, root, size,
 */
  __pyx_t_1 = (!__pyx_v_vector);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":357
 *             self._smsg = message_simple(
 *                 amsg, 1, root, size,
 *                 &self.sbuf, &self.scount, &self.stype)             # <<<<<<<<<<<<<<
 *         else: # vector variant
 *             self._smsg = message_vector(
 */
    __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_amsg, 1, __pyx_v_root, __pyx_v_size, (&__pyx_v_self->sbuf), (&__pyx_v_self->scount), (&__pyx_v_self->stype))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":355
 *                           int root, int size) except -1:
 *         if not vector: # block variant
 *             self._smsg = message_simple(             # <<<<<<<<<<<<<<
 *                 amsg, 1, root, size,
 *                 &self.sbuf, &self.scount, &self.stype)
 */
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->_smsg);
    __Pyx_DECREF(__pyx_v_self->_smsg);
    __pyx_v_self->_smsg = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":361
 *             self._smsg = message_vector(
 *                 amsg, 1, root, size,
 *                 &self.sbuf, &self.scounts, &self.sdispls, &self.stype)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
    __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_vector(__pyx_v_amsg, 1, __pyx_v_root, __pyx_v_size, (&__pyx_v_self->sbuf), (&__pyx_v_self->scounts), (&__pyx_v_self->sdispls), (&__pyx_v_self->stype))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":359
 *                 &self.sbuf, &self.scount, &self.stype)
 *         else: # vector variant
 *             self._smsg = message_vector(             # <<<<<<<<<<<<<<
 *                 amsg, 1, root, size,
 *                 &self.sbuf, &self.scounts, &self.sdispls, &self.stype)
 */
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->_smsg);
    __Pyx_DECREF(__pyx_v_self->_smsg);
    __pyx_v_self->_smsg = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":362
 *                 amsg, 1, root, size,
 *                 &self.sbuf, &self.scounts, &self.sdispls, &self.stype)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # recvbuf arguments
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_cco_send", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":365
 * 
 *     # recvbuf arguments
 *     cdef int for_cco_recv(self, int vector,             # <<<<<<<<<<<<<<
 *                           object amsg,
 *                           int root, int size) except -1:
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_vector, PyObject *__pyx_v_amsg, int __pyx_v_root, int __pyx_v_size) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_cco_recv");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":368
 *                           object amsg,
 *                           int root, int size) except -1:
 *         if not vector: # block variant             # <<<<<<<<<<<<<<
 *             self._rmsg = message_simple(
 *                 amsg, 0, root, size,
 */
  __pyx_t_1 = (!__pyx_v_vector);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":371
 *             self._rmsg = message_simple(
 *                 amsg, 0, root, size,
 *                 &self.rbuf, &self.rcount, &self.rtype)             # <<<<<<<<<<<<<<
 *         else: # vector variant
 *             self._rmsg = message_vector(
 */
    __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_amsg, 0, __pyx_v_root, __pyx_v_size, (&__pyx_v_self->rbuf), (&__pyx_v_self->rcount), (&__pyx_v_self->rtype))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":369
 *                           int root, int size) except -1:
 *         if not vector: # block variant
 *             self._rmsg = message_simple(             # <<<<<<<<<<<<<<
 *                 amsg, 0, root, size,
 *                 &self.rbuf, &self.rcount, &self.rtype)
 */
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->_rmsg);
    __Pyx_DECREF(__pyx_v_self->_rmsg);
    __pyx_v_self->_rmsg = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":375
 *             self._rmsg = message_vector(
 *                 amsg, 0, root, size,
 *                 &self.rbuf, &self.rcounts, &self.rdispls, &self.rtype)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
    __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_vector(__pyx_v_amsg, 0, __pyx_v_root, __pyx_v_size, (&__pyx_v_self->rbuf), (&__pyx_v_self->rcounts), (&__pyx_v_self->rdispls), (&__pyx_v_self->rtype))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":373
 *                 &self.rbuf, &self.rcount, &self.rtype)
 *         else: # vector variant
 *             self._rmsg = message_vector(             # <<<<<<<<<<<<<<
 *                 amsg, 0, root, size,
 *                 &self.rbuf, &self.rcounts, &self.rdispls, &self.rtype)
 */
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->_rmsg);
    __Pyx_DECREF(__pyx_v_self->_rmsg);
    __pyx_v_self->_rmsg = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":376
 *                 amsg, 0, root, size,
 *                 &self.rbuf, &self.rcounts, &self.rdispls, &self.rtype)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # bcast
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_cco_recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":379
 * 
 *     # bcast
 *     cdef int for_bcast(self,             # <<<<<<<<<<<<<<
 *                        object msg, int root,
 *                        MPI_Comm comm) except -1:
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_bcast(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_msg, int __pyx_v_root, MPI_Comm __pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_v_rank;
  int __pyx_v_sending;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_bcast");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":382
 *                        object msg, int root,
 *                        MPI_Comm comm) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int inter=0, rank=0, sending=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":383
 *                        MPI_Comm comm) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, rank=0, sending=0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter: # intra-communication
 */
  __pyx_v_inter = 0;
  __pyx_v_rank = 0;
  __pyx_v_sending = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":384
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, rank=0, sending=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *         if not inter: # intra-communication
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":385
 *         cdef int inter=0, rank=0, sending=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter: # intra-communication             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:
 */
  __pyx_t_1 = (!__pyx_v_inter);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":386
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter: # intra-communication
 *             CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *             if root == rank:
 *                 self.for_cco_send(0, msg, root, 0)
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":387
 *         if not inter: # intra-communication
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:             # <<<<<<<<<<<<<<
 *                 self.for_cco_send(0, msg, root, 0)
 *                 sending = 1
 */
    __pyx_t_1 = (__pyx_v_root == __pyx_v_rank);
    if (__pyx_t_1) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":388
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:
 *                 self.for_cco_send(0, msg, root, 0)             # <<<<<<<<<<<<<<
 *                 sending = 1
 *             else:
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_send(__pyx_v_self, 0, __pyx_v_msg, __pyx_v_root, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":389
 *             if root == rank:
 *                 self.for_cco_send(0, msg, root, 0)
 *                 sending = 1             # <<<<<<<<<<<<<<
 *             else:
 *                 self.for_cco_recv(0, msg, root, 0)
 */
      __pyx_v_sending = 1;
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":391
 *                 sending = 1
 *             else:
 *                 self.for_cco_recv(0, msg, root, 0)             # <<<<<<<<<<<<<<
 *         else: # inter-communication
 *             if ((root == <int>MPI_ROOT) or
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_recv(__pyx_v_self, 0, __pyx_v_msg, __pyx_v_root, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_L5:;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":393
 *                 self.for_cco_recv(0, msg, root, 0)
 *         else: # inter-communication
 *             if ((root == <int>MPI_ROOT) or             # <<<<<<<<<<<<<<
 *                 (root == <int>MPI_PROC_NULL)):
 *                 self.for_cco_send(0, msg, root, 0)
 */
    __pyx_t_1 = (__pyx_v_root == ((int)MPI_ROOT));
    if (!__pyx_t_1) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":394
 *         else: # inter-communication
 *             if ((root == <int>MPI_ROOT) or
 *                 (root == <int>MPI_PROC_NULL)):             # <<<<<<<<<<<<<<
 *                 self.for_cco_send(0, msg, root, 0)
 *                 sending = 1
 */
      __pyx_t_3 = (__pyx_v_root == ((int)MPI_PROC_NULL));
      __pyx_t_4 = __pyx_t_3;
    } else {
      __pyx_t_4 = __pyx_t_1;
    }
    if (__pyx_t_4) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":395
 *             if ((root == <int>MPI_ROOT) or
 *                 (root == <int>MPI_PROC_NULL)):
 *                 self.for_cco_send(0, msg, root, 0)             # <<<<<<<<<<<<<<
 *                 sending = 1
 *             else:
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_send(__pyx_v_self, 0, __pyx_v_msg, __pyx_v_root, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":396
 *                 (root == <int>MPI_PROC_NULL)):
 *                 self.for_cco_send(0, msg, root, 0)
 *                 sending = 1             # <<<<<<<<<<<<<<
 *             else:
 *                 self.for_cco_recv(0, msg, root, 0)
 */
      __pyx_v_sending = 1;
      goto __pyx_L6;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":398
 *                 sending = 1
 *             else:
 *                 self.for_cco_recv(0, msg, root, 0)             # <<<<<<<<<<<<<<
 *         if sending:
 *             self.rbuf   = self.sbuf
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_recv(__pyx_v_self, 0, __pyx_v_msg, __pyx_v_root, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_L6:;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":399
 *             else:
 *                 self.for_cco_recv(0, msg, root, 0)
 *         if sending:             # <<<<<<<<<<<<<<
 *             self.rbuf   = self.sbuf
 *             self.rcount = self.scount
 */
  if (__pyx_v_sending) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":400
 *                 self.for_cco_recv(0, msg, root, 0)
 *         if sending:
 *             self.rbuf   = self.sbuf             # <<<<<<<<<<<<<<
 *             self.rcount = self.scount
 *             self.rtype  = self.stype
 */
    __pyx_v_self->rbuf = __pyx_v_self->sbuf;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":401
 *         if sending:
 *             self.rbuf   = self.sbuf
 *             self.rcount = self.scount             # <<<<<<<<<<<<<<
 *             self.rtype  = self.stype
 *         else:
 */
    __pyx_v_self->rcount = __pyx_v_self->scount;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":402
 *             self.rbuf   = self.sbuf
 *             self.rcount = self.scount
 *             self.rtype  = self.stype             # <<<<<<<<<<<<<<
 *         else:
 *             self.sbuf   = self.rbuf
 */
    __pyx_v_self->rtype = __pyx_v_self->stype;
    goto __pyx_L7;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":404
 *             self.rtype  = self.stype
 *         else:
 *             self.sbuf   = self.rbuf             # <<<<<<<<<<<<<<
 *             self.scount = self.rcount
 *             self.stype  = self.rtype
 */
    __pyx_v_self->sbuf = __pyx_v_self->rbuf;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":405
 *         else:
 *             self.sbuf   = self.rbuf
 *             self.scount = self.rcount             # <<<<<<<<<<<<<<
 *             self.stype  = self.rtype
 *         return 0
 */
    __pyx_v_self->scount = __pyx_v_self->rcount;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":406
 *             self.sbuf   = self.rbuf
 *             self.scount = self.rcount
 *             self.stype  = self.rtype             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
    __pyx_v_self->stype = __pyx_v_self->rtype;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":407
 *             self.scount = self.rcount
 *             self.stype  = self.rtype
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # gather/gatherv
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_bcast", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":410
 * 
 *     # gather/gatherv
 *     cdef int for_gather(self, int v,             # <<<<<<<<<<<<<<
 *                         object smsg, object rmsg,
 *                         int root, MPI_Comm comm) except -1:
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_gather(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_v, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, int __pyx_v_root, MPI_Comm __pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_v_size;
  int __pyx_v_rank;
  int __pyx_v_null;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_gather");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":413
 *                         object smsg, object rmsg,
 *                         int root, MPI_Comm comm) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int inter=0, size=0, rank=0, null=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":414
 *                         int root, MPI_Comm comm) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0, rank=0, null=MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter: # intra-communication
 */
  __pyx_v_inter = 0;
  __pyx_v_size = 0;
  __pyx_v_rank = 0;
  __pyx_v_null = MPI_PROC_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":415
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0, rank=0, null=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *         if not inter: # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":416
 *         cdef int inter=0, size=0, rank=0, null=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter: # intra-communication             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 */
  __pyx_t_1 = (!__pyx_v_inter);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":417
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter: # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":418
 *         if not inter: # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *             CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *             if root == rank:
 *                 self.for_cco_recv(v, rmsg, root, size)
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":419
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:             # <<<<<<<<<<<<<<
 *                 self.for_cco_recv(v, rmsg, root, size)
 *                 if smsg is __IN_PLACE__:
 */
    __pyx_t_1 = (__pyx_v_root == __pyx_v_rank);
    if (__pyx_t_1) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":420
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:
 *                 self.for_cco_recv(v, rmsg, root, size)             # <<<<<<<<<<<<<<
 *                 if smsg is __IN_PLACE__:
 *                     self.sbuf   = MPI_IN_PLACE
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_recv(__pyx_v_self, __pyx_v_v, __pyx_v_rmsg, __pyx_v_root, __pyx_v_size); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":421
 *             if root == rank:
 *                 self.for_cco_recv(v, rmsg, root, size)
 *                 if smsg is __IN_PLACE__:             # <<<<<<<<<<<<<<
 *                     self.sbuf   = MPI_IN_PLACE
 *                     self.scount = self.rcount
 */
      __pyx_t_1 = (__pyx_v_smsg == __pyx_v_6mpi4py_3MPI___IN_PLACE__);
      if (__pyx_t_1) {

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":422
 *                 self.for_cco_recv(v, rmsg, root, size)
 *                 if smsg is __IN_PLACE__:
 *                     self.sbuf   = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *                     self.scount = self.rcount
 *                     self.stype  = self.rtype
 */
        __pyx_v_self->sbuf = MPI_IN_PLACE;

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":423
 *                 if smsg is __IN_PLACE__:
 *                     self.sbuf   = MPI_IN_PLACE
 *                     self.scount = self.rcount             # <<<<<<<<<<<<<<
 *                     self.stype  = self.rtype
 *                 else:
 */
        __pyx_v_self->scount = __pyx_v_self->rcount;

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":424
 *                     self.sbuf   = MPI_IN_PLACE
 *                     self.scount = self.rcount
 *                     self.stype  = self.rtype             # <<<<<<<<<<<<<<
 *                 else:
 *                     self.for_cco_send(0, smsg, 0, 0)
 */
        __pyx_v_self->stype = __pyx_v_self->rtype;
        goto __pyx_L6;
      }
      /*else*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":426
 *                     self.stype  = self.rtype
 *                 else:
 *                     self.for_cco_send(0, smsg, 0, 0)             # <<<<<<<<<<<<<<
 *             else:
 *                 self.for_cco_recv(v, rmsg, null, size)
 */
        __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_send(__pyx_v_self, 0, __pyx_v_smsg, 0, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_L6:;
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":428
 *                     self.for_cco_send(0, smsg, 0, 0)
 *             else:
 *                 self.for_cco_recv(v, rmsg, null, size)             # <<<<<<<<<<<<<<
 *                 self.for_cco_send(0, smsg, root, 0)
 *         else: # inter-communication
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_recv(__pyx_v_self, __pyx_v_v, __pyx_v_rmsg, __pyx_v_null, __pyx_v_size); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":429
 *             else:
 *                 self.for_cco_recv(v, rmsg, null, size)
 *                 self.for_cco_send(0, smsg, root, 0)             # <<<<<<<<<<<<<<
 *         else: # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_send(__pyx_v_self, 0, __pyx_v_smsg, __pyx_v_root, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_L5:;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":431
 *                 self.for_cco_send(0, smsg, root, 0)
 *         else: # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )             # <<<<<<<<<<<<<<
 *             if ((root == <int>MPI_ROOT) or
 *                 (root == <int>MPI_PROC_NULL)):
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":432
 *         else: # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 *             if ((root == <int>MPI_ROOT) or             # <<<<<<<<<<<<<<
 *                 (root == <int>MPI_PROC_NULL)):
 *                 self.for_cco_recv(v, rmsg, root, size)
 */
    __pyx_t_1 = (__pyx_v_root == ((int)MPI_ROOT));
    if (!__pyx_t_1) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":433
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 *             if ((root == <int>MPI_ROOT) or
 *                 (root == <int>MPI_PROC_NULL)):             # <<<<<<<<<<<<<<
 *                 self.for_cco_recv(v, rmsg, root, size)
 *                 self.for_cco_send(0, smsg, null, 0)
 */
      __pyx_t_3 = (__pyx_v_root == ((int)MPI_PROC_NULL));
      __pyx_t_4 = __pyx_t_3;
    } else {
      __pyx_t_4 = __pyx_t_1;
    }
    if (__pyx_t_4) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":434
 *             if ((root == <int>MPI_ROOT) or
 *                 (root == <int>MPI_PROC_NULL)):
 *                 self.for_cco_recv(v, rmsg, root, size)             # <<<<<<<<<<<<<<
 *                 self.for_cco_send(0, smsg, null, 0)
 *             else:
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_recv(__pyx_v_self, __pyx_v_v, __pyx_v_rmsg, __pyx_v_root, __pyx_v_size); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":435
 *                 (root == <int>MPI_PROC_NULL)):
 *                 self.for_cco_recv(v, rmsg, root, size)
 *                 self.for_cco_send(0, smsg, null, 0)             # <<<<<<<<<<<<<<
 *             else:
 *                 self.for_cco_recv(v, rmsg, null, size)
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_send(__pyx_v_self, 0, __pyx_v_smsg, __pyx_v_null, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":437
 *                 self.for_cco_send(0, smsg, null, 0)
 *             else:
 *                 self.for_cco_recv(v, rmsg, null, size)             # <<<<<<<<<<<<<<
 *                 self.for_cco_send(0, smsg, root, 0)
 *         return 0
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_recv(__pyx_v_self, __pyx_v_v, __pyx_v_rmsg, __pyx_v_null, __pyx_v_size); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":438
 *             else:
 *                 self.for_cco_recv(v, rmsg, null, size)
 *                 self.for_cco_send(0, smsg, root, 0)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_send(__pyx_v_self, 0, __pyx_v_smsg, __pyx_v_root, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_L7:;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":439
 *                 self.for_cco_recv(v, rmsg, null, size)
 *                 self.for_cco_send(0, smsg, root, 0)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # scatter/scatterv
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_gather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":442
 * 
 *     # scatter/scatterv
 *     cdef int for_scatter(self, int v,             # <<<<<<<<<<<<<<
 *                          object smsg, object rmsg,
 *                          int root, MPI_Comm comm) except -1:
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scatter(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_v, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, int __pyx_v_root, MPI_Comm __pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_v_size;
  int __pyx_v_rank;
  int __pyx_v_null;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_scatter");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":445
 *                          object smsg, object rmsg,
 *                          int root, MPI_Comm comm) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int inter=0, size=0, rank=0, null=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":446
 *                          int root, MPI_Comm comm) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0, rank=0, null=MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter: # intra-communication
 */
  __pyx_v_inter = 0;
  __pyx_v_size = 0;
  __pyx_v_rank = 0;
  __pyx_v_null = MPI_PROC_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":447
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0, rank=0, null=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *         if not inter: # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":448
 *         cdef int inter=0, size=0, rank=0, null=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter: # intra-communication             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 */
  __pyx_t_1 = (!__pyx_v_inter);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":449
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter: # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":450
 *         if not inter: # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *             CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *             if root == rank:
 *                 self.for_cco_send(v, smsg, root, size)
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":451
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:             # <<<<<<<<<<<<<<
 *                 self.for_cco_send(v, smsg, root, size)
 *                 if rmsg is __IN_PLACE__:
 */
    __pyx_t_1 = (__pyx_v_root == __pyx_v_rank);
    if (__pyx_t_1) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":452
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:
 *                 self.for_cco_send(v, smsg, root, size)             # <<<<<<<<<<<<<<
 *                 if rmsg is __IN_PLACE__:
 *                     self.rbuf   = MPI_IN_PLACE
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_send(__pyx_v_self, __pyx_v_v, __pyx_v_smsg, __pyx_v_root, __pyx_v_size); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":453
 *             if root == rank:
 *                 self.for_cco_send(v, smsg, root, size)
 *                 if rmsg is __IN_PLACE__:             # <<<<<<<<<<<<<<
 *                     self.rbuf   = MPI_IN_PLACE
 *                     self.rcount = self.scount
 */
      __pyx_t_1 = (__pyx_v_rmsg == __pyx_v_6mpi4py_3MPI___IN_PLACE__);
      if (__pyx_t_1) {

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":454
 *                 self.for_cco_send(v, smsg, root, size)
 *                 if rmsg is __IN_PLACE__:
 *                     self.rbuf   = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *                     self.rcount = self.scount
 *                     self.rtype  = self.stype
 */
        __pyx_v_self->rbuf = MPI_IN_PLACE;

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":455
 *                 if rmsg is __IN_PLACE__:
 *                     self.rbuf   = MPI_IN_PLACE
 *                     self.rcount = self.scount             # <<<<<<<<<<<<<<
 *                     self.rtype  = self.stype
 *                 else:
 */
        __pyx_v_self->rcount = __pyx_v_self->scount;

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":456
 *                     self.rbuf   = MPI_IN_PLACE
 *                     self.rcount = self.scount
 *                     self.rtype  = self.stype             # <<<<<<<<<<<<<<
 *                 else:
 *                     self.for_cco_recv(0, rmsg, root, 0)
 */
        __pyx_v_self->rtype = __pyx_v_self->stype;
        goto __pyx_L6;
      }
      /*else*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":458
 *                     self.rtype  = self.stype
 *                 else:
 *                     self.for_cco_recv(0, rmsg, root, 0)             # <<<<<<<<<<<<<<
 *             else:
 *                 self.for_cco_send(v, smsg, null, size)
 */
        __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_recv(__pyx_v_self, 0, __pyx_v_rmsg, __pyx_v_root, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_L6:;
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":460
 *                     self.for_cco_recv(0, rmsg, root, 0)
 *             else:
 *                 self.for_cco_send(v, smsg, null, size)             # <<<<<<<<<<<<<<
 *                 self.for_cco_recv(0, rmsg, root, 0)
 *         else: # inter-communication
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_send(__pyx_v_self, __pyx_v_v, __pyx_v_smsg, __pyx_v_null, __pyx_v_size); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":461
 *             else:
 *                 self.for_cco_send(v, smsg, null, size)
 *                 self.for_cco_recv(0, rmsg, root, 0)             # <<<<<<<<<<<<<<
 *         else: # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_recv(__pyx_v_self, 0, __pyx_v_rmsg, __pyx_v_root, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_L5:;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":463
 *                 self.for_cco_recv(0, rmsg, root, 0)
 *         else: # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )             # <<<<<<<<<<<<<<
 *             if ((root == <int>MPI_ROOT) or
 *                 (root == <int>MPI_PROC_NULL)):
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":464
 *         else: # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 *             if ((root == <int>MPI_ROOT) or             # <<<<<<<<<<<<<<
 *                 (root == <int>MPI_PROC_NULL)):
 *                 self.for_cco_send(v, smsg, root, size)
 */
    __pyx_t_1 = (__pyx_v_root == ((int)MPI_ROOT));
    if (!__pyx_t_1) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":465
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 *             if ((root == <int>MPI_ROOT) or
 *                 (root == <int>MPI_PROC_NULL)):             # <<<<<<<<<<<<<<
 *                 self.for_cco_send(v, smsg, root, size)
 *                 self.for_cco_recv(0, rmsg, null,  0)
 */
      __pyx_t_3 = (__pyx_v_root == ((int)MPI_PROC_NULL));
      __pyx_t_4 = __pyx_t_3;
    } else {
      __pyx_t_4 = __pyx_t_1;
    }
    if (__pyx_t_4) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":466
 *             if ((root == <int>MPI_ROOT) or
 *                 (root == <int>MPI_PROC_NULL)):
 *                 self.for_cco_send(v, smsg, root, size)             # <<<<<<<<<<<<<<
 *                 self.for_cco_recv(0, rmsg, null,  0)
 *             else:
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_send(__pyx_v_self, __pyx_v_v, __pyx_v_smsg, __pyx_v_root, __pyx_v_size); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":467
 *                 (root == <int>MPI_PROC_NULL)):
 *                 self.for_cco_send(v, smsg, root, size)
 *                 self.for_cco_recv(0, rmsg, null,  0)             # <<<<<<<<<<<<<<
 *             else:
 *                 self.for_cco_send(v, smsg, null, size)
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_recv(__pyx_v_self, 0, __pyx_v_rmsg, __pyx_v_null, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":469
 *                 self.for_cco_recv(0, rmsg, null,  0)
 *             else:
 *                 self.for_cco_send(v, smsg, null, size)             # <<<<<<<<<<<<<<
 *                 self.for_cco_recv(0, rmsg, root, 0)
 *         return 0
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_send(__pyx_v_self, __pyx_v_v, __pyx_v_smsg, __pyx_v_null, __pyx_v_size); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":470
 *             else:
 *                 self.for_cco_send(v, smsg, null, size)
 *                 self.for_cco_recv(0, rmsg, root, 0)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_recv(__pyx_v_self, 0, __pyx_v_rmsg, __pyx_v_root, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_L7:;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":471
 *                 self.for_cco_send(v, smsg, null, size)
 *                 self.for_cco_recv(0, rmsg, root, 0)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # allgather/allgatherv
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_scatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":474
 * 
 *     # allgather/allgatherv
 *     cdef int for_allgather(self, int v,             # <<<<<<<<<<<<<<
 *                            object smsg, object rmsg,
 *                            MPI_Comm comm) except -1:
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allgather(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_v, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_v_size;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_allgather");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":477
 *                            object smsg, object rmsg,
 *                            MPI_Comm comm) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":478
 *                            MPI_Comm comm) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter: # intra-communication
 */
  __pyx_v_inter = 0;
  __pyx_v_size = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":479
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *         if not inter: # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":480
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter: # intra-communication             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *         else: # inter-communication
 */
  __pyx_t_1 = (!__pyx_v_inter);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":481
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter: # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         else: # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":483
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *         else: # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         #
 *         self.for_cco_recv(v, rmsg, 0, size)
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":485
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         #
 *         self.for_cco_recv(v, rmsg, 0, size)             # <<<<<<<<<<<<<<
 *         if not inter and smsg is __IN_PLACE__:
 *             self.sbuf   = MPI_IN_PLACE
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_recv(__pyx_v_self, __pyx_v_v, __pyx_v_rmsg, 0, __pyx_v_size); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":486
 *         #
 *         self.for_cco_recv(v, rmsg, 0, size)
 *         if not inter and smsg is __IN_PLACE__:             # <<<<<<<<<<<<<<
 *             self.sbuf   = MPI_IN_PLACE
 *             self.scount = self.rcount
 */
  __pyx_t_1 = (!__pyx_v_inter);
  if (__pyx_t_1) {
    __pyx_t_3 = (__pyx_v_smsg == __pyx_v_6mpi4py_3MPI___IN_PLACE__);
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_1;
  }
  if (__pyx_t_4) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":487
 *         self.for_cco_recv(v, rmsg, 0, size)
 *         if not inter and smsg is __IN_PLACE__:
 *             self.sbuf   = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *             self.scount = self.rcount
 *             self.stype  = self.rtype
 */
    __pyx_v_self->sbuf = MPI_IN_PLACE;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":488
 *         if not inter and smsg is __IN_PLACE__:
 *             self.sbuf   = MPI_IN_PLACE
 *             self.scount = self.rcount             # <<<<<<<<<<<<<<
 *             self.stype  = self.rtype
 *         else:
 */
    __pyx_v_self->scount = __pyx_v_self->rcount;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":489
 *             self.sbuf   = MPI_IN_PLACE
 *             self.scount = self.rcount
 *             self.stype  = self.rtype             # <<<<<<<<<<<<<<
 *         else:
 *             self.for_cco_send(0, smsg, 0, 0)
 */
    __pyx_v_self->stype = __pyx_v_self->rtype;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":491
 *             self.stype  = self.rtype
 *         else:
 *             self.for_cco_send(0, smsg, 0, 0)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_send(__pyx_v_self, 0, __pyx_v_smsg, 0, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":492
 *         else:
 *             self.for_cco_send(0, smsg, 0, 0)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # alltoall/alltoallv
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":495
 * 
 *     # alltoall/alltoallv
 *     cdef int for_alltoall(self, int v,             # <<<<<<<<<<<<<<
 *                           object smsg, object rmsg,
 *                           MPI_Comm comm) except -1:
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_alltoall(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_v, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_v_size;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_alltoall");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":498
 *                           object smsg, object rmsg,
 *                           MPI_Comm comm) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":499
 *                           MPI_Comm comm) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter: # intra-communication
 */
  __pyx_v_inter = 0;
  __pyx_v_size = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":500
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *         if not inter: # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":501
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter: # intra-communication             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *         else: # inter-communication
 */
  __pyx_t_1 = (!__pyx_v_inter);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":502
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter: # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         else: # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":504
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *         else: # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         #
 *         self.for_cco_recv(v, rmsg, 0, size)
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":506
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         #
 *         self.for_cco_recv(v, rmsg, 0, size)             # <<<<<<<<<<<<<<
 *         if not inter and smsg is __IN_PLACE__:
 *             self.sbuf    = MPI_IN_PLACE
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_recv(__pyx_v_self, __pyx_v_v, __pyx_v_rmsg, 0, __pyx_v_size); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":507
 *         #
 *         self.for_cco_recv(v, rmsg, 0, size)
 *         if not inter and smsg is __IN_PLACE__:             # <<<<<<<<<<<<<<
 *             self.sbuf    = MPI_IN_PLACE
 *             self.scount  = self.rcount
 */
  __pyx_t_1 = (!__pyx_v_inter);
  if (__pyx_t_1) {
    __pyx_t_3 = (__pyx_v_smsg == __pyx_v_6mpi4py_3MPI___IN_PLACE__);
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_1;
  }
  if (__pyx_t_4) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":508
 *         self.for_cco_recv(v, rmsg, 0, size)
 *         if not inter and smsg is __IN_PLACE__:
 *             self.sbuf    = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *             self.scount  = self.rcount
 *             self.scounts = self.rcounts
 */
    __pyx_v_self->sbuf = MPI_IN_PLACE;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":509
 *         if not inter and smsg is __IN_PLACE__:
 *             self.sbuf    = MPI_IN_PLACE
 *             self.scount  = self.rcount             # <<<<<<<<<<<<<<
 *             self.scounts = self.rcounts
 *             self.sdispls = self.rdispls
 */
    __pyx_v_self->scount = __pyx_v_self->rcount;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":510
 *             self.sbuf    = MPI_IN_PLACE
 *             self.scount  = self.rcount
 *             self.scounts = self.rcounts             # <<<<<<<<<<<<<<
 *             self.sdispls = self.rdispls
 *             self.stype   = self.rtype
 */
    __pyx_v_self->scounts = __pyx_v_self->rcounts;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":511
 *             self.scount  = self.rcount
 *             self.scounts = self.rcounts
 *             self.sdispls = self.rdispls             # <<<<<<<<<<<<<<
 *             self.stype   = self.rtype
 *         else:
 */
    __pyx_v_self->sdispls = __pyx_v_self->rdispls;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":512
 *             self.scounts = self.rcounts
 *             self.sdispls = self.rdispls
 *             self.stype   = self.rtype             # <<<<<<<<<<<<<<
 *         else:
 *             self.for_cco_send(v, smsg, 0, size)
 */
    __pyx_v_self->stype = __pyx_v_self->rtype;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":514
 *             self.stype   = self.rtype
 *         else:
 *             self.for_cco_send(v, smsg, 0, size)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_send(__pyx_v_self, __pyx_v_v, __pyx_v_smsg, 0, __pyx_v_size); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":515
 *         else:
 *             self.for_cco_send(v, smsg, 0, size)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":522
 * 
 *     # sendbuf
 *     cdef int for_cro_send(self, object amsg, int root) except -1:             # <<<<<<<<<<<<<<
 *         self._smsg = message_simple(amsg, 1, # readonly
 *                                     root, 0,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_send(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_amsg, int __pyx_v_root) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_cro_send");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":527
 *                                     &self.sbuf,
 *                                     &self.scount,
 *                                     &self.stype)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_amsg, 1, __pyx_v_root, 0, (&__pyx_v_self->sbuf), (&__pyx_v_self->scount), (&__pyx_v_self->stype))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":523
 *     # sendbuf
 *     cdef int for_cro_send(self, object amsg, int root) except -1:
 *         self._smsg = message_simple(amsg, 1, # readonly             # <<<<<<<<<<<<<<
 *                                     root, 0,
 *                                     &self.sbuf,
 */
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_smsg);
  __Pyx_DECREF(__pyx_v_self->_smsg);
  __pyx_v_self->_smsg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":528
 *                                     &self.scount,
 *                                     &self.stype)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # recvbuf
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_cro_send", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":531
 * 
 *     # recvbuf
 *     cdef int for_cro_recv(self, object amsg, int root) except -1:             # <<<<<<<<<<<<<<
 *         self._rmsg = message_simple(amsg, 0, # writable
 *                                     root, 0,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_recv(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_amsg, int __pyx_v_root) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_cro_recv");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":536
 *                                     &self.rbuf,
 *                                     &self.rcount,
 *                                     &self.rtype)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_amsg, 0, __pyx_v_root, 0, (&__pyx_v_self->rbuf), (&__pyx_v_self->rcount), (&__pyx_v_self->rtype))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":532
 *     # recvbuf
 *     cdef int for_cro_recv(self, object amsg, int root) except -1:
 *         self._rmsg = message_simple(amsg, 0, # writable             # <<<<<<<<<<<<<<
 *                                     root, 0,
 *                                     &self.rbuf,
 */
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_rmsg);
  __Pyx_DECREF(__pyx_v_self->_rmsg);
  __pyx_v_self->_rmsg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":537
 *                                     &self.rcount,
 *                                     &self.rtype)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_reduce(self,
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_cro_recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":539
 *         return 0
 * 
 *     cdef int for_reduce(self,             # <<<<<<<<<<<<<<
 *                         object smsg, object rmsg,
 *                         int root, MPI_Comm comm) except -1:
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, int __pyx_v_root, MPI_Comm __pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_v_rank;
  int __pyx_v_null;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_reduce");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":542
 *                         object smsg, object rmsg,
 *                         int root, MPI_Comm comm) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int inter=0, rank=0, null=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":543
 *                         int root, MPI_Comm comm) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, rank=0, null=MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter: # intra-communication
 */
  __pyx_v_inter = 0;
  __pyx_v_rank = 0;
  __pyx_v_null = MPI_PROC_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":544
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, rank=0, null=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *         if not inter: # intra-communication
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":545
 *         cdef int inter=0, rank=0, null=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter: # intra-communication             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:
 */
  __pyx_t_1 = (!__pyx_v_inter);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":546
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter: # intra-communication
 *             CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *             if root == rank:
 *                 self.for_cro_recv(rmsg, root)
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":547
 *         if not inter: # intra-communication
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:             # <<<<<<<<<<<<<<
 *                 self.for_cro_recv(rmsg, root)
 *                 if smsg is __IN_PLACE__:
 */
    __pyx_t_1 = (__pyx_v_root == __pyx_v_rank);
    if (__pyx_t_1) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":548
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:
 *                 self.for_cro_recv(rmsg, root)             # <<<<<<<<<<<<<<
 *                 if smsg is __IN_PLACE__:
 *                     self.sbuf   = MPI_IN_PLACE
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cro_recv(__pyx_v_self, __pyx_v_rmsg, __pyx_v_root); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":549
 *             if root == rank:
 *                 self.for_cro_recv(rmsg, root)
 *                 if smsg is __IN_PLACE__:             # <<<<<<<<<<<<<<
 *                     self.sbuf   = MPI_IN_PLACE
 *                     self.scount = self.rcount
 */
      __pyx_t_1 = (__pyx_v_smsg == __pyx_v_6mpi4py_3MPI___IN_PLACE__);
      if (__pyx_t_1) {

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":550
 *                 self.for_cro_recv(rmsg, root)
 *                 if smsg is __IN_PLACE__:
 *                     self.sbuf   = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *                     self.scount = self.rcount
 *                     self.stype  = self.rtype
 */
        __pyx_v_self->sbuf = MPI_IN_PLACE;

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":551
 *                 if smsg is __IN_PLACE__:
 *                     self.sbuf   = MPI_IN_PLACE
 *                     self.scount = self.rcount             # <<<<<<<<<<<<<<
 *                     self.stype  = self.rtype
 *                 else:
 */
        __pyx_v_self->scount = __pyx_v_self->rcount;

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":552
 *                     self.sbuf   = MPI_IN_PLACE
 *                     self.scount = self.rcount
 *                     self.stype  = self.rtype             # <<<<<<<<<<<<<<
 *                 else:
 *                     self.for_cro_send(smsg, root)
 */
        __pyx_v_self->stype = __pyx_v_self->rtype;
        goto __pyx_L6;
      }
      /*else*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":554
 *                     self.stype  = self.rtype
 *                 else:
 *                     self.for_cro_send(smsg, root)             # <<<<<<<<<<<<<<
 *             else:
 *                 self.for_cro_recv(rmsg, null)
 */
        __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cro_send(__pyx_v_self, __pyx_v_smsg, __pyx_v_root); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_L6:;
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":556
 *                     self.for_cro_send(smsg, root)
 *             else:
 *                 self.for_cro_recv(rmsg, null)             # <<<<<<<<<<<<<<
 *                 self.for_cro_send(smsg, root)
 *                 self.rcount = self.scount
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cro_recv(__pyx_v_self, __pyx_v_rmsg, __pyx_v_null); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":557
 *             else:
 *                 self.for_cro_recv(rmsg, null)
 *                 self.for_cro_send(smsg, root)             # <<<<<<<<<<<<<<
 *                 self.rcount = self.scount
 *                 self.rtype  = self.stype
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cro_send(__pyx_v_self, __pyx_v_smsg, __pyx_v_root); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":558
 *                 self.for_cro_recv(rmsg, null)
 *                 self.for_cro_send(smsg, root)
 *                 self.rcount = self.scount             # <<<<<<<<<<<<<<
 *                 self.rtype  = self.stype
 *         else: # inter-communication
 */
      __pyx_v_self->rcount = __pyx_v_self->scount;

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":559
 *                 self.for_cro_send(smsg, root)
 *                 self.rcount = self.scount
 *                 self.rtype  = self.stype             # <<<<<<<<<<<<<<
 *         else: # inter-communication
 *             if ((root == <int>MPI_ROOT) or
 */
      __pyx_v_self->rtype = __pyx_v_self->stype;
    }
    __pyx_L5:;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":561
 *                 self.rtype  = self.stype
 *         else: # inter-communication
 *             if ((root == <int>MPI_ROOT) or             # <<<<<<<<<<<<<<
 *                 (root == <int>MPI_PROC_NULL)):
 *                 self.for_cro_recv(rmsg, root)
 */
    __pyx_t_1 = (__pyx_v_root == ((int)MPI_ROOT));
    if (!__pyx_t_1) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":562
 *         else: # inter-communication
 *             if ((root == <int>MPI_ROOT) or
 *                 (root == <int>MPI_PROC_NULL)):             # <<<<<<<<<<<<<<
 *                 self.for_cro_recv(rmsg, root)
 *                 self.scount = self.rcount
 */
      __pyx_t_3 = (__pyx_v_root == ((int)MPI_PROC_NULL));
      __pyx_t_4 = __pyx_t_3;
    } else {
      __pyx_t_4 = __pyx_t_1;
    }
    if (__pyx_t_4) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":563
 *             if ((root == <int>MPI_ROOT) or
 *                 (root == <int>MPI_PROC_NULL)):
 *                 self.for_cro_recv(rmsg, root)             # <<<<<<<<<<<<<<
 *                 self.scount = self.rcount
 *                 self.stype  = self.rtype
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cro_recv(__pyx_v_self, __pyx_v_rmsg, __pyx_v_root); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":564
 *                 (root == <int>MPI_PROC_NULL)):
 *                 self.for_cro_recv(rmsg, root)
 *                 self.scount = self.rcount             # <<<<<<<<<<<<<<
 *                 self.stype  = self.rtype
 *             else:
 */
      __pyx_v_self->scount = __pyx_v_self->rcount;

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":565
 *                 self.for_cro_recv(rmsg, root)
 *                 self.scount = self.rcount
 *                 self.stype  = self.rtype             # <<<<<<<<<<<<<<
 *             else:
 *                 self.for_cro_send(smsg, root)
 */
      __pyx_v_self->stype = __pyx_v_self->rtype;
      goto __pyx_L7;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":567
 *                 self.stype  = self.rtype
 *             else:
 *                 self.for_cro_send(smsg, root)             # <<<<<<<<<<<<<<
 *                 self.rcount = self.scount
 *                 self.rtype  = self.stype
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cro_send(__pyx_v_self, __pyx_v_smsg, __pyx_v_root); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":568
 *             else:
 *                 self.for_cro_send(smsg, root)
 *                 self.rcount = self.scount             # <<<<<<<<<<<<<<
 *                 self.rtype  = self.stype
 *         return 0
 */
      __pyx_v_self->rcount = __pyx_v_self->scount;

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":569
 *                 self.for_cro_send(smsg, root)
 *                 self.rcount = self.scount
 *                 self.rtype  = self.stype             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
      __pyx_v_self->rtype = __pyx_v_self->stype;
    }
    __pyx_L7:;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":570
 *                 self.rcount = self.scount
 *                 self.rtype  = self.stype
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_allreduce(self,
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":572
 *         return 0
 * 
 *     cdef int for_allreduce(self,             # <<<<<<<<<<<<<<
 *                            object smsg, object rmsg,
 *                            MPI_Comm comm) except -1:
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allreduce(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_allreduce");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":575
 *                            object smsg, object rmsg,
 *                            MPI_Comm comm) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int inter=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":576
 *                            MPI_Comm comm) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         # get send and recv buffers
 */
  __pyx_v_inter = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":577
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":579
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)             # <<<<<<<<<<<<<<
 *         if not inter and smsg is __IN_PLACE__:
 *             self.sbuf   = MPI_IN_PLACE
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cro_recv(__pyx_v_self, __pyx_v_rmsg, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":580
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)
 *         if not inter and smsg is __IN_PLACE__:             # <<<<<<<<<<<<<<
 *             self.sbuf   = MPI_IN_PLACE
 *             self.scount = self.rcount
 */
  __pyx_t_1 = (!__pyx_v_inter);
  if (__pyx_t_1) {
    __pyx_t_3 = (__pyx_v_smsg == __pyx_v_6mpi4py_3MPI___IN_PLACE__);
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_1;
  }
  if (__pyx_t_4) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":581
 *         self.for_cro_recv(rmsg, 0)
 *         if not inter and smsg is __IN_PLACE__:
 *             self.sbuf   = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *             self.scount = self.rcount
 *             self.stype  = self.rtype
 */
    __pyx_v_self->sbuf = MPI_IN_PLACE;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":582
 *         if not inter and smsg is __IN_PLACE__:
 *             self.sbuf   = MPI_IN_PLACE
 *             self.scount = self.rcount             # <<<<<<<<<<<<<<
 *             self.stype  = self.rtype
 *         else:
 */
    __pyx_v_self->scount = __pyx_v_self->rcount;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":583
 *             self.sbuf   = MPI_IN_PLACE
 *             self.scount = self.rcount
 *             self.stype  = self.rtype             # <<<<<<<<<<<<<<
 *         else:
 *             self.for_cro_send(smsg, 0)
 */
    __pyx_v_self->stype = __pyx_v_self->rtype;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":585
 *             self.stype  = self.rtype
 *         else:
 *             self.for_cro_send(smsg, 0)             # <<<<<<<<<<<<<<
 *         # check counts and datatypes
 *         if (self.sbuf   != MPI_IN_PLACE and
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cro_send(__pyx_v_self, __pyx_v_smsg, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":587
 *             self.for_cro_send(smsg, 0)
 *         # check counts and datatypes
 *         if (self.sbuf   != MPI_IN_PLACE and             # <<<<<<<<<<<<<<
 *             self.scount != self.rcount):
 *             raise ValueError(
 */
  __pyx_t_4 = (__pyx_v_self->sbuf != MPI_IN_PLACE);
  if (__pyx_t_4) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":588
 *         # check counts and datatypes
 *         if (self.sbuf   != MPI_IN_PLACE and
 *             self.scount != self.rcount):             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 "mismatch in send count %d and receive count %d" %
 */
    __pyx_t_1 = (__pyx_v_self->scount != __pyx_v_self->rcount);
    __pyx_t_3 = __pyx_t_1;
  } else {
    __pyx_t_3 = __pyx_t_4;
  }
  if (__pyx_t_3) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":591
 *             raise ValueError(
 *                 "mismatch in send count %d and receive count %d" %
 *                 (self.scount, self.rcount))             # <<<<<<<<<<<<<<
 *         if (self.sbuf  != MPI_IN_PLACE and
 *             self.stype != self.rtype):
 */
    __pyx_t_5 = PyInt_FromLong(__pyx_v_self->scount); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyInt_FromLong(__pyx_v_self->rcount); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_7));
    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __pyx_t_5 = 0;
    __pyx_t_6 = 0;
    __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_35), ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
    __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_7));
    PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_t_6 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
    __Pyx_Raise(__pyx_t_6, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    {__pyx_filename = __pyx_f[15]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":592
 *                 "mismatch in send count %d and receive count %d" %
 *                 (self.scount, self.rcount))
 *         if (self.sbuf  != MPI_IN_PLACE and             # <<<<<<<<<<<<<<
 *             self.stype != self.rtype):
 *             raise ValueError(
 */
  __pyx_t_3 = (__pyx_v_self->sbuf != MPI_IN_PLACE);
  if (__pyx_t_3) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":593
 *                 (self.scount, self.rcount))
 *         if (self.sbuf  != MPI_IN_PLACE and
 *             self.stype != self.rtype):             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 "mismatch in send and receive MPI datatypes")
 */
    __pyx_t_4 = (__pyx_v_self->stype != __pyx_v_self->rtype);
    __pyx_t_1 = __pyx_t_4;
  } else {
    __pyx_t_1 = __pyx_t_3;
  }
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":594
 *         if (self.sbuf  != MPI_IN_PLACE and
 *             self.stype != self.rtype):
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 "mismatch in send and receive MPI datatypes")
 *         return 0
 */
    __pyx_t_6 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_37), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_Raise(__pyx_t_6, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    {__pyx_filename = __pyx_f[15]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":596
 *             raise ValueError(
 *                 "mismatch in send and receive MPI datatypes")
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_reduce_scatter_block(self,
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_allreduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":598
 *         return 0
 * 
 *     cdef int for_reduce_scatter_block(self,             # <<<<<<<<<<<<<<
 *                                       object smsg, object rmsg,
 *                                       MPI_Comm comm) except -1:
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce_scatter_block(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_v_size;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_reduce_scatter_block");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":601
 *                                       object smsg, object rmsg,
 *                                       MPI_Comm comm) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":602
 *                                       MPI_Comm comm) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         CHKERR( MPI_Comm_size(comm, &size) )
 */
  __pyx_v_inter = 0;
  __pyx_v_size = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":603
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         # get send and recv buffers
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":604
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         # get send and recv buffers
 *         if not inter and smsg is __IN_PLACE__:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":606
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         # get send and recv buffers
 *         if not inter and smsg is __IN_PLACE__:             # <<<<<<<<<<<<<<
 *             self.for_cco_recv(0, rmsg, 0, size)
 *             self.sbuf = MPI_IN_PLACE
 */
  __pyx_t_1 = (!__pyx_v_inter);
  if (__pyx_t_1) {
    __pyx_t_3 = (__pyx_v_smsg == __pyx_v_6mpi4py_3MPI___IN_PLACE__);
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_1;
  }
  if (__pyx_t_4) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":607
 *         # get send and recv buffers
 *         if not inter and smsg is __IN_PLACE__:
 *             self.for_cco_recv(0, rmsg, 0, size)             # <<<<<<<<<<<<<<
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_recv(__pyx_v_self, 0, __pyx_v_rmsg, 0, __pyx_v_size); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":608
 *         if not inter and smsg is __IN_PLACE__:
 *             self.for_cco_recv(0, rmsg, 0, size)
 *             self.sbuf = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *         else:
 *             self.for_cco_recv(0, rmsg, 0, 0)
 */
    __pyx_v_self->sbuf = MPI_IN_PLACE;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":610
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 *             self.for_cco_recv(0, rmsg, 0, 0)             # <<<<<<<<<<<<<<
 *             self.for_cco_send(0, smsg, 0, size)
 *         # check counts and datatypes
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_recv(__pyx_v_self, 0, __pyx_v_rmsg, 0, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 610; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":611
 *         else:
 *             self.for_cco_recv(0, rmsg, 0, 0)
 *             self.for_cco_send(0, smsg, 0, size)             # <<<<<<<<<<<<<<
 *         # check counts and datatypes
 *         if self.sbuf != MPI_IN_PLACE:
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cco_send(__pyx_v_self, 0, __pyx_v_smsg, 0, __pyx_v_size); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":613
 *             self.for_cco_send(0, smsg, 0, size)
 *         # check counts and datatypes
 *         if self.sbuf != MPI_IN_PLACE:             # <<<<<<<<<<<<<<
 *             if self.stype != self.rtype:
 *                 raise ValueError(
 */
  __pyx_t_4 = (__pyx_v_self->sbuf != MPI_IN_PLACE);
  if (__pyx_t_4) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":614
 *         # check counts and datatypes
 *         if self.sbuf != MPI_IN_PLACE:
 *             if self.stype != self.rtype:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     "mismatch in send and receive MPI datatypes")
 */
    __pyx_t_4 = (__pyx_v_self->stype != __pyx_v_self->rtype);
    if (__pyx_t_4) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":615
 *         if self.sbuf != MPI_IN_PLACE:
 *             if self.stype != self.rtype:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     "mismatch in send and receive MPI datatypes")
 *             if self.scount != self.rcount:
 */
      __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_38), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      {__pyx_filename = __pyx_f[15]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":617
 *                 raise ValueError(
 *                     "mismatch in send and receive MPI datatypes")
 *             if self.scount != self.rcount:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     "mismatch in send count %d receive count %d" %
 */
    __pyx_t_4 = (__pyx_v_self->scount != __pyx_v_self->rcount);
    if (__pyx_t_4) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":620
 *                 raise ValueError(
 *                     "mismatch in send count %d receive count %d" %
 *                     (self.scount, self.rcount*size))             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
      __pyx_t_5 = PyInt_FromLong(__pyx_v_self->scount); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = PyInt_FromLong((__pyx_v_self->rcount * __pyx_v_size)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_7));
      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      __pyx_t_5 = 0;
      __pyx_t_6 = 0;
      __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_39), ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_6));
      __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
      __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_7));
      PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_t_6));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
      __pyx_t_6 = 0;
      __pyx_t_6 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      {__pyx_filename = __pyx_f[15]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":621
 *                     "mismatch in send count %d receive count %d" %
 *                     (self.scount, self.rcount*size))
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_reduce_scatter(self,
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_reduce_scatter_block", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":623
 *         return 0
 * 
 *     cdef int for_reduce_scatter(self,             # <<<<<<<<<<<<<<
 *                                 object smsg, object rmsg, object rcnt,
 *                                 MPI_Comm comm) except -1:
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce_scatter(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, PyObject *__pyx_v_rcnt, MPI_Comm __pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_v_size;
  int __pyx_v_rank;
  int __pyx_v_i;
  int __pyx_v_sumrcounts;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_reduce_scatter");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":626
 *                                 object smsg, object rmsg, object rcnt,
 *                                 MPI_Comm comm) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int inter=0, size=0, rank=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":627
 *                                 MPI_Comm comm) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0, rank=MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         CHKERR( MPI_Comm_size(comm, &size) )
 */
  __pyx_v_inter = 0;
  __pyx_v_size = 0;
  __pyx_v_rank = MPI_PROC_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":628
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0, rank=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":629
 *         cdef int inter=0, size=0, rank=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         # get send and recv buffers
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 629; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":630
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":632
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)             # <<<<<<<<<<<<<<
 *         if not inter and smsg is __IN_PLACE__:
 *             self.sbuf = MPI_IN_PLACE
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cro_recv(__pyx_v_self, __pyx_v_rmsg, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":633
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)
 *         if not inter and smsg is __IN_PLACE__:             # <<<<<<<<<<<<<<
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 */
  __pyx_t_1 = (!__pyx_v_inter);
  if (__pyx_t_1) {
    __pyx_t_3 = (__pyx_v_smsg == __pyx_v_6mpi4py_3MPI___IN_PLACE__);
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_1;
  }
  if (__pyx_t_4) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":634
 *         self.for_cro_recv(rmsg, 0)
 *         if not inter and smsg is __IN_PLACE__:
 *             self.sbuf = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *         else:
 *             self.for_cro_send(smsg, 0)
 */
    __pyx_v_self->sbuf = MPI_IN_PLACE;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":636
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 *             self.for_cro_send(smsg, 0)             # <<<<<<<<<<<<<<
 *         # get receive counts
 *         if rcnt is None and not inter and self.sbuf != MPI_IN_PLACE:
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cro_send(__pyx_v_self, __pyx_v_smsg, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":638
 *             self.for_cro_send(smsg, 0)
 *         # get receive counts
 *         if rcnt is None and not inter and self.sbuf != MPI_IN_PLACE:             # <<<<<<<<<<<<<<
 *             self._rcnt = newarray_int(size, &self.rcounts)
 *             CHKERR( MPI_Allgather(&self.rcount, 1, MPI_INT,
 */
  __pyx_t_4 = (__pyx_v_rcnt == Py_None);
  if (__pyx_t_4) {
    __pyx_t_1 = (!__pyx_v_inter);
    if (__pyx_t_1) {
      __pyx_t_3 = (__pyx_v_self->sbuf != MPI_IN_PLACE);
      __pyx_t_5 = __pyx_t_3;
    } else {
      __pyx_t_5 = __pyx_t_1;
    }
    __pyx_t_1 = __pyx_t_5;
  } else {
    __pyx_t_1 = __pyx_t_4;
  }
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":639
 *         # get receive counts
 *         if rcnt is None and not inter and self.sbuf != MPI_IN_PLACE:
 *             self._rcnt = newarray_int(size, &self.rcounts)             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Allgather(&self.rcount, 1, MPI_INT,
 *                                   self.rcounts, 1, MPI_INT, comm) )
 */
    __pyx_t_6 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_size, (&__pyx_v_self->rcounts)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __Pyx_GOTREF(__pyx_v_self->_rcnt);
    __Pyx_DECREF(__pyx_v_self->_rcnt);
    __pyx_v_self->_rcnt = __pyx_t_6;
    __pyx_t_6 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":641
 *             self._rcnt = newarray_int(size, &self.rcounts)
 *             CHKERR( MPI_Allgather(&self.rcount, 1, MPI_INT,
 *                                   self.rcounts, 1, MPI_INT, comm) )             # <<<<<<<<<<<<<<
 *         else:
 *             self._rcnt = chkarray_int(rcnt, size, &self.rcounts)
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Allgather((&__pyx_v_self->rcount), 1, MPI_INT, __pyx_v_self->rcounts, 1, MPI_INT, __pyx_v_comm)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 640; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":643
 *                                   self.rcounts, 1, MPI_INT, comm) )
 *         else:
 *             self._rcnt = chkarray_int(rcnt, size, &self.rcounts)             # <<<<<<<<<<<<<<
 *         # total sum or receive counts
 *         cdef int i=0, sumrcounts=0
 */
    __pyx_t_6 = __pyx_f_6mpi4py_3MPI_chkarray_int(__pyx_v_rcnt, __pyx_v_size, (&__pyx_v_self->rcounts)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __Pyx_GOTREF(__pyx_v_self->_rcnt);
    __Pyx_DECREF(__pyx_v_self->_rcnt);
    __pyx_v_self->_rcnt = __pyx_t_6;
    __pyx_t_6 = 0;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":645
 *             self._rcnt = chkarray_int(rcnt, size, &self.rcounts)
 *         # total sum or receive counts
 *         cdef int i=0, sumrcounts=0             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < size:
 *             sumrcounts += self.rcounts[i]
 */
  __pyx_v_i = 0;
  __pyx_v_sumrcounts = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":646
 *         # total sum or receive counts
 *         cdef int i=0, sumrcounts=0
 *         for i from 0 <= i < size:             # <<<<<<<<<<<<<<
 *             sumrcounts += self.rcounts[i]
 *         # check counts and datatypes
 */
  __pyx_t_2 = __pyx_v_size;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":647
 *         cdef int i=0, sumrcounts=0
 *         for i from 0 <= i < size:
 *             sumrcounts += self.rcounts[i]             # <<<<<<<<<<<<<<
 *         # check counts and datatypes
 *         if self.sbuf != MPI_IN_PLACE:
 */
    __pyx_v_sumrcounts = (__pyx_v_sumrcounts + (__pyx_v_self->rcounts[__pyx_v_i]));
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":649
 *             sumrcounts += self.rcounts[i]
 *         # check counts and datatypes
 *         if self.sbuf != MPI_IN_PLACE:             # <<<<<<<<<<<<<<
 *             if self.stype != self.rtype:
 *                 raise ValueError(
 */
  __pyx_t_1 = (__pyx_v_self->sbuf != MPI_IN_PLACE);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":650
 *         # check counts and datatypes
 *         if self.sbuf != MPI_IN_PLACE:
 *             if self.stype != self.rtype:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     "mismatch in send and receive MPI datatypes")
 */
    __pyx_t_1 = (__pyx_v_self->stype != __pyx_v_self->rtype);
    if (__pyx_t_1) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":651
 *         if self.sbuf != MPI_IN_PLACE:
 *             if self.stype != self.rtype:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     "mismatch in send and receive MPI datatypes")
 *             if self.scount != sumrcounts:
 */
      __pyx_t_6 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_40), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      {__pyx_filename = __pyx_f[15]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":653
 *                 raise ValueError(
 *                     "mismatch in send and receive MPI datatypes")
 *             if self.scount != sumrcounts:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     "mismatch in send count %d and sum(counts) %d" %
 */
    __pyx_t_1 = (__pyx_v_self->scount != __pyx_v_sumrcounts);
    if (__pyx_t_1) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":656
 *                 raise ValueError(
 *                     "mismatch in send count %d and sum(counts) %d" %
 *                     (self.scount, sumrcounts))             # <<<<<<<<<<<<<<
 *             if self.rcount != self.rcounts[rank]:
 *                 raise ValueError(
 */
      __pyx_t_6 = PyInt_FromLong(__pyx_v_self->scount); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = PyInt_FromLong(__pyx_v_sumrcounts); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_8));
      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_7);
      __pyx_t_6 = 0;
      __pyx_t_7 = 0;
      __pyx_t_7 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_41), ((PyObject *)__pyx_t_8)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_7));
      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
      __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_8));
      PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_t_7));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_7));
      __pyx_t_7 = 0;
      __pyx_t_7 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
      __Pyx_Raise(__pyx_t_7, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      {__pyx_filename = __pyx_f[15]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L10;
    }
    __pyx_L10:;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":657
 *                     "mismatch in send count %d and sum(counts) %d" %
 *                     (self.scount, sumrcounts))
 *             if self.rcount != self.rcounts[rank]:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     "mismatch in receive count %d and counts[%d] %d" %
 */
    __pyx_t_1 = (__pyx_v_self->rcount != (__pyx_v_self->rcounts[__pyx_v_rank]));
    if (__pyx_t_1) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":660
 *                 raise ValueError(
 *                     "mismatch in receive count %d and counts[%d] %d" %
 *                     (self.rcount, rank, self.rcounts[rank]))             # <<<<<<<<<<<<<<
 *         else:
 *             if self.rcount != sumrcounts:
 */
      __pyx_t_7 = PyInt_FromLong(__pyx_v_self->rcount); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = PyInt_FromLong(__pyx_v_rank); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_6 = PyInt_FromLong((__pyx_v_self->rcounts[__pyx_v_rank])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_9));
      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      __pyx_t_7 = 0;
      __pyx_t_8 = 0;
      __pyx_t_6 = 0;
      __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_42), ((PyObject *)__pyx_t_9)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_6));
      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_9));
      PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_t_6));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
      __pyx_t_6 = 0;
      __pyx_t_6 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      {__pyx_filename = __pyx_f[15]; __pyx_lineno = 658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L11;
    }
    __pyx_L11:;
    goto __pyx_L8;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":662
 *                     (self.rcount, rank, self.rcounts[rank]))
 *         else:
 *             if self.rcount != sumrcounts:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     "mismatch in receive count %d and sum(counts) %d" %
 */
    __pyx_t_1 = (__pyx_v_self->rcount != __pyx_v_sumrcounts);
    if (__pyx_t_1) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":665
 *                 raise ValueError(
 *                     "mismatch in receive count %d and sum(counts) %d" %
 *                     (self.rcount, sumrcounts))             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
      __pyx_t_6 = PyInt_FromLong(__pyx_v_self->rcount); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_9 = PyInt_FromLong(__pyx_v_sumrcounts); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_8));
      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_9);
      __pyx_t_6 = 0;
      __pyx_t_9 = 0;
      __pyx_t_9 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_43), ((PyObject *)__pyx_t_8)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_9));
      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
      __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_8));
      PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_t_9));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_9));
      __pyx_t_9 = 0;
      __pyx_t_9 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
      __Pyx_Raise(__pyx_t_9, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      {__pyx_filename = __pyx_f[15]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L12;
    }
    __pyx_L12:;
  }
  __pyx_L8:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":666
 *                     "mismatch in receive count %d and sum(counts) %d" %
 *                     (self.rcount, sumrcounts))
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_scan(self,
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_reduce_scatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":668
 *         return 0
 * 
 *     cdef int for_scan(self,             # <<<<<<<<<<<<<<
 *                       object smsg, object rmsg,
 *                       MPI_Comm comm) except -1:
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scan(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_scan");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":671
 *                       object smsg, object rmsg,
 *                       MPI_Comm comm) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":673
 *         if comm == MPI_COMM_NULL: return 0
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)             # <<<<<<<<<<<<<<
 *         if smsg is __IN_PLACE__:
 *             self.sbuf   = MPI_IN_PLACE
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cro_recv(__pyx_v_self, __pyx_v_rmsg, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":674
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)
 *         if smsg is __IN_PLACE__:             # <<<<<<<<<<<<<<
 *             self.sbuf   = MPI_IN_PLACE
 *             self.scount = self.rcount
 */
  __pyx_t_1 = (__pyx_v_smsg == __pyx_v_6mpi4py_3MPI___IN_PLACE__);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":675
 *         self.for_cro_recv(rmsg, 0)
 *         if smsg is __IN_PLACE__:
 *             self.sbuf   = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *             self.scount = self.rcount
 *             self.stype  = self.rtype
 */
    __pyx_v_self->sbuf = MPI_IN_PLACE;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":676
 *         if smsg is __IN_PLACE__:
 *             self.sbuf   = MPI_IN_PLACE
 *             self.scount = self.rcount             # <<<<<<<<<<<<<<
 *             self.stype  = self.rtype
 *         else:
 */
    __pyx_v_self->scount = __pyx_v_self->rcount;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":677
 *             self.sbuf   = MPI_IN_PLACE
 *             self.scount = self.rcount
 *             self.stype  = self.rtype             # <<<<<<<<<<<<<<
 *         else:
 *             self.for_cro_send(smsg, 0)
 */
    __pyx_v_self->stype = __pyx_v_self->rtype;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":679
 *             self.stype  = self.rtype
 *         else:
 *             self.for_cro_send(smsg, 0)             # <<<<<<<<<<<<<<
 *         # check counts and datatypes
 *         if (self.sbuf   != MPI_IN_PLACE and
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cro_send(__pyx_v_self, __pyx_v_smsg, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":681
 *             self.for_cro_send(smsg, 0)
 *         # check counts and datatypes
 *         if (self.sbuf   != MPI_IN_PLACE and             # <<<<<<<<<<<<<<
 *             self.scount != self.rcount):
 *             raise ValueError(
 */
  __pyx_t_1 = (__pyx_v_self->sbuf != MPI_IN_PLACE);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":682
 *         # check counts and datatypes
 *         if (self.sbuf   != MPI_IN_PLACE and
 *             self.scount != self.rcount):             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 "mismatch in send count %d and receive count %d" %
 */
    __pyx_t_3 = (__pyx_v_self->scount != __pyx_v_self->rcount);
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_1;
  }
  if (__pyx_t_4) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":685
 *             raise ValueError(
 *                 "mismatch in send count %d and receive count %d" %
 *                 (self.scount, self.rcount))             # <<<<<<<<<<<<<<
 *         if (self.sbuf  != MPI_IN_PLACE and
 *             self.stype != self.rtype):
 */
    __pyx_t_5 = PyInt_FromLong(__pyx_v_self->scount); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyInt_FromLong(__pyx_v_self->rcount); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_7));
    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __pyx_t_5 = 0;
    __pyx_t_6 = 0;
    __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_35), ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 684; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
    __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_7));
    PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_t_6 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
    __Pyx_Raise(__pyx_t_6, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    {__pyx_filename = __pyx_f[15]; __pyx_lineno = 683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":686
 *                 "mismatch in send count %d and receive count %d" %
 *                 (self.scount, self.rcount))
 *         if (self.sbuf  != MPI_IN_PLACE and             # <<<<<<<<<<<<<<
 *             self.stype != self.rtype):
 *             raise ValueError(
 */
  __pyx_t_4 = (__pyx_v_self->sbuf != MPI_IN_PLACE);
  if (__pyx_t_4) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":687
 *                 (self.scount, self.rcount))
 *         if (self.sbuf  != MPI_IN_PLACE and
 *             self.stype != self.rtype):             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 "mismatch in send and receive MPI datatypes")
 */
    __pyx_t_1 = (__pyx_v_self->stype != __pyx_v_self->rtype);
    __pyx_t_3 = __pyx_t_1;
  } else {
    __pyx_t_3 = __pyx_t_4;
  }
  if (__pyx_t_3) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":688
 *         if (self.sbuf  != MPI_IN_PLACE and
 *             self.stype != self.rtype):
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 "mismatch in send and receive MPI datatypes")
 *         return 0
 */
    __pyx_t_6 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_44), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_Raise(__pyx_t_6, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    {__pyx_filename = __pyx_f[15]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":690
 *             raise ValueError(
 *                 "mismatch in send and receive MPI datatypes")
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_exscan(self,
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_scan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":692
 *         return 0
 * 
 *     cdef int for_exscan(self,             # <<<<<<<<<<<<<<
 *                         object smsg, object rmsg,
 *                         MPI_Comm comm) except -1:
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_exscan(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_exscan");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":695
 *                         object smsg, object rmsg,
 *                         MPI_Comm comm) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":697
 *         if comm == MPI_COMM_NULL: return 0
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)             # <<<<<<<<<<<<<<
 *         if smsg is __IN_PLACE__:
 *             self.sbuf   = MPI_IN_PLACE
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cro_recv(__pyx_v_self, __pyx_v_rmsg, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":698
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)
 *         if smsg is __IN_PLACE__:             # <<<<<<<<<<<<<<
 *             self.sbuf   = MPI_IN_PLACE
 *             self.scount = self.rcount
 */
  __pyx_t_1 = (__pyx_v_smsg == __pyx_v_6mpi4py_3MPI___IN_PLACE__);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":699
 *         self.for_cro_recv(rmsg, 0)
 *         if smsg is __IN_PLACE__:
 *             self.sbuf   = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *             self.scount = self.rcount
 *             self.stype  = self.rtype
 */
    __pyx_v_self->sbuf = MPI_IN_PLACE;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":700
 *         if smsg is __IN_PLACE__:
 *             self.sbuf   = MPI_IN_PLACE
 *             self.scount = self.rcount             # <<<<<<<<<<<<<<
 *             self.stype  = self.rtype
 *         else:
 */
    __pyx_v_self->scount = __pyx_v_self->rcount;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":701
 *             self.sbuf   = MPI_IN_PLACE
 *             self.scount = self.rcount
 *             self.stype  = self.rtype             # <<<<<<<<<<<<<<
 *         else:
 *             self.for_cro_send(smsg, 0)
 */
    __pyx_v_self->stype = __pyx_v_self->rtype;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":703
 *             self.stype  = self.rtype
 *         else:
 *             self.for_cro_send(smsg, 0)             # <<<<<<<<<<<<<<
 *         # check counts and datatypes
 *         if self.scount != self.rcount:
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self->__pyx_vtab)->for_cro_send(__pyx_v_self, __pyx_v_smsg, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":705
 *             self.for_cro_send(smsg, 0)
 *         # check counts and datatypes
 *         if self.scount != self.rcount:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 "mismatch in send count %d and receive count %d" %
 */
  __pyx_t_1 = (__pyx_v_self->scount != __pyx_v_self->rcount);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":708
 *             raise ValueError(
 *                 "mismatch in send count %d and receive count %d" %
 *                 (self.scount, self.rcount))             # <<<<<<<<<<<<<<
 *         if self.stype != self.rtype:
 *             raise ValueError(
 */
    __pyx_t_3 = PyInt_FromLong(__pyx_v_self->scount); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyInt_FromLong(__pyx_v_self->rcount); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_3 = 0;
    __pyx_t_4 = 0;
    __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_35), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_4));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
    __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[15]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":709
 *                 "mismatch in send count %d and receive count %d" %
 *                 (self.scount, self.rcount))
 *         if self.stype != self.rtype:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 "mismatch in send and receive MPI datatypes")
 */
  __pyx_t_1 = (__pyx_v_self->stype != __pyx_v_self->rtype);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":710
 *                 (self.scount, self.rcount))
 *         if self.stype != self.rtype:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 "mismatch in send and receive MPI datatypes")
 *         return 0
 */
    __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_45), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[15]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":712
 *             raise ValueError(
 *                 "mismatch in send and receive MPI datatypes")
 *         return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_exscan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":715
 * 
 * 
 * cdef inline _p_msg_cco message_cco():             # <<<<<<<<<<<<<<
 *     cdef _p_msg_cco msg = <_p_msg_cco>_p_msg_cco.__new__(_p_msg_cco)
 *     return msg
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_f_6mpi4py_3MPI_message_cco(void) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_msg = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_cco");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":716
 * 
 * cdef inline _p_msg_cco message_cco():
 *     cdef _p_msg_cco msg = <_p_msg_cco>_p_msg_cco.__new__(_p_msg_cco)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_msg_cco)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1)));
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":717
 * cdef inline _p_msg_cco message_cco():
 *     cdef _p_msg_cco msg = <_p_msg_cco>_p_msg_cco.__new__(_p_msg_cco)
 *     return msg             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_msg));
  __pyx_r = __pyx_v_msg;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.message_cco", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":735
 *     cdef object _target
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.oaddr  = NULL
 *         self.ocount = 0
 */

static int __pyx_pf_6mpi4py_3MPI_10_p_msg_rma___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_10_p_msg_rma___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":736
 * 
 *     def __cinit__(self):
 *         self.oaddr  = NULL             # <<<<<<<<<<<<<<
 *         self.ocount = 0
 *         self.otype  = MPI_DATATYPE_NULL
 */
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_v_self)->oaddr = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":737
 *     def __cinit__(self):
 *         self.oaddr  = NULL
 *         self.ocount = 0             # <<<<<<<<<<<<<<
 *         self.otype  = MPI_DATATYPE_NULL
 *         self.tdisp  = 0
 */
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_v_self)->ocount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":738
 *         self.oaddr  = NULL
 *         self.ocount = 0
 *         self.otype  = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *         self.tdisp  = 0
 *         self.tcount = 0
 */
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_v_self)->otype = MPI_DATATYPE_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":739
 *         self.ocount = 0
 *         self.otype  = MPI_DATATYPE_NULL
 *         self.tdisp  = 0             # <<<<<<<<<<<<<<
 *         self.tcount = 0
 *         self.ttype  = MPI_DATATYPE_NULL
 */
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_v_self)->tdisp = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":740
 *         self.otype  = MPI_DATATYPE_NULL
 *         self.tdisp  = 0
 *         self.tcount = 0             # <<<<<<<<<<<<<<
 *         self.ttype  = MPI_DATATYPE_NULL
 * 
 */
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_v_self)->tcount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":741
 *         self.tdisp  = 0
 *         self.tcount = 0
 *         self.ttype  = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_rma(self, int readonly,
 */
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_v_self)->ttype = MPI_DATATYPE_NULL;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":743
 *         self.ttype  = MPI_DATATYPE_NULL
 * 
 *     cdef int for_rma(self, int readonly,             # <<<<<<<<<<<<<<
 *                      object origin, int rank, object target) except -1:
 *         # ORIGIN
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_rma(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, int __pyx_v_readonly, PyObject *__pyx_v_origin, int __pyx_v_rank, PyObject *__pyx_v_target) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_t_11;
  MPI_Aint __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_rma");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":748
 *         self._origin = message_simple(
 *             origin, readonly, rank, 0,
 *             &self.oaddr,  &self.ocount,  &self.otype)             # <<<<<<<<<<<<<<
 *         if ((rank == MPI_PROC_NULL) and
 *             (origin is not None) and
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_origin, __pyx_v_readonly, __pyx_v_rank, 0, (&__pyx_v_self->oaddr), (&__pyx_v_self->ocount), (&__pyx_v_self->otype))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":746
 *                      object origin, int rank, object target) except -1:
 *         # ORIGIN
 *         self._origin = message_simple(             # <<<<<<<<<<<<<<
 *             origin, readonly, rank, 0,
 *             &self.oaddr,  &self.ocount,  &self.otype)
 */
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_origin);
  __Pyx_DECREF(__pyx_v_self->_origin);
  __pyx_v_self->_origin = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":749
 *             origin, readonly, rank, 0,
 *             &self.oaddr,  &self.ocount,  &self.otype)
 *         if ((rank == MPI_PROC_NULL) and             # <<<<<<<<<<<<<<
 *             (origin is not None) and
 *             (is_list(origin) or is_tuple(origin)) and
 */
  __pyx_t_2 = (__pyx_v_rank == MPI_PROC_NULL);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":750
 *             &self.oaddr,  &self.ocount,  &self.otype)
 *         if ((rank == MPI_PROC_NULL) and
 *             (origin is not None) and             # <<<<<<<<<<<<<<
 *             (is_list(origin) or is_tuple(origin)) and
 *             (len(origin) > 0 and isinstance(origin[-1], Datatype))):
 */
    __pyx_t_3 = (__pyx_v_origin != Py_None);
    if (__pyx_t_3) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":751
 *         if ((rank == MPI_PROC_NULL) and
 *             (origin is not None) and
 *             (is_list(origin) or is_tuple(origin)) and             # <<<<<<<<<<<<<<
 *             (len(origin) > 0 and isinstance(origin[-1], Datatype))):
 *             self.otype  = (<Datatype?>origin[-1]).ob_mpi
 */
      __pyx_t_4 = PyList_Check(__pyx_v_origin);
      if (!__pyx_t_4) {
        __pyx_t_5 = PyTuple_Check(__pyx_v_origin);
        __pyx_t_6 = __pyx_t_5;
      } else {
        __pyx_t_6 = __pyx_t_4;
      }
      if (__pyx_t_6) {

        /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":752
 *             (origin is not None) and
 *             (is_list(origin) or is_tuple(origin)) and
 *             (len(origin) > 0 and isinstance(origin[-1], Datatype))):             # <<<<<<<<<<<<<<
 *             self.otype  = (<Datatype?>origin[-1]).ob_mpi
 *             self._origin = origin
 */
        __pyx_t_7 = PyObject_Length(__pyx_v_origin); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_t_8 = (__pyx_t_7 > 0);
        if (__pyx_t_8) {
          __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_origin, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_9 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype));
          __Pyx_INCREF(__pyx_t_9);
          __pyx_t_10 = __Pyx_TypeCheck(__pyx_t_1, __pyx_t_9); 
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __pyx_t_11 = __pyx_t_10;
        } else {
          __pyx_t_11 = __pyx_t_8;
        }
        __pyx_t_8 = __pyx_t_11;
      } else {
        __pyx_t_8 = __pyx_t_6;
      }
      __pyx_t_6 = __pyx_t_8;
    } else {
      __pyx_t_6 = __pyx_t_3;
    }
    __pyx_t_3 = __pyx_t_6;
  } else {
    __pyx_t_3 = __pyx_t_2;
  }
  if (__pyx_t_3) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":753
 *             (is_list(origin) or is_tuple(origin)) and
 *             (len(origin) > 0 and isinstance(origin[-1], Datatype))):
 *             self.otype  = (<Datatype?>origin[-1]).ob_mpi             # <<<<<<<<<<<<<<
 *             self._origin = origin
 *         # TARGET
 */
    __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_origin, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_9);
    if (!(likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Datatype)))) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_self->otype = ((struct PyMPIDatatypeObject *)__pyx_t_9)->ob_mpi;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":754
 *             (len(origin) > 0 and isinstance(origin[-1], Datatype))):
 *             self.otype  = (<Datatype?>origin[-1]).ob_mpi
 *             self._origin = origin             # <<<<<<<<<<<<<<
 *         # TARGET
 *         if target is None:
 */
    __Pyx_INCREF(__pyx_v_origin);
    __Pyx_GIVEREF(__pyx_v_origin);
    __Pyx_GOTREF(__pyx_v_self->_origin);
    __Pyx_DECREF(__pyx_v_self->_origin);
    __pyx_v_self->_origin = __pyx_v_origin;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":756
 *             self._origin = origin
 *         # TARGET
 *         if target is None:             # <<<<<<<<<<<<<<
 *             self.tdisp  = 0
 *             self.tcount = self.ocount
 */
  __pyx_t_3 = (__pyx_v_target == Py_None);
  if (__pyx_t_3) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":757
 *         # TARGET
 *         if target is None:
 *             self.tdisp  = 0             # <<<<<<<<<<<<<<
 *             self.tcount = self.ocount
 *             self.ttype  = self.otype
 */
    __pyx_v_self->tdisp = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":758
 *         if target is None:
 *             self.tdisp  = 0
 *             self.tcount = self.ocount             # <<<<<<<<<<<<<<
 *             self.ttype  = self.otype
 *         elif is_int(target):
 */
    __pyx_v_self->tcount = __pyx_v_self->ocount;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":759
 *             self.tdisp  = 0
 *             self.tcount = self.ocount
 *             self.ttype  = self.otype             # <<<<<<<<<<<<<<
 *         elif is_int(target):
 *             self.tdisp  = <MPI_Aint>target
 */
    __pyx_v_self->ttype = __pyx_v_self->otype;
    goto __pyx_L4;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":760
 *             self.tcount = self.ocount
 *             self.ttype  = self.otype
 *         elif is_int(target):             # <<<<<<<<<<<<<<
 *             self.tdisp  = <MPI_Aint>target
 *             self.tcount = self.ocount
 */
  __pyx_t_4 = PyInt_Check(__pyx_v_target);
  if (__pyx_t_4) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":761
 *             self.ttype  = self.otype
 *         elif is_int(target):
 *             self.tdisp  = <MPI_Aint>target             # <<<<<<<<<<<<<<
 *             self.tcount = self.ocount
 *             self.ttype  = self.otype
 */
    __pyx_t_12 = __Pyx_PyInt_from_py_MPI_Aint(__pyx_v_target); if (unlikely((__pyx_t_12 == (MPI_Aint)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_self->tdisp = ((MPI_Aint)__pyx_t_12);

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":762
 *         elif is_int(target):
 *             self.tdisp  = <MPI_Aint>target
 *             self.tcount = self.ocount             # <<<<<<<<<<<<<<
 *             self.ttype  = self.otype
 *         elif is_list(target) or is_tuple(target):
 */
    __pyx_v_self->tcount = __pyx_v_self->ocount;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":763
 *             self.tdisp  = <MPI_Aint>target
 *             self.tcount = self.ocount
 *             self.ttype  = self.otype             # <<<<<<<<<<<<<<
 *         elif is_list(target) or is_tuple(target):
 *             if len(target) != 3:
 */
    __pyx_v_self->ttype = __pyx_v_self->otype;
    goto __pyx_L4;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":764
 *             self.tcount = self.ocount
 *             self.ttype  = self.otype
 *         elif is_list(target) or is_tuple(target):             # <<<<<<<<<<<<<<
 *             if len(target) != 3:
 *                 raise ValueError("target: expecting 3 items")
 */
  __pyx_t_4 = PyList_Check(__pyx_v_target);
  if (!__pyx_t_4) {
    __pyx_t_5 = PyTuple_Check(__pyx_v_target);
    __pyx_t_3 = __pyx_t_5;
  } else {
    __pyx_t_3 = __pyx_t_4;
  }
  if (__pyx_t_3) {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":765
 *             self.ttype  = self.otype
 *         elif is_list(target) or is_tuple(target):
 *             if len(target) != 3:             # <<<<<<<<<<<<<<
 *                 raise ValueError("target: expecting 3 items")
 *             self.tdisp  = <MPI_Aint>target[0]
 */
    __pyx_t_7 = PyObject_Length(__pyx_v_target); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = (__pyx_t_7 != 3);
    if (__pyx_t_3) {

      /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":766
 *         elif is_list(target) or is_tuple(target):
 *             if len(target) != 3:
 *                 raise ValueError("target: expecting 3 items")             # <<<<<<<<<<<<<<
 *             self.tdisp  = <MPI_Aint>target[0]
 *             self.tcount = <int>target[1]
 */
      __pyx_t_9 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_47), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_Raise(__pyx_t_9, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      {__pyx_filename = __pyx_f[15]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":767
 *             if len(target) != 3:
 *                 raise ValueError("target: expecting 3 items")
 *             self.tdisp  = <MPI_Aint>target[0]             # <<<<<<<<<<<<<<
 *             self.tcount = <int>target[1]
 *             self.ttype  = (<Datatype?>target[2]).ob_mpi
 */
    __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_target, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 767; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_12 = __Pyx_PyInt_from_py_MPI_Aint(__pyx_t_9); if (unlikely((__pyx_t_12 == (MPI_Aint)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 767; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_v_self->tdisp = ((MPI_Aint)__pyx_t_12);

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":768
 *                 raise ValueError("target: expecting 3 items")
 *             self.tdisp  = <MPI_Aint>target[0]
 *             self.tcount = <int>target[1]             # <<<<<<<<<<<<<<
 *             self.ttype  = (<Datatype?>target[2]).ob_mpi
 *         else:
 */
    __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_target, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_v_self->tcount = ((int)__pyx_t_4);

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":769
 *             self.tdisp  = <MPI_Aint>target[0]
 *             self.tcount = <int>target[1]
 *             self.ttype  = (<Datatype?>target[2]).ob_mpi             # <<<<<<<<<<<<<<
 *         else:
 *             raise ValueError("target: expecting integral or list/tuple")
 */
    __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_target, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_9);
    if (!(likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Datatype)))) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_self->ttype = ((struct PyMPIDatatypeObject *)__pyx_t_9)->ob_mpi;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":771
 *             self.ttype  = (<Datatype?>target[2]).ob_mpi
 *         else:
 *             raise ValueError("target: expecting integral or list/tuple")             # <<<<<<<<<<<<<<
 *         self._target = target
 *         return 0
 */
    __pyx_t_9 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_49), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_Raise(__pyx_t_9, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    {__pyx_filename = __pyx_f[15]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":772
 *         else:
 *             raise ValueError("target: expecting integral or list/tuple")
 *         self._target = target             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __Pyx_INCREF(__pyx_v_target);
  __Pyx_GIVEREF(__pyx_v_target);
  __Pyx_GOTREF(__pyx_v_self->_target);
  __Pyx_DECREF(__pyx_v_self->_target);
  __pyx_v_self->_target = __pyx_v_target;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":773
 *             raise ValueError("target: expecting integral or list/tuple")
 *         self._target = target
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_put(self, object origin, int rank, object target) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_rma.for_rma", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":775
 *         return 0
 * 
 *     cdef int for_put(self, object origin, int rank, object target) except -1:             # <<<<<<<<<<<<<<
 *         self.for_rma(1, origin, rank, target)
 *         return 0
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_put(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_rank, PyObject *__pyx_v_target) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_put");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":776
 * 
 *     cdef int for_put(self, object origin, int rank, object target) except -1:
 *         self.for_rma(1, origin, rank, target)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_rma *)__pyx_v_self->__pyx_vtab)->for_rma(__pyx_v_self, 1, __pyx_v_origin, __pyx_v_rank, __pyx_v_target); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":777
 *     cdef int for_put(self, object origin, int rank, object target) except -1:
 *         self.for_rma(1, origin, rank, target)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_get(self, object origin, int rank, object target) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_rma.for_put", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":779
 *         return 0
 * 
 *     cdef int for_get(self, object origin, int rank, object target) except -1:             # <<<<<<<<<<<<<<
 *         self.for_rma(0, origin, rank, target)
 *         return 0
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_get(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_rank, PyObject *__pyx_v_target) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_get");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":780
 * 
 *     cdef int for_get(self, object origin, int rank, object target) except -1:
 *         self.for_rma(0, origin, rank, target)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_rma *)__pyx_v_self->__pyx_vtab)->for_rma(__pyx_v_self, 0, __pyx_v_origin, __pyx_v_rank, __pyx_v_target); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":781
 *     cdef int for_get(self, object origin, int rank, object target) except -1:
 *         self.for_rma(0, origin, rank, target)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_acc(self, object origin, int rank, object target) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_rma.for_get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":783
 *         return 0
 * 
 *     cdef int for_acc(self, object origin, int rank, object target) except -1:             # <<<<<<<<<<<<<<
 *         self.for_rma(1, origin, rank, target)
 *         return 0
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_acc(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_rank, PyObject *__pyx_v_target) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_acc");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":784
 * 
 *     cdef int for_acc(self, object origin, int rank, object target) except -1:
 *         self.for_rma(1, origin, rank, target)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_rma *)__pyx_v_self->__pyx_vtab)->for_rma(__pyx_v_self, 1, __pyx_v_origin, __pyx_v_rank, __pyx_v_target); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":785
 *     cdef int for_acc(self, object origin, int rank, object target) except -1:
 *         self.for_rma(1, origin, rank, target)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline _p_msg_rma message_rma():
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_rma.for_acc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":787
 *         return 0
 * 
 * cdef inline _p_msg_rma message_rma():             # <<<<<<<<<<<<<<
 *     cdef _p_msg_rma msg = <_p_msg_rma>_p_msg_rma.__new__(_p_msg_rma)
 *     return msg
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_f_6mpi4py_3MPI_message_rma(void) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_msg = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_rma");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":788
 * 
 * cdef inline _p_msg_rma message_rma():
 *     cdef _p_msg_rma msg = <_p_msg_rma>_p_msg_rma.__new__(_p_msg_rma)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_msg_rma)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_t_1)));
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":789
 * cdef inline _p_msg_rma message_rma():
 *     cdef _p_msg_rma msg = <_p_msg_rma>_p_msg_rma.__new__(_p_msg_rma)
 *     return msg             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_msg));
  __pyx_r = __pyx_v_msg;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.message_rma", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":802
 *     cdef object _msg
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.buf   = NULL
 *         self.count = 0
 */

static int __pyx_pf_6mpi4py_3MPI_9_p_msg_io___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_9_p_msg_io___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":803
 * 
 *     def __cinit__(self):
 *         self.buf   = NULL             # <<<<<<<<<<<<<<
 *         self.count = 0
 *         self.dtype = MPI_DATATYPE_NULL
 */
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_v_self)->buf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":804
 *     def __cinit__(self):
 *         self.buf   = NULL
 *         self.count = 0             # <<<<<<<<<<<<<<
 *         self.dtype = MPI_DATATYPE_NULL
 * 
 */
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_v_self)->count = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":805
 *         self.buf   = NULL
 *         self.count = 0
 *         self.dtype = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_read(self, object msg) except -1:
 */
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_v_self)->dtype = MPI_DATATYPE_NULL;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":807
 *         self.dtype = MPI_DATATYPE_NULL
 * 
 *     cdef int for_read(self, object msg) except -1:             # <<<<<<<<<<<<<<
 *         self._msg = message_simple(msg, 0, # writable
 *                                    0, 0,
 */

static int __pyx_f_6mpi4py_3MPI_9_p_msg_io_for_read(struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_self, PyObject *__pyx_v_msg) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_read");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":812
 *                                    &self.buf,
 *                                    &self.count,
 *                                    &self.dtype)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_msg, 0, 0, 0, (&__pyx_v_self->buf), (&__pyx_v_self->count), (&__pyx_v_self->dtype))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":808
 * 
 *     cdef int for_read(self, object msg) except -1:
 *         self._msg = message_simple(msg, 0, # writable             # <<<<<<<<<<<<<<
 *                                    0, 0,
 *                                    &self.buf,
 */
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_msg);
  __Pyx_DECREF(__pyx_v_self->_msg);
  __pyx_v_self->_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":813
 *                                    &self.count,
 *                                    &self.dtype)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_write(self, object msg) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_io.for_read", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":815
 *         return 0
 * 
 *     cdef int for_write(self, object msg) except -1:             # <<<<<<<<<<<<<<
 *         self._msg = message_simple(msg, 1, # readonly
 *                                    0, 0,
 */

static int __pyx_f_6mpi4py_3MPI_9_p_msg_io_for_write(struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_self, PyObject *__pyx_v_msg) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_write");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":820
 *                                    &self.buf,
 *                                    &self.count,
 *                                    &self.dtype)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_msg, 1, 0, 0, (&__pyx_v_self->buf), (&__pyx_v_self->count), (&__pyx_v_self->dtype))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":816
 * 
 *     cdef int for_write(self, object msg) except -1:
 *         self._msg = message_simple(msg, 1, # readonly             # <<<<<<<<<<<<<<
 *                                    0, 0,
 *                                    &self.buf,
 */
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_msg);
  __Pyx_DECREF(__pyx_v_self->_msg);
  __pyx_v_self->_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":821
 *                                    &self.count,
 *                                    &self.dtype)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline _p_msg_io message_io_read(object buf):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_io.for_write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":823
 *         return 0
 * 
 * cdef inline _p_msg_io message_io_read(object buf):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_io msg = <_p_msg_io>_p_msg_io.__new__(_p_msg_io)
 *     msg.for_read(buf)
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_f_6mpi4py_3MPI_message_io_read(PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_msg = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_io_read");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":824
 * 
 * cdef inline _p_msg_io message_io_read(object buf):
 *     cdef _p_msg_io msg = <_p_msg_io>_p_msg_io.__new__(_p_msg_io)             # <<<<<<<<<<<<<<
 *     msg.for_read(buf)
 *     return msg
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_msg_io)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1)));
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":825
 * cdef inline _p_msg_io message_io_read(object buf):
 *     cdef _p_msg_io msg = <_p_msg_io>_p_msg_io.__new__(_p_msg_io)
 *     msg.for_read(buf)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_io *)__pyx_v_msg->__pyx_vtab)->for_read(__pyx_v_msg, __pyx_v_buf); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":826
 *     cdef _p_msg_io msg = <_p_msg_io>_p_msg_io.__new__(_p_msg_io)
 *     msg.for_read(buf)
 *     return msg             # <<<<<<<<<<<<<<
 * 
 * cdef inline _p_msg_io message_io_write(object buf):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_msg));
  __pyx_r = __pyx_v_msg;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.message_io_read", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":828
 *     return msg
 * 
 * cdef inline _p_msg_io message_io_write(object buf):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_io msg = <_p_msg_io>_p_msg_io.__new__(_p_msg_io)
 *     msg.for_write(buf)
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_f_6mpi4py_3MPI_message_io_write(PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_msg = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_io_write");

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":829
 * 
 * cdef inline _p_msg_io message_io_write(object buf):
 *     cdef _p_msg_io msg = <_p_msg_io>_p_msg_io.__new__(_p_msg_io)             # <<<<<<<<<<<<<<
 *     msg.for_write(buf)
 *     return msg
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_msg_io)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1)));
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":830
 * cdef inline _p_msg_io message_io_write(object buf):
 *     cdef _p_msg_io msg = <_p_msg_io>_p_msg_io.__new__(_p_msg_io)
 *     msg.for_write(buf)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_io *)__pyx_v_msg->__pyx_vtab)->for_write(__pyx_v_msg, __pyx_v_buf); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":831
 *     cdef _p_msg_io msg = <_p_msg_io>_p_msg_io.__new__(_p_msg_io)
 *     msg.for_write(buf)
 *     return msg             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_msg));
  __pyx_r = __pyx_v_msg;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.message_io_write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":39
 *     cdef object ob_PROTOCOL
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ob_dumps = None
 *         self.ob_loads = None
 */

static int __pyx_pf_6mpi4py_3MPI_9_p_Pickle___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_9_p_Pickle___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":40
 * 
 *     def __cinit__(self):
 *         self.ob_dumps = None             # <<<<<<<<<<<<<<
 *         self.ob_loads = None
 *         self.ob_PROTOCOL = PyPickle_PROTOCOL
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_dumps);
  __Pyx_DECREF(((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_dumps);
  ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_dumps = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":41
 *     def __cinit__(self):
 *         self.ob_dumps = None
 *         self.ob_loads = None             # <<<<<<<<<<<<<<
 *         self.ob_PROTOCOL = PyPickle_PROTOCOL
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_loads);
  __Pyx_DECREF(((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_loads);
  ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_loads = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":42
 *         self.ob_dumps = None
 *         self.ob_loads = None
 *         self.ob_PROTOCOL = PyPickle_PROTOCOL             # <<<<<<<<<<<<<<
 * 
 *     property dumps:
 */
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);
  __Pyx_GIVEREF(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);
  __Pyx_GOTREF(((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_PROTOCOL);
  __Pyx_DECREF(((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_PROTOCOL);
  ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_PROTOCOL = __pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":45
 * 
 *     property dumps:
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             if self.ob_dumps is None:
 *                 return PyPickle_dumps
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9_p_Pickle_5dumps___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_9_p_Pickle_5dumps___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":46
 *     property dumps:
 *         def __get__(self):
 *             if self.ob_dumps is None:             # <<<<<<<<<<<<<<
 *                 return PyPickle_dumps
 *             else:
 */
  __pyx_t_1 = (((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_dumps == Py_None);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":47
 *         def __get__(self):
 *             if self.ob_dumps is None:
 *                 return PyPickle_dumps             # <<<<<<<<<<<<<<
 *             else:
 *                 return self.ob_dumps
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_PyPickle_dumps);
    __pyx_r = __pyx_v_6mpi4py_3MPI_PyPickle_dumps;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":49
 *                 return PyPickle_dumps
 *             else:
 *                 return self.ob_dumps             # <<<<<<<<<<<<<<
 *         def __set__(self, dumps):
 *             if dumps is PyPickle_dumps:
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_dumps);
    __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_dumps;
    goto __pyx_L0;
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":50
 *             else:
 *                 return self.ob_dumps
 *         def __set__(self, dumps):             # <<<<<<<<<<<<<<
 *             if dumps is PyPickle_dumps:
 *                 self.ob_dumps = None
 */

static int __pyx_pf_6mpi4py_3MPI_9_p_Pickle_5dumps_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_dumps); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_9_p_Pickle_5dumps_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_dumps) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__set__");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":51
 *                 return self.ob_dumps
 *         def __set__(self, dumps):
 *             if dumps is PyPickle_dumps:             # <<<<<<<<<<<<<<
 *                 self.ob_dumps = None
 *             else:
 */
  __pyx_t_1 = (__pyx_v_dumps == __pyx_v_6mpi4py_3MPI_PyPickle_dumps);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":52
 *         def __set__(self, dumps):
 *             if dumps is PyPickle_dumps:
 *                 self.ob_dumps = None             # <<<<<<<<<<<<<<
 *             else:
 *                 self.ob_dumps = dumps
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_dumps);
    __Pyx_DECREF(((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_dumps);
    ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_dumps = Py_None;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":54
 *                 self.ob_dumps = None
 *             else:
 *                 self.ob_dumps = dumps             # <<<<<<<<<<<<<<
 * 
 *     property loads:
 */
    __Pyx_INCREF(__pyx_v_dumps);
    __Pyx_GIVEREF(__pyx_v_dumps);
    __Pyx_GOTREF(((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_dumps);
    __Pyx_DECREF(((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_dumps);
    ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_dumps = __pyx_v_dumps;
  }
  __pyx_L5:;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":57
 * 
 *     property loads:
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             if self.ob_loads is None:
 *                 return PyPickle_loads
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9_p_Pickle_5loads___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_9_p_Pickle_5loads___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":58
 *     property loads:
 *         def __get__(self):
 *             if self.ob_loads is None:             # <<<<<<<<<<<<<<
 *                 return PyPickle_loads
 *             else:
 */
  __pyx_t_1 = (((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_loads == Py_None);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":59
 *         def __get__(self):
 *             if self.ob_loads is None:
 *                 return PyPickle_loads             # <<<<<<<<<<<<<<
 *             else:
 *                 return self.ob_loads
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_PyPickle_loads);
    __pyx_r = __pyx_v_6mpi4py_3MPI_PyPickle_loads;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":61
 *                 return PyPickle_loads
 *             else:
 *                 return self.ob_loads             # <<<<<<<<<<<<<<
 *         def __set__(self, loads):
 *             if loads is PyPickle_loads:
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_loads);
    __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_loads;
    goto __pyx_L0;
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":62
 *             else:
 *                 return self.ob_loads
 *         def __set__(self, loads):             # <<<<<<<<<<<<<<
 *             if loads is PyPickle_loads:
 *                 self.ob_loads = None
 */

static int __pyx_pf_6mpi4py_3MPI_9_p_Pickle_5loads_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_loads); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_9_p_Pickle_5loads_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_loads) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__set__");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":63
 *                 return self.ob_loads
 *         def __set__(self, loads):
 *             if loads is PyPickle_loads:             # <<<<<<<<<<<<<<
 *                 self.ob_loads = None
 *             else:
 */
  __pyx_t_1 = (__pyx_v_loads == __pyx_v_6mpi4py_3MPI_PyPickle_loads);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":64
 *         def __set__(self, loads):
 *             if loads is PyPickle_loads:
 *                 self.ob_loads = None             # <<<<<<<<<<<<<<
 *             else:
 *                 self.ob_loads = loads
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_loads);
    __Pyx_DECREF(((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_loads);
    ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_loads = Py_None;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":66
 *                 self.ob_loads = None
 *             else:
 *                 self.ob_loads = loads             # <<<<<<<<<<<<<<
 * 
 *     property PROTOCOL:
 */
    __Pyx_INCREF(__pyx_v_loads);
    __Pyx_GIVEREF(__pyx_v_loads);
    __Pyx_GOTREF(((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_loads);
    __Pyx_DECREF(((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_loads);
    ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_loads = __pyx_v_loads;
  }
  __pyx_L5:;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":69
 * 
 *     property PROTOCOL:
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.ob_PROTOCOL
 *         def __set__(self, PROTOCOL):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9_p_Pickle_8PROTOCOL___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_9_p_Pickle_8PROTOCOL___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":70
 *     property PROTOCOL:
 *         def __get__(self):
 *             return self.ob_PROTOCOL             # <<<<<<<<<<<<<<
 *         def __set__(self, PROTOCOL):
 *             self.ob_PROTOCOL = PROTOCOL
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_PROTOCOL);
  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_PROTOCOL;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":71
 *         def __get__(self):
 *             return self.ob_PROTOCOL
 *         def __set__(self, PROTOCOL):             # <<<<<<<<<<<<<<
 *             self.ob_PROTOCOL = PROTOCOL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_9_p_Pickle_8PROTOCOL_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_PROTOCOL); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_9_p_Pickle_8PROTOCOL_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_PROTOCOL) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":72
 *             return self.ob_PROTOCOL
 *         def __set__(self, PROTOCOL):
 *             self.ob_PROTOCOL = PROTOCOL             # <<<<<<<<<<<<<<
 * 
 *     cdef object dump(self, object obj, void **p, int *n):
 */
  __Pyx_INCREF(__pyx_v_PROTOCOL);
  __Pyx_GIVEREF(__pyx_v_PROTOCOL);
  __Pyx_GOTREF(((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_PROTOCOL);
  __Pyx_DECREF(((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_PROTOCOL);
  ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_v_self)->ob_PROTOCOL = __pyx_v_PROTOCOL;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":74
 *             self.ob_PROTOCOL = PROTOCOL
 * 
 *     cdef object dump(self, object obj, void **p, int *n):             # <<<<<<<<<<<<<<
 *         if obj is None:
 *             p[0] = NULL
 */

static PyObject *__pyx_f_6mpi4py_3MPI_9_p_Pickle_dump(struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_self, PyObject *__pyx_v_obj, void **__pyx_v_p, int *__pyx_v_n) {
  PyObject *__pyx_v_buf = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  char *__pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dump");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":75
 * 
 *     cdef object dump(self, object obj, void **p, int *n):
 *         if obj is None:             # <<<<<<<<<<<<<<
 *             p[0] = NULL
 *             n[0] = 0
 */
  __pyx_t_1 = (__pyx_v_obj == Py_None);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":76
 *     cdef object dump(self, object obj, void **p, int *n):
 *         if obj is None:
 *             p[0] = NULL             # <<<<<<<<<<<<<<
 *             n[0] = 0
 *             return None
 */
    (__pyx_v_p[0]) = NULL;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":77
 *         if obj is None:
 *             p[0] = NULL
 *             n[0] = 0             # <<<<<<<<<<<<<<
 *             return None
 *         cdef object buf
 */
    (__pyx_v_n[0]) = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":78
 *             p[0] = NULL
 *             n[0] = 0
 *             return None             # <<<<<<<<<<<<<<
 *         cdef object buf
 *         if self.ob_dumps is None:
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":80
 *             return None
 *         cdef object buf
 *         if self.ob_dumps is None:             # <<<<<<<<<<<<<<
 *             buf = PyPickle_dumps(obj, self.ob_PROTOCOL)
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->ob_dumps == Py_None);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":81
 *         cdef object buf
 *         if self.ob_dumps is None:
 *             buf = PyPickle_dumps(obj, self.ob_PROTOCOL)             # <<<<<<<<<<<<<<
 *         else:
 *             buf = self.ob_dumps(obj, self.ob_PROTOCOL)
 */
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_INCREF(__pyx_v_obj);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_obj);
    __Pyx_GIVEREF(__pyx_v_obj);
    __Pyx_INCREF(__pyx_v_self->ob_PROTOCOL);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->ob_PROTOCOL);
    __Pyx_GIVEREF(__pyx_v_self->ob_PROTOCOL);
    __pyx_t_3 = PyObject_Call(__pyx_v_6mpi4py_3MPI_PyPickle_dumps, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    __pyx_v_buf = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":83
 *             buf = PyPickle_dumps(obj, self.ob_PROTOCOL)
 *         else:
 *             buf = self.ob_dumps(obj, self.ob_PROTOCOL)             # <<<<<<<<<<<<<<
 *         p[0] = <void*> PyBytes_AsString(buf)
 *         n[0] = <int>   PyBytes_Size(buf) # XXX overflow?
 */
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __Pyx_INCREF(__pyx_v_obj);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_obj);
    __Pyx_GIVEREF(__pyx_v_obj);
    __Pyx_INCREF(__pyx_v_self->ob_PROTOCOL);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->ob_PROTOCOL);
    __Pyx_GIVEREF(__pyx_v_self->ob_PROTOCOL);
    __pyx_t_2 = PyObject_Call(__pyx_v_self->ob_dumps, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __pyx_v_buf = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":84
 *         else:
 *             buf = self.ob_dumps(obj, self.ob_PROTOCOL)
 *         p[0] = <void*> PyBytes_AsString(buf)             # <<<<<<<<<<<<<<
 *         n[0] = <int>   PyBytes_Size(buf) # XXX overflow?
 *         return buf
 */
  __pyx_t_4 = PyBytes_AsString(__pyx_v_buf); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  (__pyx_v_p[0]) = ((void *)__pyx_t_4);

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":85
 *             buf = self.ob_dumps(obj, self.ob_PROTOCOL)
 *         p[0] = <void*> PyBytes_AsString(buf)
 *         n[0] = <int>   PyBytes_Size(buf) # XXX overflow?             # <<<<<<<<<<<<<<
 *         return buf
 * 
 */
  __pyx_t_5 = PyBytes_Size(__pyx_v_buf); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  (__pyx_v_n[0]) = ((int)__pyx_t_5);

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":86
 *         p[0] = <void*> PyBytes_AsString(buf)
 *         n[0] = <int>   PyBytes_Size(buf) # XXX overflow?
 *         return buf             # <<<<<<<<<<<<<<
 * 
 *     cdef object alloc(self, void **p, int n):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_buf);
  __pyx_r = __pyx_v_buf;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._p_Pickle.dump", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":88
 *         return buf
 * 
 *     cdef object alloc(self, void **p, int n):             # <<<<<<<<<<<<<<
 *         if n == 0:
 *             p[0] = NULL
 */

static PyObject *__pyx_f_6mpi4py_3MPI_9_p_Pickle_alloc(struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_self, void **__pyx_v_p, int __pyx_v_n) {
  PyObject *__pyx_v_buf = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  char *__pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("alloc");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":89
 * 
 *     cdef object alloc(self, void **p, int n):
 *         if n == 0:             # <<<<<<<<<<<<<<
 *             p[0] = NULL
 *             return None
 */
  __pyx_t_1 = (__pyx_v_n == 0);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":90
 *     cdef object alloc(self, void **p, int n):
 *         if n == 0:
 *             p[0] = NULL             # <<<<<<<<<<<<<<
 *             return None
 *         cdef object buf
 */
    (__pyx_v_p[0]) = NULL;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":91
 *         if n == 0:
 *             p[0] = NULL
 *             return None             # <<<<<<<<<<<<<<
 *         cdef object buf
 *         buf = PyBytes_FromStringAndSize(NULL, n)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":93
 *             return None
 *         cdef object buf
 *         buf = PyBytes_FromStringAndSize(NULL, n)             # <<<<<<<<<<<<<<
 *         p[0] = PyBytes_AsString(buf)
 *         return buf
 */
  __pyx_t_2 = PyBytes_FromStringAndSize(NULL, __pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_buf = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":94
 *         cdef object buf
 *         buf = PyBytes_FromStringAndSize(NULL, n)
 *         p[0] = PyBytes_AsString(buf)             # <<<<<<<<<<<<<<
 *         return buf
 * 
 */
  __pyx_t_3 = PyBytes_AsString(__pyx_v_buf); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  (__pyx_v_p[0]) = __pyx_t_3;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":95
 *         buf = PyBytes_FromStringAndSize(NULL, n)
 *         p[0] = PyBytes_AsString(buf)
 *         return buf             # <<<<<<<<<<<<<<
 * 
 *     cdef object load(self, object buf):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_buf);
  __pyx_r = __pyx_v_buf;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI._p_Pickle.alloc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":97
 *         return buf
 * 
 *     cdef object load(self, object buf):             # <<<<<<<<<<<<<<
 *         if buf is None: return None
 *         cdef bint use_StringIO = \
 */

static PyObject *__pyx_f_6mpi4py_3MPI_9_p_Pickle_load(struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_self, PyObject *__pyx_v_buf) {
  int __pyx_v_use_StringIO;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("load");
  __Pyx_INCREF(__pyx_v_buf);

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":98
 * 
 *     cdef object load(self, object buf):
 *         if buf is None: return None             # <<<<<<<<<<<<<<
 *         cdef bint use_StringIO = \
 *             (PY_MAJOR_VERSION == 2 and
 */
  __pyx_t_1 = (__pyx_v_buf == Py_None);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":100
 *         if buf is None: return None
 *         cdef bint use_StringIO = \
 *             (PY_MAJOR_VERSION == 2 and             # <<<<<<<<<<<<<<
 *              not PyBytes_CheckExact(buf) and
 *              PyStringIO_New is not None)
 */
  __pyx_t_1 = (PY_MAJOR_VERSION == 2);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":101
 *         cdef bint use_StringIO = \
 *             (PY_MAJOR_VERSION == 2 and
 *              not PyBytes_CheckExact(buf) and             # <<<<<<<<<<<<<<
 *              PyStringIO_New is not None)
 *         if self.ob_loads is None:
 */
    __pyx_t_2 = (!PyBytes_CheckExact(__pyx_v_buf));
    if (__pyx_t_2) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":102
 *             (PY_MAJOR_VERSION == 2 and
 *              not PyBytes_CheckExact(buf) and
 *              PyStringIO_New is not None)             # <<<<<<<<<<<<<<
 *         if self.ob_loads is None:
 *             if use_StringIO:
 */
      __pyx_t_3 = (__pyx_v_6mpi4py_3MPI_PyStringIO_New != Py_None);
      __pyx_t_4 = __pyx_t_3;
    } else {
      __pyx_t_4 = __pyx_t_2;
    }
    __pyx_t_2 = __pyx_t_4;
  } else {
    __pyx_t_2 = __pyx_t_1;
  }
  __pyx_v_use_StringIO = __pyx_t_2;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":103
 *              not PyBytes_CheckExact(buf) and
 *              PyStringIO_New is not None)
 *         if self.ob_loads is None:             # <<<<<<<<<<<<<<
 *             if use_StringIO:
 *                 buf = PyStringIO_New(buf)
 */
  __pyx_t_2 = (__pyx_v_self->ob_loads == Py_None);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":104
 *              PyStringIO_New is not None)
 *         if self.ob_loads is None:
 *             if use_StringIO:             # <<<<<<<<<<<<<<
 *                 buf = PyStringIO_New(buf)
 *                 if PyPickle_loadf is not None:
 */
    if (__pyx_v_use_StringIO) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":105
 *         if self.ob_loads is None:
 *             if use_StringIO:
 *                 buf = PyStringIO_New(buf)             # <<<<<<<<<<<<<<
 *                 if PyPickle_loadf is not None:
 *                     return PyPickle_loadf(buf)
 */
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_5));
      __Pyx_INCREF(__pyx_v_buf);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_buf);
      __Pyx_GIVEREF(__pyx_v_buf);
      __pyx_t_6 = PyObject_Call(__pyx_v_6mpi4py_3MPI_PyStringIO_New, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_buf);
      __pyx_v_buf = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":106
 *             if use_StringIO:
 *                 buf = PyStringIO_New(buf)
 *                 if PyPickle_loadf is not None:             # <<<<<<<<<<<<<<
 *                     return PyPickle_loadf(buf)
 *                 buf = buf.read()
 */
      __pyx_t_2 = (__pyx_v_6mpi4py_3MPI_PyPickle_loadf != Py_None);
      if (__pyx_t_2) {

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":107
 *                 buf = PyStringIO_New(buf)
 *                 if PyPickle_loadf is not None:
 *                     return PyPickle_loadf(buf)             # <<<<<<<<<<<<<<
 *                 buf = buf.read()
 *             return PyPickle_loads(buf)
 */
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_6));
        __Pyx_INCREF(__pyx_v_buf);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_buf);
        __Pyx_GIVEREF(__pyx_v_buf);
        __pyx_t_5 = PyObject_Call(__pyx_v_6mpi4py_3MPI_PyPickle_loadf, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
        __pyx_r = __pyx_t_5;
        __pyx_t_5 = 0;
        goto __pyx_L0;
        goto __pyx_L6;
      }
      __pyx_L6:;

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":108
 *                 if PyPickle_loadf is not None:
 *                     return PyPickle_loadf(buf)
 *                 buf = buf.read()             # <<<<<<<<<<<<<<
 *             return PyPickle_loads(buf)
 *         else:
 */
      __pyx_t_5 = PyObject_GetAttr(__pyx_v_buf, __pyx_n_s__read); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_buf);
      __pyx_v_buf = __pyx_t_6;
      __pyx_t_6 = 0;
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":109
 *                     return PyPickle_loadf(buf)
 *                 buf = buf.read()
 *             return PyPickle_loads(buf)             # <<<<<<<<<<<<<<
 *         else:
 *             if use_StringIO:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __Pyx_INCREF(__pyx_v_buf);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_buf);
    __Pyx_GIVEREF(__pyx_v_buf);
    __pyx_t_5 = PyObject_Call(__pyx_v_6mpi4py_3MPI_PyPickle_loads, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":111
 *             return PyPickle_loads(buf)
 *         else:
 *             if use_StringIO:             # <<<<<<<<<<<<<<
 *                 buf = PyStringIO_New(buf)
 *                 buf = buf.read()
 */
    if (__pyx_v_use_StringIO) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":112
 *         else:
 *             if use_StringIO:
 *                 buf = PyStringIO_New(buf)             # <<<<<<<<<<<<<<
 *                 buf = buf.read()
 *             return self.ob_loads(buf)
 */
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_5));
      __Pyx_INCREF(__pyx_v_buf);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_buf);
      __Pyx_GIVEREF(__pyx_v_buf);
      __pyx_t_6 = PyObject_Call(__pyx_v_6mpi4py_3MPI_PyStringIO_New, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_buf);
      __pyx_v_buf = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":113
 *             if use_StringIO:
 *                 buf = PyStringIO_New(buf)
 *                 buf = buf.read()             # <<<<<<<<<<<<<<
 *             return self.ob_loads(buf)
 * 
 */
      __pyx_t_6 = PyObject_GetAttr(__pyx_v_buf, __pyx_n_s__read); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_v_buf);
      __pyx_v_buf = __pyx_t_5;
      __pyx_t_5 = 0;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":114
 *                 buf = PyStringIO_New(buf)
 *                 buf = buf.read()
 *             return self.ob_loads(buf)             # <<<<<<<<<<<<<<
 * 
 *     cdef object dumpv(self, object obj, void **p,
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    __Pyx_INCREF(__pyx_v_buf);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_buf);
    __Pyx_GIVEREF(__pyx_v_buf);
    __pyx_t_6 = PyObject_Call(__pyx_v_self->ob_loads, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;
  }
  __pyx_L4:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI._p_Pickle.load", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":116
 *             return self.ob_loads(buf)
 * 
 *     cdef object dumpv(self, object obj, void **p,             # <<<<<<<<<<<<<<
 *                       int n, int cnt[], int dsp[]):
 *         cdef Py_ssize_t i=0, m=n
 */

static PyObject *__pyx_f_6mpi4py_3MPI_9_p_Pickle_dumpv(struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_self, PyObject *__pyx_v_obj, void **__pyx_v_p, int __pyx_v_n, int *__pyx_v_cnt, int *__pyx_v_dsp) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_m;
  PyObject *__pyx_v_items = 0;
  int __pyx_v_d;
  int __pyx_v_c;
  PyObject *__pyx_v_buf = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  char *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dumpv");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":118
 *     cdef object dumpv(self, object obj, void **p,
 *                       int n, int cnt[], int dsp[]):
 *         cdef Py_ssize_t i=0, m=n             # <<<<<<<<<<<<<<
 *         if obj is None:
 *             p[0] = NULL
 */
  __pyx_v_i = 0;
  __pyx_v_m = __pyx_v_n;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":119
 *                       int n, int cnt[], int dsp[]):
 *         cdef Py_ssize_t i=0, m=n
 *         if obj is None:             # <<<<<<<<<<<<<<
 *             p[0] = NULL
 *             for i from 0 <= i < m:
 */
  __pyx_t_1 = (__pyx_v_obj == Py_None);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":120
 *         cdef Py_ssize_t i=0, m=n
 *         if obj is None:
 *             p[0] = NULL             # <<<<<<<<<<<<<<
 *             for i from 0 <= i < m:
 *                 cnt[i] = 0
 */
    (__pyx_v_p[0]) = NULL;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":121
 *         if obj is None:
 *             p[0] = NULL
 *             for i from 0 <= i < m:             # <<<<<<<<<<<<<<
 *                 cnt[i] = 0
 *                 dsp[i] = 0
 */
    __pyx_t_2 = __pyx_v_m;
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":122
 *             p[0] = NULL
 *             for i from 0 <= i < m:
 *                 cnt[i] = 0             # <<<<<<<<<<<<<<
 *                 dsp[i] = 0
 *             return None
 */
      (__pyx_v_cnt[__pyx_v_i]) = 0;

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":123
 *             for i from 0 <= i < m:
 *                 cnt[i] = 0
 *                 dsp[i] = 0             # <<<<<<<<<<<<<<
 *             return None
 *         cdef object items = list(obj)
 */
      (__pyx_v_dsp[__pyx_v_i]) = 0;
    }

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":124
 *                 cnt[i] = 0
 *                 dsp[i] = 0
 *             return None             # <<<<<<<<<<<<<<
 *         cdef object items = list(obj)
 *         m = len(items)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":125
 *                 dsp[i] = 0
 *             return None
 *         cdef object items = list(obj)             # <<<<<<<<<<<<<<
 *         m = len(items)
 *         if m != n: raise ValueError(
 */
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  __Pyx_INCREF(__pyx_v_obj);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_obj);
  __Pyx_GIVEREF(__pyx_v_obj);
  __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  __pyx_v_items = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":126
 *             return None
 *         cdef object items = list(obj)
 *         m = len(items)             # <<<<<<<<<<<<<<
 *         if m != n: raise ValueError(
 *             "expecting %d items, got %d" % (n, m))
 */
  __pyx_t_2 = PyObject_Length(__pyx_v_items); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_m = __pyx_t_2;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":127
 *         cdef object items = list(obj)
 *         m = len(items)
 *         if m != n: raise ValueError(             # <<<<<<<<<<<<<<
 *             "expecting %d items, got %d" % (n, m))
 *         cdef int d=0, c=0
 */
  __pyx_t_1 = (__pyx_v_m != __pyx_v_n);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":128
 *         m = len(items)
 *         if m != n: raise ValueError(
 *             "expecting %d items, got %d" % (n, m))             # <<<<<<<<<<<<<<
 *         cdef int d=0, c=0
 *         for i from 0 <= i < m:
 */
    __pyx_t_4 = PyInt_FromLong(__pyx_v_n); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_m); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_4 = 0;
    __pyx_t_3 = 0;
    __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_10), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_3));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
    __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":129
 *         if m != n: raise ValueError(
 *             "expecting %d items, got %d" % (n, m))
 *         cdef int d=0, c=0             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < m:
 *             items[i] = self.dump(items[i], p, &c)
 */
  __pyx_v_d = 0;
  __pyx_v_c = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":130
 *             "expecting %d items, got %d" % (n, m))
 *         cdef int d=0, c=0
 *         for i from 0 <= i < m:             # <<<<<<<<<<<<<<
 *             items[i] = self.dump(items[i], p, &c)
 *             if c == 0: items[i] = b''
 */
  __pyx_t_2 = __pyx_v_m;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":131
 *         cdef int d=0, c=0
 *         for i from 0 <= i < m:
 *             items[i] = self.dump(items[i], p, &c)             # <<<<<<<<<<<<<<
 *             if c == 0: items[i] = b''
 *             cnt[i] = c; dsp[i] = d; d += c
 */
    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_items, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_self->__pyx_vtab)->dump(__pyx_v_self, __pyx_t_3, __pyx_v_p, (&__pyx_v_c)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__Pyx_SetItemInt(__pyx_v_items, __pyx_v_i, __pyx_t_5, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":132
 *         for i from 0 <= i < m:
 *             items[i] = self.dump(items[i], p, &c)
 *             if c == 0: items[i] = b''             # <<<<<<<<<<<<<<
 *             cnt[i] = c; dsp[i] = d; d += c
 *         cdef object buf = b''.join(items) # XXX use _PyBytes_Join() ?
 */
    __pyx_t_1 = (__pyx_v_c == 0);
    if (__pyx_t_1) {
      if (__Pyx_SetItemInt(__pyx_v_items, __pyx_v_i, ((PyObject *)__pyx_kp_b_50), sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":133
 *             items[i] = self.dump(items[i], p, &c)
 *             if c == 0: items[i] = b''
 *             cnt[i] = c; dsp[i] = d; d += c             # <<<<<<<<<<<<<<
 *         cdef object buf = b''.join(items) # XXX use _PyBytes_Join() ?
 *         p[0] = PyBytes_AsString(buf)
 */
    (__pyx_v_cnt[__pyx_v_i]) = __pyx_v_c;
    (__pyx_v_dsp[__pyx_v_i]) = __pyx_v_d;
    __pyx_v_d = (__pyx_v_d + __pyx_v_c);
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":134
 *             if c == 0: items[i] = b''
 *             cnt[i] = c; dsp[i] = d; d += c
 *         cdef object buf = b''.join(items) # XXX use _PyBytes_Join() ?             # <<<<<<<<<<<<<<
 *         p[0] = PyBytes_AsString(buf)
 *         return buf
 */
  __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_kp_b_50), __pyx_n_s__join); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  __Pyx_INCREF(__pyx_v_items);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_items);
  __Pyx_GIVEREF(__pyx_v_items);
  __pyx_t_4 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  __pyx_v_buf = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":135
 *             cnt[i] = c; dsp[i] = d; d += c
 *         cdef object buf = b''.join(items) # XXX use _PyBytes_Join() ?
 *         p[0] = PyBytes_AsString(buf)             # <<<<<<<<<<<<<<
 *         return buf
 * 
 */
  __pyx_t_6 = PyBytes_AsString(__pyx_v_buf); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  (__pyx_v_p[0]) = __pyx_t_6;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":136
 *         cdef object buf = b''.join(items) # XXX use _PyBytes_Join() ?
 *         p[0] = PyBytes_AsString(buf)
 *         return buf             # <<<<<<<<<<<<<<
 * 
 *     cdef object allocv(self, void **p,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_buf);
  __pyx_r = __pyx_v_buf;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI._p_Pickle.dumpv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_items);
  __Pyx_XDECREF(__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":138
 *         return buf
 * 
 *     cdef object allocv(self, void **p,             # <<<<<<<<<<<<<<
 *                        int n, int cnt[], int dsp[]):
 *         cdef int i=0, d=0
 */

static PyObject *__pyx_f_6mpi4py_3MPI_9_p_Pickle_allocv(struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_self, void **__pyx_v_p, int __pyx_v_n, int *__pyx_v_cnt, int *__pyx_v_dsp) {
  int __pyx_v_i;
  int __pyx_v_d;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("allocv");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":140
 *     cdef object allocv(self, void **p,
 *                        int n, int cnt[], int dsp[]):
 *         cdef int i=0, d=0             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < n:
 *             dsp[i] = d
 */
  __pyx_v_i = 0;
  __pyx_v_d = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":141
 *                        int n, int cnt[], int dsp[]):
 *         cdef int i=0, d=0
 *         for i from 0 <= i < n:             # <<<<<<<<<<<<<<
 *             dsp[i] = d
 *             d += cnt[i]
 */
  __pyx_t_1 = __pyx_v_n;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":142
 *         cdef int i=0, d=0
 *         for i from 0 <= i < n:
 *             dsp[i] = d             # <<<<<<<<<<<<<<
 *             d += cnt[i]
 *         return self.alloc(p, d)
 */
    (__pyx_v_dsp[__pyx_v_i]) = __pyx_v_d;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":143
 *         for i from 0 <= i < n:
 *             dsp[i] = d
 *             d += cnt[i]             # <<<<<<<<<<<<<<
 *         return self.alloc(p, d)
 * 
 */
    __pyx_v_d = (__pyx_v_d + (__pyx_v_cnt[__pyx_v_i]));
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":144
 *             dsp[i] = d
 *             d += cnt[i]
 *         return self.alloc(p, d)             # <<<<<<<<<<<<<<
 * 
 *     cdef object loadv(self, object obj,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_self->__pyx_vtab)->alloc(__pyx_v_self, __pyx_v_p, __pyx_v_d); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI._p_Pickle.allocv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":146
 *         return self.alloc(p, d)
 * 
 *     cdef object loadv(self, object obj,             # <<<<<<<<<<<<<<
 *                       int n, int cnt[], int dsp[]):
 *         cdef Py_ssize_t i=0, m=n
 */

static PyObject *__pyx_f_6mpi4py_3MPI_9_p_Pickle_loadv(struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_n, int *__pyx_v_cnt, int *__pyx_v_dsp) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_m;
  PyObject *__pyx_v_items = 0;
  char *__pyx_v_p;
  PyObject *__pyx_v_buf = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  char *__pyx_t_5;
  Py_ssize_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("loadv");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":148
 *     cdef object loadv(self, object obj,
 *                       int n, int cnt[], int dsp[]):
 *         cdef Py_ssize_t i=0, m=n             # <<<<<<<<<<<<<<
 *         cdef object items = [None] * m
 *         if obj is None: return items
 */
  __pyx_v_i = 0;
  __pyx_v_m = __pyx_v_n;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":149
 *                       int n, int cnt[], int dsp[]):
 *         cdef Py_ssize_t i=0, m=n
 *         cdef object items = [None] * m             # <<<<<<<<<<<<<<
 *         if obj is None: return items
 *         cdef char *p = PyBytes_AsString(obj)
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(Py_None);
  PyList_SET_ITEM(__pyx_t_1, 0, Py_None);
  __Pyx_GIVEREF(Py_None);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_m); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyNumber_Multiply(((PyObject *)__pyx_t_1), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_items = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":150
 *         cdef Py_ssize_t i=0, m=n
 *         cdef object items = [None] * m
 *         if obj is None: return items             # <<<<<<<<<<<<<<
 *         cdef char *p = PyBytes_AsString(obj)
 *         cdef object buf = None
 */
  __pyx_t_4 = (__pyx_v_obj == Py_None);
  if (__pyx_t_4) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_items);
    __pyx_r = __pyx_v_items;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":151
 *         cdef object items = [None] * m
 *         if obj is None: return items
 *         cdef char *p = PyBytes_AsString(obj)             # <<<<<<<<<<<<<<
 *         cdef object buf = None
 *         for i from 0 <= i < m:
 */
  __pyx_t_5 = PyBytes_AsString(__pyx_v_obj); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_p = __pyx_t_5;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":152
 *         if obj is None: return items
 *         cdef char *p = PyBytes_AsString(obj)
 *         cdef object buf = None             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < m:
 *             if cnt[i] == 0: continue
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_buf = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":153
 *         cdef char *p = PyBytes_AsString(obj)
 *         cdef object buf = None
 *         for i from 0 <= i < m:             # <<<<<<<<<<<<<<
 *             if cnt[i] == 0: continue
 *             buf = PyBytes_FromStringAndSize(p+dsp[i], cnt[i])
 */
  __pyx_t_6 = __pyx_v_m;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_6; __pyx_v_i++) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":154
 *         cdef object buf = None
 *         for i from 0 <= i < m:
 *             if cnt[i] == 0: continue             # <<<<<<<<<<<<<<
 *             buf = PyBytes_FromStringAndSize(p+dsp[i], cnt[i])
 *             items[i] = self.load(buf)
 */
    __pyx_t_4 = ((__pyx_v_cnt[__pyx_v_i]) == 0);
    if (__pyx_t_4) {
      goto __pyx_L4_continue;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":155
 *         for i from 0 <= i < m:
 *             if cnt[i] == 0: continue
 *             buf = PyBytes_FromStringAndSize(p+dsp[i], cnt[i])             # <<<<<<<<<<<<<<
 *             items[i] = self.load(buf)
 *         return items
 */
    __pyx_t_3 = PyBytes_FromStringAndSize((__pyx_v_p + (__pyx_v_dsp[__pyx_v_i])), (__pyx_v_cnt[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_v_buf);
    __pyx_v_buf = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":156
 *             if cnt[i] == 0: continue
 *             buf = PyBytes_FromStringAndSize(p+dsp[i], cnt[i])
 *             items[i] = self.load(buf)             # <<<<<<<<<<<<<<
 *         return items
 * 
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_self->__pyx_vtab)->load(__pyx_v_self, __pyx_v_buf); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_SetItemInt(__pyx_v_items, __pyx_v_i, __pyx_t_3, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_L4_continue:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":157
 *             buf = PyBytes_FromStringAndSize(p+dsp[i], cnt[i])
 *             items[i] = self.load(buf)
 *         return items             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_items);
  __pyx_r = __pyx_v_items;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._p_Pickle.loadv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_items);
  __Pyx_XDECREF(__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":162
 * cdef _p_Pickle PyMPI_PICKLE = _p_Pickle()
 * 
 * cdef inline _p_Pickle PyMPI_pickle():             # <<<<<<<<<<<<<<
 *     return PyMPI_PICKLE
 * 
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_f_6mpi4py_3MPI_PyMPI_pickle(void) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("PyMPI_pickle");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":163
 * 
 * cdef inline _p_Pickle PyMPI_pickle():
 *     return PyMPI_PICKLE             # <<<<<<<<<<<<<<
 * 
 * _p_pickle = PyMPI_PICKLE
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE));
  __pyx_r = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":169
 * # -----------------------------------------------------------------------------
 * 
 * cdef object PyMPI_send(object obj, int dest, int tag,             # <<<<<<<<<<<<<<
 *                        MPI_Comm comm):
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_send(PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  int __pyx_v_scount;
  MPI_Datatype __pyx_v_stype;
  int __pyx_v_dosend;
  PyObject *__pyx_v_smsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_send");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":171
 * cdef object PyMPI_send(object obj, int dest, int tag,
 *                        MPI_Comm comm):
 *     cdef _p_Pickle pickle = PyMPI_pickle()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickle()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickle = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":173
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":174
 *     #
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 */
  __pyx_v_scount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":175
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef int dosend = (dest != MPI_PROC_NULL)
 */
  __pyx_v_stype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":177
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 *     cdef int dosend = (dest != MPI_PROC_NULL)             # <<<<<<<<<<<<<<
 *     #
 *     cdef object smsg = None
 */
  __pyx_v_dosend = (__pyx_v_dest != MPI_PROC_NULL);

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":179
 *     cdef int dosend = (dest != MPI_PROC_NULL)
 *     #
 *     cdef object smsg = None             # <<<<<<<<<<<<<<
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Send(sbuf, scount, stype,
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_smsg = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":180
 *     #
 *     cdef object smsg = None
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Send(sbuf, scount, stype,
 *                                  dest, tag, comm) )
 */
  if (__pyx_v_dosend) {
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->dump(__pyx_v_pickle, __pyx_v_obj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_smsg);
    __pyx_v_smsg = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":181
 *     cdef object smsg = None
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Send(sbuf, scount, stype,             # <<<<<<<<<<<<<<
 *                                  dest, tag, comm) )
 *     return None
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":182
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Send(sbuf, scount, stype,
 *                                  dest, tag, comm) )             # <<<<<<<<<<<<<<
 *     return None
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Send(__pyx_v_sbuf, __pyx_v_scount, __pyx_v_stype, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L5;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":181
 *     cdef object smsg = None
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Send(sbuf, scount, stype,             # <<<<<<<<<<<<<<
 *                                  dest, tag, comm) )
 *     return None
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L6;
        __pyx_L5: __pyx_why = 4; goto __pyx_L6;
        __pyx_L6:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":183
 *     with nogil: CHKERR( MPI_Send(sbuf, scount, stype,
 *                                  dest, tag, comm) )
 *     return None             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_None);
  __pyx_r = Py_None;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_send", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":186
 * 
 * 
 * cdef object PyMPI_bsend(object obj, int dest, int tag,             # <<<<<<<<<<<<<<
 *                         MPI_Comm comm):
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_bsend(PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  int __pyx_v_scount;
  MPI_Datatype __pyx_v_stype;
  int __pyx_v_dosend;
  PyObject *__pyx_v_smsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_bsend");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":188
 * cdef object PyMPI_bsend(object obj, int dest, int tag,
 *                         MPI_Comm comm):
 *     cdef _p_Pickle pickle = PyMPI_pickle()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickle()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickle = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":190
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":191
 *     #
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 */
  __pyx_v_scount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":192
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef int dosend = (dest != MPI_PROC_NULL)
 */
  __pyx_v_stype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":194
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 *     cdef int dosend = (dest != MPI_PROC_NULL)             # <<<<<<<<<<<<<<
 *     #
 *     cdef object smsg = None
 */
  __pyx_v_dosend = (__pyx_v_dest != MPI_PROC_NULL);

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":196
 *     cdef int dosend = (dest != MPI_PROC_NULL)
 *     #
 *     cdef object smsg = None             # <<<<<<<<<<<<<<
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Bsend(sbuf, scount, stype,
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_smsg = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":197
 *     #
 *     cdef object smsg = None
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Bsend(sbuf, scount, stype,
 *                                   dest, tag, comm) )
 */
  if (__pyx_v_dosend) {
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->dump(__pyx_v_pickle, __pyx_v_obj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_smsg);
    __pyx_v_smsg = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":198
 *     cdef object smsg = None
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Bsend(sbuf, scount, stype,             # <<<<<<<<<<<<<<
 *                                   dest, tag, comm) )
 *     return None
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":199
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Bsend(sbuf, scount, stype,
 *                                   dest, tag, comm) )             # <<<<<<<<<<<<<<
 *     return None
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Bsend(__pyx_v_sbuf, __pyx_v_scount, __pyx_v_stype, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L5;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":198
 *     cdef object smsg = None
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Bsend(sbuf, scount, stype,             # <<<<<<<<<<<<<<
 *                                   dest, tag, comm) )
 *     return None
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L6;
        __pyx_L5: __pyx_why = 4; goto __pyx_L6;
        __pyx_L6:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":200
 *     with nogil: CHKERR( MPI_Bsend(sbuf, scount, stype,
 *                                   dest, tag, comm) )
 *     return None             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_None);
  __pyx_r = Py_None;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_bsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":203
 * 
 * 
 * cdef object PyMPI_ssend(object obj, int dest, int tag,             # <<<<<<<<<<<<<<
 *                         MPI_Comm comm):
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_ssend(PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  int __pyx_v_scount;
  MPI_Datatype __pyx_v_stype;
  int __pyx_v_dosend;
  PyObject *__pyx_v_smsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_ssend");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":205
 * cdef object PyMPI_ssend(object obj, int dest, int tag,
 *                         MPI_Comm comm):
 *     cdef _p_Pickle pickle = PyMPI_pickle()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickle()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickle = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":207
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":208
 *     #
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 */
  __pyx_v_scount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":209
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef int dosend = (dest != MPI_PROC_NULL)
 */
  __pyx_v_stype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":211
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 *     cdef int dosend = (dest != MPI_PROC_NULL)             # <<<<<<<<<<<<<<
 *     #
 *     cdef object smsg = None
 */
  __pyx_v_dosend = (__pyx_v_dest != MPI_PROC_NULL);

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":213
 *     cdef int dosend = (dest != MPI_PROC_NULL)
 *     #
 *     cdef object smsg = None             # <<<<<<<<<<<<<<
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Ssend(sbuf, scount, stype,
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_smsg = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":214
 *     #
 *     cdef object smsg = None
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Ssend(sbuf, scount, stype,
 *                                   dest, tag, comm) )
 */
  if (__pyx_v_dosend) {
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->dump(__pyx_v_pickle, __pyx_v_obj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_smsg);
    __pyx_v_smsg = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":215
 *     cdef object smsg = None
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Ssend(sbuf, scount, stype,             # <<<<<<<<<<<<<<
 *                                   dest, tag, comm) )
 *     return None
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":216
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Ssend(sbuf, scount, stype,
 *                                   dest, tag, comm) )             # <<<<<<<<<<<<<<
 *     return None
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ssend(__pyx_v_sbuf, __pyx_v_scount, __pyx_v_stype, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L5;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":215
 *     cdef object smsg = None
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Ssend(sbuf, scount, stype,             # <<<<<<<<<<<<<<
 *                                   dest, tag, comm) )
 *     return None
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L6;
        __pyx_L5: __pyx_why = 4; goto __pyx_L6;
        __pyx_L6:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":217
 *     with nogil: CHKERR( MPI_Ssend(sbuf, scount, stype,
 *                                   dest, tag, comm) )
 *     return None             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_None);
  __pyx_r = Py_None;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_ssend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":220
 * 
 * 
 * cdef object PyMPI_recv(object obj, int source, int tag,             # <<<<<<<<<<<<<<
 *                        MPI_Comm comm, MPI_Status *status):
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_recv(PyObject *__pyx_v_obj, int __pyx_v_source, int __pyx_v_tag, MPI_Comm __pyx_v_comm, MPI_Status *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_rbuf;
  int __pyx_v_rcount;
  MPI_Datatype __pyx_v_rtype;
  int __pyx_v_dorecv;
  PyObject *__pyx_v_rmsg = 0;
  MPI_Status __pyx_v_rsts;
  struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_recv");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":222
 * cdef object PyMPI_recv(object obj, int source, int tag,
 *                        MPI_Comm comm, MPI_Status *status):
 *     cdef _p_Pickle pickle = PyMPI_pickle()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *rbuf = NULL
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickle()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickle = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":224
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 *     #
 *     cdef void *rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rbuf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":225
 *     #
 *     cdef void *rbuf = NULL
 *     cdef int rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rcount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":226
 *     cdef void *rbuf = NULL
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef int dorecv = (source != MPI_PROC_NULL)
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":228
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 *     cdef int dorecv = (source != MPI_PROC_NULL)             # <<<<<<<<<<<<<<
 *     #
 *     cdef object rmsg = None
 */
  __pyx_v_dorecv = (__pyx_v_source != MPI_PROC_NULL);

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":230
 *     cdef int dorecv = (source != MPI_PROC_NULL)
 *     #
 *     cdef object rmsg = None             # <<<<<<<<<<<<<<
 *     cdef MPI_Status rsts
 *     cdef _p_buffer m
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rmsg = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":233
 *     cdef MPI_Status rsts
 *     cdef _p_buffer m
 *     if dorecv:             # <<<<<<<<<<<<<<
 *         if obj is None:
 *             with nogil:
 */
  if (__pyx_v_dorecv) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":234
 *     cdef _p_buffer m
 *     if dorecv:
 *         if obj is None:             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 CHKERR( MPI_Probe(source, tag, comm, &rsts) )
 */
    __pyx_t_2 = (__pyx_v_obj == Py_None);
    if (__pyx_t_2) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":235
 *     if dorecv:
 *         if obj is None:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Probe(source, tag, comm, &rsts) )
 *                 CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 */
      {
          #ifdef WITH_THREAD
          PyThreadState *_save = NULL;
          #endif
          Py_UNBLOCK_THREADS
          /*try:*/ {

            /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":236
 *         if obj is None:
 *             with nogil:
 *                 CHKERR( MPI_Probe(source, tag, comm, &rsts) )             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *             rmsg = pickle.alloc(&rbuf, rcount)
 */
            __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Probe(__pyx_v_source, __pyx_v_tag, __pyx_v_comm, (&__pyx_v_rsts))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L6;}

            /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":237
 *             with nogil:
 *                 CHKERR( MPI_Probe(source, tag, comm, &rsts) )
 *                 CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )             # <<<<<<<<<<<<<<
 *             rmsg = pickle.alloc(&rbuf, rcount)
 *             source = rsts.MPI_SOURCE
 */
            __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_count((&__pyx_v_rsts), __pyx_v_rtype, (&__pyx_v_rcount))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L6;}
          }

          /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":235
 *     if dorecv:
 *         if obj is None:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Probe(source, tag, comm, &rsts) )
 *                 CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 */
          /*finally:*/ {
            int __pyx_why;
            __pyx_why = 0; goto __pyx_L7;
            __pyx_L6: __pyx_why = 4; goto __pyx_L7;
            __pyx_L7:;
            Py_BLOCK_THREADS
            switch (__pyx_why) {
              case 4: goto __pyx_L1_error;
            }
          }
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":238
 *                 CHKERR( MPI_Probe(source, tag, comm, &rsts) )
 *                 CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *             rmsg = pickle.alloc(&rbuf, rcount)             # <<<<<<<<<<<<<<
 *             source = rsts.MPI_SOURCE
 *             tag = rsts.MPI_TAG
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->alloc(__pyx_v_pickle, (&__pyx_v_rbuf), __pyx_v_rcount); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_v_rmsg);
      __pyx_v_rmsg = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":239
 *                 CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *             rmsg = pickle.alloc(&rbuf, rcount)
 *             source = rsts.MPI_SOURCE             # <<<<<<<<<<<<<<
 *             tag = rsts.MPI_TAG
 *         else:
 */
      __pyx_v_source = __pyx_v_rsts.MPI_SOURCE;

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":240
 *             rmsg = pickle.alloc(&rbuf, rcount)
 *             source = rsts.MPI_SOURCE
 *             tag = rsts.MPI_TAG             # <<<<<<<<<<<<<<
 *         else:
 *             rmsg = m = getbuffer(obj, 0, 0)
 */
      __pyx_v_tag = __pyx_v_rsts.MPI_TAG;
      goto __pyx_L4;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":242
 *             tag = rsts.MPI_TAG
 *         else:
 *             rmsg = m = getbuffer(obj, 0, 0)             # <<<<<<<<<<<<<<
 *             rbuf = m.view.buf
 *             rcount = <int> m.view.len # XXX overflow?
 */
      __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer(__pyx_v_obj, 0, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_v_rmsg);
      __pyx_v_rmsg = __pyx_t_1;
      __Pyx_INCREF(__pyx_t_1);
      __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":243
 *         else:
 *             rmsg = m = getbuffer(obj, 0, 0)
 *             rbuf = m.view.buf             # <<<<<<<<<<<<<<
 *             rcount = <int> m.view.len # XXX overflow?
 *     #
 */
      __pyx_v_rbuf = __pyx_v_m->view.buf;

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":244
 *             rmsg = m = getbuffer(obj, 0, 0)
 *             rbuf = m.view.buf
 *             rcount = <int> m.view.len # XXX overflow?             # <<<<<<<<<<<<<<
 *     #
 *     with nogil: CHKERR( MPI_Recv(rbuf, rcount, rtype,
 */
      __pyx_v_rcount = ((int)__pyx_v_m->view.len);
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":246
 *             rcount = <int> m.view.len # XXX overflow?
 *     #
 *     with nogil: CHKERR( MPI_Recv(rbuf, rcount, rtype,             # <<<<<<<<<<<<<<
 *                                  source, tag, comm, status) )
 *     if dorecv: rmsg = pickle.load(rmsg)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":247
 *     #
 *     with nogil: CHKERR( MPI_Recv(rbuf, rcount, rtype,
 *                                  source, tag, comm, status) )             # <<<<<<<<<<<<<<
 *     if dorecv: rmsg = pickle.load(rmsg)
 *     return rmsg
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Recv(__pyx_v_rbuf, __pyx_v_rcount, __pyx_v_rtype, __pyx_v_source, __pyx_v_tag, __pyx_v_comm, __pyx_v_status)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L10;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":246
 *             rcount = <int> m.view.len # XXX overflow?
 *     #
 *     with nogil: CHKERR( MPI_Recv(rbuf, rcount, rtype,             # <<<<<<<<<<<<<<
 *                                  source, tag, comm, status) )
 *     if dorecv: rmsg = pickle.load(rmsg)
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L11;
        __pyx_L10: __pyx_why = 4; goto __pyx_L11;
        __pyx_L11:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":248
 *     with nogil: CHKERR( MPI_Recv(rbuf, rcount, rtype,
 *                                  source, tag, comm, status) )
 *     if dorecv: rmsg = pickle.load(rmsg)             # <<<<<<<<<<<<<<
 *     return rmsg
 * 
 */
  if (__pyx_v_dorecv) {
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->load(__pyx_v_pickle, __pyx_v_rmsg); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_rmsg);
    __pyx_v_rmsg = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L13;
  }
  __pyx_L13:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":249
 *                                  source, tag, comm, status) )
 *     if dorecv: rmsg = pickle.load(rmsg)
 *     return rmsg             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rmsg);
  __pyx_r = __pyx_v_rmsg;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":252
 * 
 * 
 * cdef object PyMPI_sendrecv(object sobj, int dest,   int sendtag,             # <<<<<<<<<<<<<<
 *                            object robj, int source, int recvtag,
 *                            MPI_Comm comm, MPI_Status *status):
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_sendrecv(PyObject *__pyx_v_sobj, int __pyx_v_dest, int __pyx_v_sendtag, PyObject *__pyx_v_robj, int __pyx_v_source, int __pyx_v_recvtag, MPI_Comm __pyx_v_comm, MPI_Status *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  int __pyx_v_scount;
  MPI_Datatype __pyx_v_stype;
  void *__pyx_v_rbuf;
  int __pyx_v_rcount;
  MPI_Datatype __pyx_v_rtype;
  int __pyx_v_dosend;
  int __pyx_v_dorecv;
  PyObject *__pyx_v_smsg = 0;
  MPI_Request __pyx_v_sreq;
  PyObject *__pyx_v_rmsg = 0;
  MPI_Status __pyx_v_rsts;
  struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_sendrecv");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":255
 *                            object robj, int source, int recvtag,
 *                            MPI_Comm comm, MPI_Status *status):
 *     cdef _p_Pickle pickle = PyMPI_pickle()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickle()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickle = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":257
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":258
 *     #
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 */
  __pyx_v_scount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":259
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     cdef void *rbuf = NULL
 *     cdef int rcount = 0
 */
  __pyx_v_stype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":260
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rbuf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":261
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 *     cdef int rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rcount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":262
 *     cdef void *rbuf = NULL
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef int dosend = (dest   != MPI_PROC_NULL)
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":264
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 *     cdef int dosend = (dest   != MPI_PROC_NULL)             # <<<<<<<<<<<<<<
 *     cdef int dorecv = (source != MPI_PROC_NULL)
 *     #
 */
  __pyx_v_dosend = (__pyx_v_dest != MPI_PROC_NULL);

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":265
 *     #
 *     cdef int dosend = (dest   != MPI_PROC_NULL)
 *     cdef int dorecv = (source != MPI_PROC_NULL)             # <<<<<<<<<<<<<<
 *     #
 *     cdef object smsg = None
 */
  __pyx_v_dorecv = (__pyx_v_source != MPI_PROC_NULL);

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":267
 *     cdef int dorecv = (source != MPI_PROC_NULL)
 *     #
 *     cdef object smsg = None             # <<<<<<<<<<<<<<
 *     if dosend: smsg = pickle.dump(sobj, &sbuf, &scount)
 *     cdef MPI_Request sreq = MPI_REQUEST_NULL
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_smsg = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":268
 *     #
 *     cdef object smsg = None
 *     if dosend: smsg = pickle.dump(sobj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     cdef MPI_Request sreq = MPI_REQUEST_NULL
 *     with nogil: CHKERR( MPI_Isend(sbuf, scount, stype,
 */
  if (__pyx_v_dosend) {
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->dump(__pyx_v_pickle, __pyx_v_sobj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_smsg);
    __pyx_v_smsg = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":269
 *     cdef object smsg = None
 *     if dosend: smsg = pickle.dump(sobj, &sbuf, &scount)
 *     cdef MPI_Request sreq = MPI_REQUEST_NULL             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Isend(sbuf, scount, stype,
 *                                   dest, sendtag, comm, &sreq) )
 */
  __pyx_v_sreq = MPI_REQUEST_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":270
 *     if dosend: smsg = pickle.dump(sobj, &sbuf, &scount)
 *     cdef MPI_Request sreq = MPI_REQUEST_NULL
 *     with nogil: CHKERR( MPI_Isend(sbuf, scount, stype,             # <<<<<<<<<<<<<<
 *                                   dest, sendtag, comm, &sreq) )
 *     #
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":271
 *     cdef MPI_Request sreq = MPI_REQUEST_NULL
 *     with nogil: CHKERR( MPI_Isend(sbuf, scount, stype,
 *                                   dest, sendtag, comm, &sreq) )             # <<<<<<<<<<<<<<
 *     #
 *     cdef object rmsg = None
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Isend(__pyx_v_sbuf, __pyx_v_scount, __pyx_v_stype, __pyx_v_dest, __pyx_v_sendtag, __pyx_v_comm, (&__pyx_v_sreq))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L5;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":270
 *     if dosend: smsg = pickle.dump(sobj, &sbuf, &scount)
 *     cdef MPI_Request sreq = MPI_REQUEST_NULL
 *     with nogil: CHKERR( MPI_Isend(sbuf, scount, stype,             # <<<<<<<<<<<<<<
 *                                   dest, sendtag, comm, &sreq) )
 *     #
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L6;
        __pyx_L5: __pyx_why = 4; goto __pyx_L6;
        __pyx_L6:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":273
 *                                   dest, sendtag, comm, &sreq) )
 *     #
 *     cdef object rmsg = None             # <<<<<<<<<<<<<<
 *     cdef MPI_Status rsts
 *     cdef _p_buffer m
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rmsg = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":276
 *     cdef MPI_Status rsts
 *     cdef _p_buffer m
 *     if dorecv:             # <<<<<<<<<<<<<<
 *         if robj is None:
 *             with nogil:
 */
  if (__pyx_v_dorecv) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":277
 *     cdef _p_buffer m
 *     if dorecv:
 *         if robj is None:             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 CHKERR( MPI_Probe(source, recvtag, comm, &rsts) )
 */
    __pyx_t_3 = (__pyx_v_robj == Py_None);
    if (__pyx_t_3) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":278
 *     if dorecv:
 *         if robj is None:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Probe(source, recvtag, comm, &rsts) )
 *                 CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 */
      {
          #ifdef WITH_THREAD
          PyThreadState *_save = NULL;
          #endif
          Py_UNBLOCK_THREADS
          /*try:*/ {

            /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":279
 *         if robj is None:
 *             with nogil:
 *                 CHKERR( MPI_Probe(source, recvtag, comm, &rsts) )             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *             rmsg = pickle.alloc(&rbuf, rcount)
 */
            __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Probe(__pyx_v_source, __pyx_v_recvtag, __pyx_v_comm, (&__pyx_v_rsts))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L11;}

            /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":280
 *             with nogil:
 *                 CHKERR( MPI_Probe(source, recvtag, comm, &rsts) )
 *                 CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )             # <<<<<<<<<<<<<<
 *             rmsg = pickle.alloc(&rbuf, rcount)
 *             source = rsts.MPI_SOURCE
 */
            __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_count((&__pyx_v_rsts), __pyx_v_rtype, (&__pyx_v_rcount))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L11;}
          }

          /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":278
 *     if dorecv:
 *         if robj is None:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Probe(source, recvtag, comm, &rsts) )
 *                 CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 */
          /*finally:*/ {
            int __pyx_why;
            __pyx_why = 0; goto __pyx_L12;
            __pyx_L11: __pyx_why = 4; goto __pyx_L12;
            __pyx_L12:;
            Py_BLOCK_THREADS
            switch (__pyx_why) {
              case 4: goto __pyx_L1_error;
            }
          }
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":281
 *                 CHKERR( MPI_Probe(source, recvtag, comm, &rsts) )
 *                 CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *             rmsg = pickle.alloc(&rbuf, rcount)             # <<<<<<<<<<<<<<
 *             source = rsts.MPI_SOURCE
 *             recvtag = rsts.MPI_TAG
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->alloc(__pyx_v_pickle, (&__pyx_v_rbuf), __pyx_v_rcount); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_v_rmsg);
      __pyx_v_rmsg = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":282
 *                 CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *             rmsg = pickle.alloc(&rbuf, rcount)
 *             source = rsts.MPI_SOURCE             # <<<<<<<<<<<<<<
 *             recvtag = rsts.MPI_TAG
 *         else:
 */
      __pyx_v_source = __pyx_v_rsts.MPI_SOURCE;

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":283
 *             rmsg = pickle.alloc(&rbuf, rcount)
 *             source = rsts.MPI_SOURCE
 *             recvtag = rsts.MPI_TAG             # <<<<<<<<<<<<<<
 *         else:
 *             rmsg = m = getbuffer(robj, 0, 0)
 */
      __pyx_v_recvtag = __pyx_v_rsts.MPI_TAG;
      goto __pyx_L9;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":285
 *             recvtag = rsts.MPI_TAG
 *         else:
 *             rmsg = m = getbuffer(robj, 0, 0)             # <<<<<<<<<<<<<<
 *             rbuf = m.view.buf
 *             rcount = <int> m.view.len # XXX overflow?
 */
      __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer(__pyx_v_robj, 0, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_v_rmsg);
      __pyx_v_rmsg = __pyx_t_1;
      __Pyx_INCREF(__pyx_t_1);
      __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":286
 *         else:
 *             rmsg = m = getbuffer(robj, 0, 0)
 *             rbuf = m.view.buf             # <<<<<<<<<<<<<<
 *             rcount = <int> m.view.len # XXX overflow?
 *     #
 */
      __pyx_v_rbuf = __pyx_v_m->view.buf;

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":287
 *             rmsg = m = getbuffer(robj, 0, 0)
 *             rbuf = m.view.buf
 *             rcount = <int> m.view.len # XXX overflow?             # <<<<<<<<<<<<<<
 *     #
 *     with nogil:
 */
      __pyx_v_rcount = ((int)__pyx_v_m->view.len);
    }
    __pyx_L9:;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":289
 *             rcount = <int> m.view.len # XXX overflow?
 *     #
 *     with nogil:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Recv(rbuf, rcount, rtype,
 *                          source, recvtag, comm, status) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":291
 *     with nogil:
 *         CHKERR( MPI_Recv(rbuf, rcount, rtype,
 *                          source, recvtag, comm, status) )             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Wait(&sreq, MPI_STATUS_IGNORE) )
 *     if dorecv: rmsg = pickle.load(rmsg)
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Recv(__pyx_v_rbuf, __pyx_v_rcount, __pyx_v_rtype, __pyx_v_source, __pyx_v_recvtag, __pyx_v_comm, __pyx_v_status)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L15;}

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":292
 *         CHKERR( MPI_Recv(rbuf, rcount, rtype,
 *                          source, recvtag, comm, status) )
 *         CHKERR( MPI_Wait(&sreq, MPI_STATUS_IGNORE) )             # <<<<<<<<<<<<<<
 *     if dorecv: rmsg = pickle.load(rmsg)
 *     return rmsg
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Wait((&__pyx_v_sreq), MPI_STATUS_IGNORE)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L15;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":289
 *             rcount = <int> m.view.len # XXX overflow?
 *     #
 *     with nogil:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Recv(rbuf, rcount, rtype,
 *                          source, recvtag, comm, status) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L16;
        __pyx_L15: __pyx_why = 4; goto __pyx_L16;
        __pyx_L16:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":293
 *                          source, recvtag, comm, status) )
 *         CHKERR( MPI_Wait(&sreq, MPI_STATUS_IGNORE) )
 *     if dorecv: rmsg = pickle.load(rmsg)             # <<<<<<<<<<<<<<
 *     return rmsg
 * 
 */
  if (__pyx_v_dorecv) {
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->load(__pyx_v_pickle, __pyx_v_rmsg); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_rmsg);
    __pyx_v_rmsg = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L18;
  }
  __pyx_L18:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":294
 *         CHKERR( MPI_Wait(&sreq, MPI_STATUS_IGNORE) )
 *     if dorecv: rmsg = pickle.load(rmsg)
 *     return rmsg             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rmsg);
  __pyx_r = __pyx_v_rmsg;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_sendrecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_smsg);
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":298
 * # -----------------------------------------------------------------------------
 * 
 * cdef object PyMPI_isend(object obj, int dest, int tag,             # <<<<<<<<<<<<<<
 *                         MPI_Comm comm, MPI_Request *request):
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_isend(PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag, MPI_Comm __pyx_v_comm, MPI_Request *__pyx_v_request) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  int __pyx_v_scount;
  MPI_Datatype __pyx_v_stype;
  PyObject *__pyx_v_smsg = 0;
  int __pyx_v_dosend;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_isend");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":300
 * cdef object PyMPI_isend(object obj, int dest, int tag,
 *                         MPI_Comm comm, MPI_Request *request):
 *     cdef _p_Pickle pickle = PyMPI_pickle()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickle()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickle = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":302
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":303
 *     #
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 */
  __pyx_v_scount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":304
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef object smsg = None
 */
  __pyx_v_stype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":306
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 *     cdef object smsg = None             # <<<<<<<<<<<<<<
 *     cdef int dosend = (dest != MPI_PROC_NULL)
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_smsg = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":307
 *     #
 *     cdef object smsg = None
 *     cdef int dosend = (dest != MPI_PROC_NULL)             # <<<<<<<<<<<<<<
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Isend(sbuf, scount, stype,
 */
  __pyx_v_dosend = (__pyx_v_dest != MPI_PROC_NULL);

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":308
 *     cdef object smsg = None
 *     cdef int dosend = (dest != MPI_PROC_NULL)
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Isend(sbuf, scount, stype,
 *                                   dest, tag, comm, request) )
 */
  if (__pyx_v_dosend) {
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->dump(__pyx_v_pickle, __pyx_v_obj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_smsg);
    __pyx_v_smsg = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":309
 *     cdef int dosend = (dest != MPI_PROC_NULL)
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Isend(sbuf, scount, stype,             # <<<<<<<<<<<<<<
 *                                   dest, tag, comm, request) )
 *     return smsg
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":310
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Isend(sbuf, scount, stype,
 *                                   dest, tag, comm, request) )             # <<<<<<<<<<<<<<
 *     return smsg
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Isend(__pyx_v_sbuf, __pyx_v_scount, __pyx_v_stype, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm, __pyx_v_request)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L5;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":309
 *     cdef int dosend = (dest != MPI_PROC_NULL)
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Isend(sbuf, scount, stype,             # <<<<<<<<<<<<<<
 *                                   dest, tag, comm, request) )
 *     return smsg
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L6;
        __pyx_L5: __pyx_why = 4; goto __pyx_L6;
        __pyx_L6:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":311
 *     with nogil: CHKERR( MPI_Isend(sbuf, scount, stype,
 *                                   dest, tag, comm, request) )
 *     return smsg             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_smsg);
  __pyx_r = __pyx_v_smsg;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_isend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":314
 * 
 * 
 * cdef object PyMPI_ibsend(object obj, int dest, int tag,             # <<<<<<<<<<<<<<
 *                          MPI_Comm comm, MPI_Request *request):
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_ibsend(PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag, MPI_Comm __pyx_v_comm, MPI_Request *__pyx_v_request) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  int __pyx_v_scount;
  MPI_Datatype __pyx_v_stype;
  PyObject *__pyx_v_smsg = 0;
  int __pyx_v_dosend;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_ibsend");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":316
 * cdef object PyMPI_ibsend(object obj, int dest, int tag,
 *                          MPI_Comm comm, MPI_Request *request):
 *     cdef _p_Pickle pickle = PyMPI_pickle()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickle()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickle = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":318
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":319
 *     #
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 */
  __pyx_v_scount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":320
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef object smsg = None
 */
  __pyx_v_stype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":322
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 *     cdef object smsg = None             # <<<<<<<<<<<<<<
 *     cdef int dosend = (dest != MPI_PROC_NULL)
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_smsg = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":323
 *     #
 *     cdef object smsg = None
 *     cdef int dosend = (dest != MPI_PROC_NULL)             # <<<<<<<<<<<<<<
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Ibsend(sbuf, scount, stype,
 */
  __pyx_v_dosend = (__pyx_v_dest != MPI_PROC_NULL);

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":324
 *     cdef object smsg = None
 *     cdef int dosend = (dest != MPI_PROC_NULL)
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Ibsend(sbuf, scount, stype,
 *                                    dest, tag, comm, request) )
 */
  if (__pyx_v_dosend) {
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->dump(__pyx_v_pickle, __pyx_v_obj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_smsg);
    __pyx_v_smsg = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":325
 *     cdef int dosend = (dest != MPI_PROC_NULL)
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Ibsend(sbuf, scount, stype,             # <<<<<<<<<<<<<<
 *                                    dest, tag, comm, request) )
 *     return smsg
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":326
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Ibsend(sbuf, scount, stype,
 *                                    dest, tag, comm, request) )             # <<<<<<<<<<<<<<
 *     return smsg
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ibsend(__pyx_v_sbuf, __pyx_v_scount, __pyx_v_stype, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm, __pyx_v_request)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L5;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":325
 *     cdef int dosend = (dest != MPI_PROC_NULL)
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Ibsend(sbuf, scount, stype,             # <<<<<<<<<<<<<<
 *                                    dest, tag, comm, request) )
 *     return smsg
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L6;
        __pyx_L5: __pyx_why = 4; goto __pyx_L6;
        __pyx_L6:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":327
 *     with nogil: CHKERR( MPI_Ibsend(sbuf, scount, stype,
 *                                    dest, tag, comm, request) )
 *     return smsg             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_smsg);
  __pyx_r = __pyx_v_smsg;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_ibsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":330
 * 
 * 
 * cdef object PyMPI_issend(object obj, int dest, int tag,             # <<<<<<<<<<<<<<
 *                          MPI_Comm comm, MPI_Request *request):
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_issend(PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag, MPI_Comm __pyx_v_comm, MPI_Request *__pyx_v_request) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  int __pyx_v_scount;
  MPI_Datatype __pyx_v_stype;
  PyObject *__pyx_v_smsg = 0;
  int __pyx_v_dosend;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_issend");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":332
 * cdef object PyMPI_issend(object obj, int dest, int tag,
 *                          MPI_Comm comm, MPI_Request *request):
 *     cdef _p_Pickle pickle = PyMPI_pickle()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickle()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickle = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":334
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":335
 *     #
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 */
  __pyx_v_scount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":336
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef object smsg = None
 */
  __pyx_v_stype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":338
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 *     cdef object smsg = None             # <<<<<<<<<<<<<<
 *     cdef int dosend = (dest != MPI_PROC_NULL)
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_smsg = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":339
 *     #
 *     cdef object smsg = None
 *     cdef int dosend = (dest != MPI_PROC_NULL)             # <<<<<<<<<<<<<<
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Issend(sbuf, scount, stype,
 */
  __pyx_v_dosend = (__pyx_v_dest != MPI_PROC_NULL);

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":340
 *     cdef object smsg = None
 *     cdef int dosend = (dest != MPI_PROC_NULL)
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Issend(sbuf, scount, stype,
 *                                    dest, tag, comm, request) )
 */
  if (__pyx_v_dosend) {
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->dump(__pyx_v_pickle, __pyx_v_obj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_smsg);
    __pyx_v_smsg = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":341
 *     cdef int dosend = (dest != MPI_PROC_NULL)
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Issend(sbuf, scount, stype,             # <<<<<<<<<<<<<<
 *                                    dest, tag, comm, request) )
 *     return smsg
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":342
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Issend(sbuf, scount, stype,
 *                                    dest, tag, comm, request) )             # <<<<<<<<<<<<<<
 *     return smsg
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Issend(__pyx_v_sbuf, __pyx_v_scount, __pyx_v_stype, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm, __pyx_v_request)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L5;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":341
 *     cdef int dosend = (dest != MPI_PROC_NULL)
 *     if dosend: smsg = pickle.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Issend(sbuf, scount, stype,             # <<<<<<<<<<<<<<
 *                                    dest, tag, comm, request) )
 *     return smsg
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L6;
        __pyx_L5: __pyx_why = 4; goto __pyx_L6;
        __pyx_L6:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":343
 *     with nogil: CHKERR( MPI_Issend(sbuf, scount, stype,
 *                                    dest, tag, comm, request) )
 *     return smsg             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_smsg);
  __pyx_r = __pyx_v_smsg;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_issend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":346
 * 
 * 
 * cdef object PyMPI_irecv(object obj, int dest, int tag,             # <<<<<<<<<<<<<<
 *                         MPI_Comm comm, MPI_Request *request):
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_irecv(PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag, MPI_Comm __pyx_v_comm, MPI_Request *__pyx_v_request) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_rbuf;
  int __pyx_v_rcount;
  MPI_Datatype __pyx_v_rtype;
  struct __pyx_obj_6mpi4py_3MPI__p_buffer *__pyx_v_rmsg = 0;
  int __pyx_v_dorecv;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_irecv");
  __Pyx_INCREF(__pyx_v_obj);

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":348
 * cdef object PyMPI_irecv(object obj, int dest, int tag,
 *                         MPI_Comm comm, MPI_Request *request):
 *     cdef _p_Pickle pickle = PyMPI_pickle()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *rbuf = NULL
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickle()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickle = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":350
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 *     #
 *     cdef void *rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rbuf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":351
 *     #
 *     cdef void *rbuf = NULL
 *     cdef int rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rcount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":352
 *     cdef void *rbuf = NULL
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef _p_buffer rmsg = None
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":354
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 *     cdef _p_buffer rmsg = None             # <<<<<<<<<<<<<<
 *     cdef int dorecv = (dest != MPI_PROC_NULL)
 *     if dorecv:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rmsg = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)Py_None);

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":355
 *     #
 *     cdef _p_buffer rmsg = None
 *     cdef int dorecv = (dest != MPI_PROC_NULL)             # <<<<<<<<<<<<<<
 *     if dorecv:
 *         if obj is None:
 */
  __pyx_v_dorecv = (__pyx_v_dest != MPI_PROC_NULL);

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":356
 *     cdef _p_buffer rmsg = None
 *     cdef int dorecv = (dest != MPI_PROC_NULL)
 *     if dorecv:             # <<<<<<<<<<<<<<
 *         if obj is None:
 *             rcount = <int>(1<<15)
 */
  if (__pyx_v_dorecv) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":357
 *     cdef int dorecv = (dest != MPI_PROC_NULL)
 *     if dorecv:
 *         if obj is None:             # <<<<<<<<<<<<<<
 *             rcount = <int>(1<<15)
 *             obj = pickle.alloc(&rbuf, rcount)
 */
    __pyx_t_2 = (__pyx_v_obj == Py_None);
    if (__pyx_t_2) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":358
 *     if dorecv:
 *         if obj is None:
 *             rcount = <int>(1<<15)             # <<<<<<<<<<<<<<
 *             obj = pickle.alloc(&rbuf, rcount)
 *             rmsg = getbuffer(obj, 1, 0)
 */
      __pyx_v_rcount = ((int)32768);

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":359
 *         if obj is None:
 *             rcount = <int>(1<<15)
 *             obj = pickle.alloc(&rbuf, rcount)             # <<<<<<<<<<<<<<
 *             rmsg = getbuffer(obj, 1, 0)
 *         #elif is_int(obj):
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->alloc(__pyx_v_pickle, (&__pyx_v_rbuf), __pyx_v_rcount); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_v_obj);
      __pyx_v_obj = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":360
 *             rcount = <int>(1<<15)
 *             obj = pickle.alloc(&rbuf, rcount)
 *             rmsg = getbuffer(obj, 1, 0)             # <<<<<<<<<<<<<<
 *         #elif is_int(obj):
 *         #    rcount = <int> obj
 */
      __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer(__pyx_v_obj, 1, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(((PyObject *)__pyx_v_rmsg));
      __pyx_v_rmsg = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_t_1);
      __pyx_t_1 = 0;
      goto __pyx_L4;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":366
 *         #    rmsg = getbuffer(obj, 1, 0)
 *         else:
 *             rmsg = getbuffer(obj, 0, 0)             # <<<<<<<<<<<<<<
 *             rbuf = rmsg.view.buf
 *             rcount = <int> rmsg.view.len # XXX overflow?
 */
      __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer(__pyx_v_obj, 0, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(((PyObject *)__pyx_v_rmsg));
      __pyx_v_rmsg = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)__pyx_t_1);
      __pyx_t_1 = 0;

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":367
 *         else:
 *             rmsg = getbuffer(obj, 0, 0)
 *             rbuf = rmsg.view.buf             # <<<<<<<<<<<<<<
 *             rcount = <int> rmsg.view.len # XXX overflow?
 *     with nogil: CHKERR( MPI_Irecv(rbuf, rcount, rtype,
 */
      __pyx_v_rbuf = __pyx_v_rmsg->view.buf;

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":368
 *             rmsg = getbuffer(obj, 0, 0)
 *             rbuf = rmsg.view.buf
 *             rcount = <int> rmsg.view.len # XXX overflow?             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Irecv(rbuf, rcount, rtype,
 *                                   dest, tag, comm, request) )
 */
      __pyx_v_rcount = ((int)__pyx_v_rmsg->view.len);
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":369
 *             rbuf = rmsg.view.buf
 *             rcount = <int> rmsg.view.len # XXX overflow?
 *     with nogil: CHKERR( MPI_Irecv(rbuf, rcount, rtype,             # <<<<<<<<<<<<<<
 *                                   dest, tag, comm, request) )
 *     return rmsg
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":370
 *             rcount = <int> rmsg.view.len # XXX overflow?
 *     with nogil: CHKERR( MPI_Irecv(rbuf, rcount, rtype,
 *                                   dest, tag, comm, request) )             # <<<<<<<<<<<<<<
 *     return rmsg
 * 
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Irecv(__pyx_v_rbuf, __pyx_v_rcount, __pyx_v_rtype, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm, __pyx_v_request)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":369
 *             rbuf = rmsg.view.buf
 *             rcount = <int> rmsg.view.len # XXX overflow?
 *     with nogil: CHKERR( MPI_Irecv(rbuf, rcount, rtype,             # <<<<<<<<<<<<<<
 *                                   dest, tag, comm, request) )
 *     return rmsg
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":371
 *     with nogil: CHKERR( MPI_Irecv(rbuf, rcount, rtype,
 *                                   dest, tag, comm, request) )
 *     return rmsg             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_rmsg));
  __pyx_r = ((PyObject *)__pyx_v_rmsg);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_irecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF((PyObject *)__pyx_v_rmsg);
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":374
 * 
 * 
 * cdef object PyMPI_wait(Request request, Status status):             # <<<<<<<<<<<<<<
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 *     cdef object buf
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_wait(struct PyMPIRequestObject *__pyx_v_request, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_pickle = 0;
  PyObject *__pyx_v_buf = 0;
  MPI_Status __pyx_v_rsts;
  int __pyx_v_rcount;
  MPI_Datatype __pyx_v_rtype;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_wait");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":375
 * 
 * cdef object PyMPI_wait(Request request, Status status):
 *     cdef _p_Pickle pickle = PyMPI_pickle()             # <<<<<<<<<<<<<<
 *     cdef object buf
 *     #
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickle()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickle = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":379
 *     #
 *     cdef MPI_Status rsts
 *     with nogil: CHKERR( MPI_Wait(&request.ob_mpi, &rsts) )             # <<<<<<<<<<<<<<
 *     buf = request.ob_buf
 *     if status is not None:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Wait((&__pyx_v_request->ob_mpi), (&__pyx_v_rsts))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L4;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L5;
        __pyx_L4: __pyx_why = 4; goto __pyx_L5;
        __pyx_L5:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":380
 *     cdef MPI_Status rsts
 *     with nogil: CHKERR( MPI_Wait(&request.ob_mpi, &rsts) )
 *     buf = request.ob_buf             # <<<<<<<<<<<<<<
 *     if status is not None:
 *         status.ob_mpi = rsts
 */
  __Pyx_INCREF(__pyx_v_request->ob_buf);
  __pyx_v_buf = __pyx_v_request->ob_buf;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":381
 *     with nogil: CHKERR( MPI_Wait(&request.ob_mpi, &rsts) )
 *     buf = request.ob_buf
 *     if status is not None:             # <<<<<<<<<<<<<<
 *         status.ob_mpi = rsts
 *     if request.ob_mpi == MPI_REQUEST_NULL:
 */
  __pyx_t_3 = (((PyObject *)__pyx_v_status) != Py_None);
  if (__pyx_t_3) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":382
 *     buf = request.ob_buf
 *     if status is not None:
 *         status.ob_mpi = rsts             # <<<<<<<<<<<<<<
 *     if request.ob_mpi == MPI_REQUEST_NULL:
 *         request.ob_buf = None
 */
    __pyx_v_status->ob_mpi = __pyx_v_rsts;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":383
 *     if status is not None:
 *         status.ob_mpi = rsts
 *     if request.ob_mpi == MPI_REQUEST_NULL:             # <<<<<<<<<<<<<<
 *         request.ob_buf = None
 *     #
 */
  __pyx_t_3 = (__pyx_v_request->ob_mpi == MPI_REQUEST_NULL);
  if (__pyx_t_3) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":384
 *         status.ob_mpi = rsts
 *     if request.ob_mpi == MPI_REQUEST_NULL:
 *         request.ob_buf = None             # <<<<<<<<<<<<<<
 *     #
 *     cdef int rcount = 0
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(__pyx_v_request->ob_buf);
    __Pyx_DECREF(__pyx_v_request->ob_buf);
    __pyx_v_request->ob_buf = Py_None;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":386
 *         request.ob_buf = None
 *     #
 *     cdef int rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     if type(buf) is not _p_buffer: return None
 */
  __pyx_v_rcount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":387
 *     #
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     if type(buf) is not _p_buffer: return None
 *     CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":388
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     if type(buf) is not _p_buffer: return None             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *     if rcount <= 0: return None
 */
  __pyx_t_3 = (((PyObject *)Py_TYPE(__pyx_v_buf)) != ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_buffer)));
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L9;
  }
  __pyx_L9:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":389
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     if type(buf) is not _p_buffer: return None
 *     CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )             # <<<<<<<<<<<<<<
 *     if rcount <= 0: return None
 *     return pickle.load(buf)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_count((&__pyx_v_rsts), __pyx_v_rtype, (&__pyx_v_rcount))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":390
 *     if type(buf) is not _p_buffer: return None
 *     CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *     if rcount <= 0: return None             # <<<<<<<<<<<<<<
 *     return pickle.load(buf)
 * 
 */
  __pyx_t_3 = (__pyx_v_rcount <= 0);
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L10;
  }
  __pyx_L10:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":391
 *     CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *     if rcount <= 0: return None
 *     return pickle.load(buf)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->load(__pyx_v_pickle, __pyx_v_buf); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_wait", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":394
 * 
 * 
 * cdef object PyMPI_test(Request request, int *flag, Status status):             # <<<<<<<<<<<<<<
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 *     cdef object buf
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_test(struct PyMPIRequestObject *__pyx_v_request, int *__pyx_v_flag, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_pickle = 0;
  PyObject *__pyx_v_buf = 0;
  MPI_Status __pyx_v_rsts;
  int __pyx_v_rcount;
  MPI_Datatype __pyx_v_rtype;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_test");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":395
 * 
 * cdef object PyMPI_test(Request request, int *flag, Status status):
 *     cdef _p_Pickle pickle = PyMPI_pickle()             # <<<<<<<<<<<<<<
 *     cdef object buf
 *     #
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickle()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickle = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":399
 *     #
 *     cdef MPI_Status rsts
 *     with nogil: CHKERR( MPI_Test(&request.ob_mpi, flag, &rsts) )             # <<<<<<<<<<<<<<
 *     if flag[0]:
 *         buf = request.ob_buf
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Test((&__pyx_v_request->ob_mpi), __pyx_v_flag, (&__pyx_v_rsts))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L4;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L5;
        __pyx_L4: __pyx_why = 4; goto __pyx_L5;
        __pyx_L5:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":400
 *     cdef MPI_Status rsts
 *     with nogil: CHKERR( MPI_Test(&request.ob_mpi, flag, &rsts) )
 *     if flag[0]:             # <<<<<<<<<<<<<<
 *         buf = request.ob_buf
 *     if status is not None:
 */
  if ((__pyx_v_flag[0])) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":401
 *     with nogil: CHKERR( MPI_Test(&request.ob_mpi, flag, &rsts) )
 *     if flag[0]:
 *         buf = request.ob_buf             # <<<<<<<<<<<<<<
 *     if status is not None:
 *         status.ob_mpi = rsts
 */
    __Pyx_INCREF(__pyx_v_request->ob_buf);
    __pyx_v_buf = __pyx_v_request->ob_buf;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":402
 *     if flag[0]:
 *         buf = request.ob_buf
 *     if status is not None:             # <<<<<<<<<<<<<<
 *         status.ob_mpi = rsts
 *     if request.ob_mpi == MPI_REQUEST_NULL:
 */
  __pyx_t_3 = (((PyObject *)__pyx_v_status) != Py_None);
  if (__pyx_t_3) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":403
 *         buf = request.ob_buf
 *     if status is not None:
 *         status.ob_mpi = rsts             # <<<<<<<<<<<<<<
 *     if request.ob_mpi == MPI_REQUEST_NULL:
 *         request.ob_buf = None
 */
    __pyx_v_status->ob_mpi = __pyx_v_rsts;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":404
 *     if status is not None:
 *         status.ob_mpi = rsts
 *     if request.ob_mpi == MPI_REQUEST_NULL:             # <<<<<<<<<<<<<<
 *         request.ob_buf = None
 *     #
 */
  __pyx_t_3 = (__pyx_v_request->ob_mpi == MPI_REQUEST_NULL);
  if (__pyx_t_3) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":405
 *         status.ob_mpi = rsts
 *     if request.ob_mpi == MPI_REQUEST_NULL:
 *         request.ob_buf = None             # <<<<<<<<<<<<<<
 *     #
 *     if not flag[0]: return None
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(__pyx_v_request->ob_buf);
    __Pyx_DECREF(__pyx_v_request->ob_buf);
    __pyx_v_request->ob_buf = Py_None;
    goto __pyx_L9;
  }
  __pyx_L9:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":407
 *         request.ob_buf = None
 *     #
 *     if not flag[0]: return None             # <<<<<<<<<<<<<<
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_t_3 = (!(__pyx_v_flag[0]));
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L10;
  }
  __pyx_L10:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":408
 *     #
 *     if not flag[0]: return None
 *     cdef int rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     if type(buf) is not _p_buffer: return None
 */
  __pyx_v_rcount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":409
 *     if not flag[0]: return None
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     if type(buf) is not _p_buffer: return None
 *     CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 */
  __pyx_v_rtype = MPI_BYTE;
  if (unlikely(!__pyx_v_buf)) { __Pyx_RaiseUnboundLocalError("buf"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }__pyx_t_3 = (((PyObject *)Py_TYPE(__pyx_v_buf)) != ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_buffer)));

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":410
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     if type(buf) is not _p_buffer: return None             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *     if rcount <= 0: return None
 */
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L11;
  }
  __pyx_L11:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":411
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     if type(buf) is not _p_buffer: return None
 *     CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )             # <<<<<<<<<<<<<<
 *     if rcount <= 0: return None
 *     return pickle.load(buf)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_count((&__pyx_v_rsts), __pyx_v_rtype, (&__pyx_v_rcount))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":412
 *     if type(buf) is not _p_buffer: return None
 *     CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *     if rcount <= 0: return None             # <<<<<<<<<<<<<<
 *     return pickle.load(buf)
 * 
 */
  __pyx_t_3 = (__pyx_v_rcount <= 0);
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L12;
  }
  __pyx_L12:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":413
 *     CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *     if rcount <= 0: return None
 *     return pickle.load(buf)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->load(__pyx_v_pickle, __pyx_v_buf); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_test", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":416
 * 
 * 
 * cdef object PyMPI_waitany(requests, int *index, Status status):             # <<<<<<<<<<<<<<
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 *     cdef object buf
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_waitany(PyObject *__pyx_v_requests, int *__pyx_v_index, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_pickle = 0;
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_count;
  MPI_Request *__pyx_v_irequests;
  MPI_Status __pyx_v_rsts;
  PyObject *__pyx_v_tmp = 0;
  int __pyx_v_rcount;
  MPI_Datatype __pyx_v_rtype;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_waitany");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":417
 * 
 * cdef object PyMPI_waitany(requests, int *index, Status status):
 *     cdef _p_Pickle pickle = PyMPI_pickle()             # <<<<<<<<<<<<<<
 *     cdef object buf
 *     #
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickle()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickle = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":420
 *     cdef object buf
 *     #
 *     cdef int count = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Request *irequests = NULL
 *     cdef MPI_Status rsts
 */
  __pyx_v_count = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":421
 *     #
 *     cdef int count = 0
 *     cdef MPI_Request *irequests = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Status rsts
 *     #
 */
  __pyx_v_irequests = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":424
 *     cdef MPI_Status rsts
 *     #
 *     cdef tmp = acquire_rs(requests, None, &count, &irequests, NULL)             # <<<<<<<<<<<<<<
 *     try:
 *         with nogil: CHKERR( MPI_Waitany(count, irequests, index, &rsts) )
 */
  __pyx_t_1 = Py_None;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_acquire_rs(__pyx_v_requests, __pyx_t_1, (&__pyx_v_count), (&__pyx_v_irequests), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_tmp = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":425
 *     #
 *     cdef tmp = acquire_rs(requests, None, &count, &irequests, NULL)
 *     try:             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Waitany(count, irequests, index, &rsts) )
 *         if index[0] != MPI_UNDEFINED:
 */
  /*try:*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":426
 *     cdef tmp = acquire_rs(requests, None, &count, &irequests, NULL)
 *     try:
 *         with nogil: CHKERR( MPI_Waitany(count, irequests, index, &rsts) )             # <<<<<<<<<<<<<<
 *         if index[0] != MPI_UNDEFINED:
 *             buf = (<Request>requests[<Py_ssize_t>index[0]]).ob_buf
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save = NULL;
        #endif
        Py_UNBLOCK_THREADS
        /*try:*/ {
          __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Waitany(__pyx_v_count, __pyx_v_irequests, __pyx_v_index, (&__pyx_v_rsts))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L7;}
        }
        /*finally:*/ {
          int __pyx_why;
          __pyx_why = 0; goto __pyx_L8;
          __pyx_L7: __pyx_why = 4; goto __pyx_L8;
          __pyx_L8:;
          Py_BLOCK_THREADS
          switch (__pyx_why) {
            case 4: goto __pyx_L4;
          }
        }
    }

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":427
 *     try:
 *         with nogil: CHKERR( MPI_Waitany(count, irequests, index, &rsts) )
 *         if index[0] != MPI_UNDEFINED:             # <<<<<<<<<<<<<<
 *             buf = (<Request>requests[<Py_ssize_t>index[0]]).ob_buf
 *         if status is not None:
 */
    __pyx_t_4 = ((__pyx_v_index[0]) != MPI_UNDEFINED);
    if (__pyx_t_4) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":428
 *         with nogil: CHKERR( MPI_Waitany(count, irequests, index, &rsts) )
 *         if index[0] != MPI_UNDEFINED:
 *             buf = (<Request>requests[<Py_ssize_t>index[0]]).ob_buf             # <<<<<<<<<<<<<<
 *         if status is not None:
 *             status.ob_mpi = rsts
 */
      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_requests, ((Py_ssize_t)(__pyx_v_index[0])), sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L4;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(((struct PyMPIRequestObject *)__pyx_t_2)->ob_buf);
      __pyx_v_buf = ((struct PyMPIRequestObject *)__pyx_t_2)->ob_buf;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L10;
    }
    __pyx_L10:;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":429
 *         if index[0] != MPI_UNDEFINED:
 *             buf = (<Request>requests[<Py_ssize_t>index[0]]).ob_buf
 *         if status is not None:             # <<<<<<<<<<<<<<
 *             status.ob_mpi = rsts
 *     finally:
 */
    __pyx_t_4 = (((PyObject *)__pyx_v_status) != Py_None);
    if (__pyx_t_4) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":430
 *             buf = (<Request>requests[<Py_ssize_t>index[0]]).ob_buf
 *         if status is not None:
 *             status.ob_mpi = rsts             # <<<<<<<<<<<<<<
 *     finally:
 *         release_rs(requests, None, count, irequests, NULL)
 */
      __pyx_v_status->ob_mpi = __pyx_v_rsts;
      goto __pyx_L11;
    }
    __pyx_L11:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":432
 *             status.ob_mpi = rsts
 *     finally:
 *         release_rs(requests, None, count, irequests, NULL)             # <<<<<<<<<<<<<<
 *     #
 *     if index[0] == MPI_UNDEFINED: return None
 */
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L5;
    __pyx_L4: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L5;
    }
    __pyx_L5:;
    __pyx_t_2 = Py_None;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_release_rs(__pyx_v_requests, __pyx_t_2, __pyx_v_count, __pyx_v_irequests, NULL); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L13;
    __pyx_L12_error:;
    if (__pyx_why == 4) {
      Py_XDECREF(__pyx_exc_type);
      Py_XDECREF(__pyx_exc_value);
      Py_XDECREF(__pyx_exc_tb);
    }
    goto __pyx_L1_error;
    __pyx_L13:;
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":434
 *         release_rs(requests, None, count, irequests, NULL)
 *     #
 *     if index[0] == MPI_UNDEFINED: return None             # <<<<<<<<<<<<<<
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_t_4 = ((__pyx_v_index[0]) == MPI_UNDEFINED);
  if (__pyx_t_4) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L14;
  }
  __pyx_L14:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":435
 *     #
 *     if index[0] == MPI_UNDEFINED: return None
 *     cdef int rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     if type(buf) is not _p_buffer: return None
 */
  __pyx_v_rcount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":436
 *     if index[0] == MPI_UNDEFINED: return None
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     if type(buf) is not _p_buffer: return None
 *     CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 */
  __pyx_v_rtype = MPI_BYTE;
  if (unlikely(!__pyx_v_buf)) { __Pyx_RaiseUnboundLocalError("buf"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }__pyx_t_4 = (((PyObject *)Py_TYPE(__pyx_v_buf)) != ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_buffer)));

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":437
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     if type(buf) is not _p_buffer: return None             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *     if rcount <= 0: return None
 */
  if (__pyx_t_4) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L15;
  }
  __pyx_L15:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":438
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     if type(buf) is not _p_buffer: return None
 *     CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )             # <<<<<<<<<<<<<<
 *     if rcount <= 0: return None
 *     return pickle.load(buf)
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_count((&__pyx_v_rsts), __pyx_v_rtype, (&__pyx_v_rcount))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":439
 *     if type(buf) is not _p_buffer: return None
 *     CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *     if rcount <= 0: return None             # <<<<<<<<<<<<<<
 *     return pickle.load(buf)
 * 
 */
  __pyx_t_4 = (__pyx_v_rcount <= 0);
  if (__pyx_t_4) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L16;
  }
  __pyx_L16:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":440
 *     CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *     if rcount <= 0: return None
 *     return pickle.load(buf)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->load(__pyx_v_pickle, __pyx_v_buf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_waitany", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_buf);
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":443
 * 
 * 
 * cdef object PyMPI_testany(requests, int *index, int *flag, Status status):             # <<<<<<<<<<<<<<
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 *     cdef object buf
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_testany(PyObject *__pyx_v_requests, int *__pyx_v_index, int *__pyx_v_flag, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_pickle = 0;
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_count;
  MPI_Request *__pyx_v_irequests;
  MPI_Status __pyx_v_rsts;
  PyObject *__pyx_v_tmp = 0;
  int __pyx_v_rcount;
  MPI_Datatype __pyx_v_rtype;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_testany");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":444
 * 
 * cdef object PyMPI_testany(requests, int *index, int *flag, Status status):
 *     cdef _p_Pickle pickle = PyMPI_pickle()             # <<<<<<<<<<<<<<
 *     cdef object buf
 *     #
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickle()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickle = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":447
 *     cdef object buf
 *     #
 *     cdef int count = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Request *irequests = NULL
 *     cdef MPI_Status rsts
 */
  __pyx_v_count = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":448
 *     #
 *     cdef int count = 0
 *     cdef MPI_Request *irequests = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Status rsts
 *     #
 */
  __pyx_v_irequests = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":451
 *     cdef MPI_Status rsts
 *     #
 *     cdef tmp = acquire_rs(requests, None, &count, &irequests, NULL)             # <<<<<<<<<<<<<<
 *     try:
 *         with nogil: CHKERR( MPI_Testany(count, irequests, index, flag, &rsts) )
 */
  __pyx_t_1 = Py_None;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_acquire_rs(__pyx_v_requests, __pyx_t_1, (&__pyx_v_count), (&__pyx_v_irequests), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_tmp = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":452
 *     #
 *     cdef tmp = acquire_rs(requests, None, &count, &irequests, NULL)
 *     try:             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Testany(count, irequests, index, flag, &rsts) )
 *         if index[0] != MPI_UNDEFINED:
 */
  /*try:*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":453
 *     cdef tmp = acquire_rs(requests, None, &count, &irequests, NULL)
 *     try:
 *         with nogil: CHKERR( MPI_Testany(count, irequests, index, flag, &rsts) )             # <<<<<<<<<<<<<<
 *         if index[0] != MPI_UNDEFINED:
 *             buf = (<Request>requests[<Py_ssize_t>index[0]]).ob_buf
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save = NULL;
        #endif
        Py_UNBLOCK_THREADS
        /*try:*/ {
          __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Testany(__pyx_v_count, __pyx_v_irequests, __pyx_v_index, __pyx_v_flag, (&__pyx_v_rsts))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L7;}
        }
        /*finally:*/ {
          int __pyx_why;
          __pyx_why = 0; goto __pyx_L8;
          __pyx_L7: __pyx_why = 4; goto __pyx_L8;
          __pyx_L8:;
          Py_BLOCK_THREADS
          switch (__pyx_why) {
            case 4: goto __pyx_L4;
          }
        }
    }

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":454
 *     try:
 *         with nogil: CHKERR( MPI_Testany(count, irequests, index, flag, &rsts) )
 *         if index[0] != MPI_UNDEFINED:             # <<<<<<<<<<<<<<
 *             buf = (<Request>requests[<Py_ssize_t>index[0]]).ob_buf
 *         if status is not None:
 */
    __pyx_t_4 = ((__pyx_v_index[0]) != MPI_UNDEFINED);
    if (__pyx_t_4) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":455
 *         with nogil: CHKERR( MPI_Testany(count, irequests, index, flag, &rsts) )
 *         if index[0] != MPI_UNDEFINED:
 *             buf = (<Request>requests[<Py_ssize_t>index[0]]).ob_buf             # <<<<<<<<<<<<<<
 *         if status is not None:
 *             status.ob_mpi = rsts
 */
      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_requests, ((Py_ssize_t)(__pyx_v_index[0])), sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L4;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(((struct PyMPIRequestObject *)__pyx_t_2)->ob_buf);
      __pyx_v_buf = ((struct PyMPIRequestObject *)__pyx_t_2)->ob_buf;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L10;
    }
    __pyx_L10:;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":456
 *         if index[0] != MPI_UNDEFINED:
 *             buf = (<Request>requests[<Py_ssize_t>index[0]]).ob_buf
 *         if status is not None:             # <<<<<<<<<<<<<<
 *             status.ob_mpi = rsts
 *     finally:
 */
    __pyx_t_4 = (((PyObject *)__pyx_v_status) != Py_None);
    if (__pyx_t_4) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":457
 *             buf = (<Request>requests[<Py_ssize_t>index[0]]).ob_buf
 *         if status is not None:
 *             status.ob_mpi = rsts             # <<<<<<<<<<<<<<
 *     finally:
 *         release_rs(requests, None, count, irequests, NULL)
 */
      __pyx_v_status->ob_mpi = __pyx_v_rsts;
      goto __pyx_L11;
    }
    __pyx_L11:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":459
 *             status.ob_mpi = rsts
 *     finally:
 *         release_rs(requests, None, count, irequests, NULL)             # <<<<<<<<<<<<<<
 *     #
 *     if index[0] == MPI_UNDEFINED: return None
 */
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L5;
    __pyx_L4: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L5;
    }
    __pyx_L5:;
    __pyx_t_2 = Py_None;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_release_rs(__pyx_v_requests, __pyx_t_2, __pyx_v_count, __pyx_v_irequests, NULL); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L13;
    __pyx_L12_error:;
    if (__pyx_why == 4) {
      Py_XDECREF(__pyx_exc_type);
      Py_XDECREF(__pyx_exc_value);
      Py_XDECREF(__pyx_exc_tb);
    }
    goto __pyx_L1_error;
    __pyx_L13:;
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":461
 *         release_rs(requests, None, count, irequests, NULL)
 *     #
 *     if index[0] == MPI_UNDEFINED: return None             # <<<<<<<<<<<<<<
 *     if not flag[0]: return None
 *     cdef int rcount = 0
 */
  __pyx_t_4 = ((__pyx_v_index[0]) == MPI_UNDEFINED);
  if (__pyx_t_4) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L14;
  }
  __pyx_L14:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":462
 *     #
 *     if index[0] == MPI_UNDEFINED: return None
 *     if not flag[0]: return None             # <<<<<<<<<<<<<<
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_t_4 = (!(__pyx_v_flag[0]));
  if (__pyx_t_4) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L15;
  }
  __pyx_L15:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":463
 *     if index[0] == MPI_UNDEFINED: return None
 *     if not flag[0]: return None
 *     cdef int rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     if type(buf) is not _p_buffer: return None
 */
  __pyx_v_rcount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":464
 *     if not flag[0]: return None
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     if type(buf) is not _p_buffer: return None
 *     CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 */
  __pyx_v_rtype = MPI_BYTE;
  if (unlikely(!__pyx_v_buf)) { __Pyx_RaiseUnboundLocalError("buf"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }__pyx_t_4 = (((PyObject *)Py_TYPE(__pyx_v_buf)) != ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_buffer)));

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":465
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     if type(buf) is not _p_buffer: return None             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *     if rcount <= 0: return None
 */
  if (__pyx_t_4) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L16;
  }
  __pyx_L16:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":466
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     if type(buf) is not _p_buffer: return None
 *     CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )             # <<<<<<<<<<<<<<
 *     if rcount <= 0: return None
 *     return pickle.load(buf)
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_count((&__pyx_v_rsts), __pyx_v_rtype, (&__pyx_v_rcount))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":467
 *     if type(buf) is not _p_buffer: return None
 *     CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *     if rcount <= 0: return None             # <<<<<<<<<<<<<<
 *     return pickle.load(buf)
 * 
 */
  __pyx_t_4 = (__pyx_v_rcount <= 0);
  if (__pyx_t_4) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L17;
  }
  __pyx_L17:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":468
 *     CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *     if rcount <= 0: return None
 *     return pickle.load(buf)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->load(__pyx_v_pickle, __pyx_v_buf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_testany", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_buf);
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":471
 * 
 * 
 * cdef object PyMPI_waitall(requests, statuses):             # <<<<<<<<<<<<<<
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 *     cdef object buf, bufs
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_waitall(PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_pickle = 0;
  PyObject *__pyx_v_buf = 0;
  PyObject *__pyx_v_bufs = 0;
  Py_ssize_t __pyx_v_i;
  int __pyx_v_count;
  MPI_Request *__pyx_v_irequests;
  MPI_Status *__pyx_v_istatuses;
  PyObject *__pyx_v_tmp = 0;
  int __pyx_v_rcount;
  MPI_Datatype __pyx_v_rtype;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_waitall");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":472
 * 
 * cdef object PyMPI_waitall(requests, statuses):
 *     cdef _p_Pickle pickle = PyMPI_pickle()             # <<<<<<<<<<<<<<
 *     cdef object buf, bufs
 *     #
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickle()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickle = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":475
 *     cdef object buf, bufs
 *     #
 *     cdef Py_ssize_t i = 0             # <<<<<<<<<<<<<<
 *     cdef int count = 0
 *     cdef MPI_Request *irequests = NULL
 */
  __pyx_v_i = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":476
 *     #
 *     cdef Py_ssize_t i = 0
 *     cdef int count = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Request *irequests = NULL
 *     cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 */
  __pyx_v_count = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":477
 *     cdef Py_ssize_t i = 0
 *     cdef int count = 0
 *     cdef MPI_Request *irequests = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 *     #
 */
  __pyx_v_irequests = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":478
 *     cdef int count = 0
 *     cdef MPI_Request *irequests = NULL
 *     cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE             # <<<<<<<<<<<<<<
 *     #
 *     cdef tmp = acquire_rs(requests, True, &count, &irequests, &istatuses)
 */
  __pyx_v_istatuses = MPI_STATUSES_IGNORE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":480
 *     cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 *     #
 *     cdef tmp = acquire_rs(requests, True, &count, &irequests, &istatuses)             # <<<<<<<<<<<<<<
 *     try:
 *         with nogil: CHKERR( MPI_Waitall(count, irequests, istatuses) )
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_acquire_rs(__pyx_v_requests, __pyx_t_1, (&__pyx_v_count), (&__pyx_v_irequests), (&__pyx_v_istatuses)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_tmp = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":481
 *     #
 *     cdef tmp = acquire_rs(requests, True, &count, &irequests, &istatuses)
 *     try:             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Waitall(count, irequests, istatuses) )
 *         bufs = [(<Request>requests[i]).ob_buf for i from 0 <= i < count]
 */
  /*try:*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":482
 *     cdef tmp = acquire_rs(requests, True, &count, &irequests, &istatuses)
 *     try:
 *         with nogil: CHKERR( MPI_Waitall(count, irequests, istatuses) )             # <<<<<<<<<<<<<<
 *         bufs = [(<Request>requests[i]).ob_buf for i from 0 <= i < count]
 *     finally:
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save = NULL;
        #endif
        Py_UNBLOCK_THREADS
        /*try:*/ {
          __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Waitall(__pyx_v_count, __pyx_v_irequests, __pyx_v_istatuses)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L7;}
        }
        /*finally:*/ {
          int __pyx_why;
          __pyx_why = 0; goto __pyx_L8;
          __pyx_L7: __pyx_why = 4; goto __pyx_L8;
          __pyx_L8:;
          Py_BLOCK_THREADS
          switch (__pyx_why) {
            case 4: goto __pyx_L4;
          }
        }
    }

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":483
 *     try:
 *         with nogil: CHKERR( MPI_Waitall(count, irequests, istatuses) )
 *         bufs = [(<Request>requests[i]).ob_buf for i from 0 <= i < count]             # <<<<<<<<<<<<<<
 *     finally:
 *         release_rs(requests, statuses, count, irequests, NULL)
 */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L4;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __pyx_t_3 = __pyx_v_count;
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) {
      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_requests, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L4;}
      __Pyx_GOTREF(__pyx_t_1);
      if (unlikely(PyList_Append(__pyx_t_2, (PyObject*)((struct PyMPIRequestObject *)__pyx_t_1)->ob_buf))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L4;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_INCREF(((PyObject *)__pyx_t_2));
    __pyx_v_bufs = ((PyObject *)__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":485
 *         bufs = [(<Request>requests[i]).ob_buf for i from 0 <= i < count]
 *     finally:
 *         release_rs(requests, statuses, count, irequests, NULL)             # <<<<<<<<<<<<<<
 *     #
 *     cdef int rcount = 0
 */
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L5;
    __pyx_L4: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L5;
    }
    __pyx_L5:;
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_release_rs(__pyx_v_requests, __pyx_v_statuses, __pyx_v_count, __pyx_v_irequests, NULL); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
    goto __pyx_L13;
    __pyx_L12_error:;
    if (__pyx_why == 4) {
      Py_XDECREF(__pyx_exc_type);
      Py_XDECREF(__pyx_exc_value);
      Py_XDECREF(__pyx_exc_tb);
    }
    goto __pyx_L1_error;
    __pyx_L13:;
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":487
 *         release_rs(requests, statuses, count, irequests, NULL)
 *     #
 *     cdef int rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     for i from 0 <= i < count:
 */
  __pyx_v_rcount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":488
 *     #
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     for i from 0 <= i < count:
 *         if type(bufs[i]) is not _p_buffer:
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":489
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     for i from 0 <= i < count:             # <<<<<<<<<<<<<<
 *         if type(bufs[i]) is not _p_buffer:
 *             bufs[i] = None; continue
 */
  __pyx_t_3 = __pyx_v_count;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":490
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     for i from 0 <= i < count:
 *         if type(bufs[i]) is not _p_buffer:             # <<<<<<<<<<<<<<
 *             bufs[i] = None; continue
 *         rcount = 0
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_bufs, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = (((PyObject *)Py_TYPE(__pyx_t_2)) != ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_buffer)));
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_4) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":491
 *     for i from 0 <= i < count:
 *         if type(bufs[i]) is not _p_buffer:
 *             bufs[i] = None; continue             # <<<<<<<<<<<<<<
 *         rcount = 0
 *         CHKERR( MPI_Get_count(&istatuses[i], rtype, &rcount) )
 */
      if (__Pyx_SetItemInt(__pyx_v_bufs, __pyx_v_i, Py_None, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L14_continue;
      goto __pyx_L16;
    }
    __pyx_L16:;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":492
 *         if type(bufs[i]) is not _p_buffer:
 *             bufs[i] = None; continue
 *         rcount = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Get_count(&istatuses[i], rtype, &rcount) )
 *         if rcount <= 0: bufs[i] = None
 */
    __pyx_v_rcount = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":493
 *             bufs[i] = None; continue
 *         rcount = 0
 *         CHKERR( MPI_Get_count(&istatuses[i], rtype, &rcount) )             # <<<<<<<<<<<<<<
 *         if rcount <= 0: bufs[i] = None
 *     return [pickle.load(buf) for buf in bufs]
 */
    __pyx_t_5 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_count((&(__pyx_v_istatuses[__pyx_v_i])), __pyx_v_rtype, (&__pyx_v_rcount))); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":494
 *         rcount = 0
 *         CHKERR( MPI_Get_count(&istatuses[i], rtype, &rcount) )
 *         if rcount <= 0: bufs[i] = None             # <<<<<<<<<<<<<<
 *     return [pickle.load(buf) for buf in bufs]
 * 
 */
    __pyx_t_4 = (__pyx_v_rcount <= 0);
    if (__pyx_t_4) {
      if (__Pyx_SetItemInt(__pyx_v_bufs, __pyx_v_i, Py_None, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L17;
    }
    __pyx_L17:;
    __pyx_L14_continue:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":495
 *         CHKERR( MPI_Get_count(&istatuses[i], rtype, &rcount) )
 *         if rcount <= 0: bufs[i] = None
 *     return [pickle.load(buf) for buf in bufs]             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  if (PyList_CheckExact(__pyx_v_bufs) || PyTuple_CheckExact(__pyx_v_bufs)) {
    __pyx_t_1 = __pyx_v_bufs; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_bufs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext;
  }
  for (;;) {
    if (PyList_CheckExact(__pyx_t_1)) {
      if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break;
      __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++;
    } else if (PyTuple_CheckExact(__pyx_t_1)) {
      if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
      __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++;
    } else {
      __pyx_t_8 = __pyx_t_7(__pyx_t_1);
      if (unlikely(!__pyx_t_8)) {
        if (PyErr_Occurred()) {
          if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_8);
    }
    __Pyx_XDECREF(__pyx_v_buf);
    __pyx_v_buf = __pyx_t_8;
    __pyx_t_8 = 0;
    __pyx_t_8 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->load(__pyx_v_pickle, __pyx_v_buf); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    if (unlikely(PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __pyx_r = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_waitall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_buf);
  __Pyx_XDECREF(__pyx_v_bufs);
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":498
 * 
 * 
 * cdef object PyMPI_testall(requests, int *flag, statuses):             # <<<<<<<<<<<<<<
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 *     cdef object buf, bufs
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_testall(PyObject *__pyx_v_requests, int *__pyx_v_flag, PyObject *__pyx_v_statuses) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_pickle = 0;
  PyObject *__pyx_v_buf = 0;
  PyObject *__pyx_v_bufs = 0;
  Py_ssize_t __pyx_v_i;
  int __pyx_v_count;
  MPI_Request *__pyx_v_irequests;
  MPI_Status *__pyx_v_istatuses;
  PyObject *__pyx_v_tmp = 0;
  int __pyx_v_rcount;
  MPI_Datatype __pyx_v_rtype;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_testall");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":499
 * 
 * cdef object PyMPI_testall(requests, int *flag, statuses):
 *     cdef _p_Pickle pickle = PyMPI_pickle()             # <<<<<<<<<<<<<<
 *     cdef object buf, bufs
 *     #
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickle()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickle = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":502
 *     cdef object buf, bufs
 *     #
 *     cdef Py_ssize_t i = 0             # <<<<<<<<<<<<<<
 *     cdef int count = 0
 *     cdef MPI_Request *irequests = NULL
 */
  __pyx_v_i = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":503
 *     #
 *     cdef Py_ssize_t i = 0
 *     cdef int count = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Request *irequests = NULL
 *     cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 */
  __pyx_v_count = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":504
 *     cdef Py_ssize_t i = 0
 *     cdef int count = 0
 *     cdef MPI_Request *irequests = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 *     #
 */
  __pyx_v_irequests = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":505
 *     cdef int count = 0
 *     cdef MPI_Request *irequests = NULL
 *     cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE             # <<<<<<<<<<<<<<
 *     #
 *     cdef tmp = acquire_rs(requests, True, &count, &irequests, &istatuses)
 */
  __pyx_v_istatuses = MPI_STATUSES_IGNORE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":507
 *     cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 *     #
 *     cdef tmp = acquire_rs(requests, True, &count, &irequests, &istatuses)             # <<<<<<<<<<<<<<
 *     try:
 *         with nogil: CHKERR( MPI_Testall(count, irequests, flag, istatuses) )
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_acquire_rs(__pyx_v_requests, __pyx_t_1, (&__pyx_v_count), (&__pyx_v_irequests), (&__pyx_v_istatuses)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_tmp = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":508
 *     #
 *     cdef tmp = acquire_rs(requests, True, &count, &irequests, &istatuses)
 *     try:             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Testall(count, irequests, flag, istatuses) )
 *         if flag[0]:
 */
  /*try:*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":509
 *     cdef tmp = acquire_rs(requests, True, &count, &irequests, &istatuses)
 *     try:
 *         with nogil: CHKERR( MPI_Testall(count, irequests, flag, istatuses) )             # <<<<<<<<<<<<<<
 *         if flag[0]:
 *             bufs = [(<Request>requests[i]).ob_buf for i from 0 <= i < count]
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save = NULL;
        #endif
        Py_UNBLOCK_THREADS
        /*try:*/ {
          __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Testall(__pyx_v_count, __pyx_v_irequests, __pyx_v_flag, __pyx_v_istatuses)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L7;}
        }
        /*finally:*/ {
          int __pyx_why;
          __pyx_why = 0; goto __pyx_L8;
          __pyx_L7: __pyx_why = 4; goto __pyx_L8;
          __pyx_L8:;
          Py_BLOCK_THREADS
          switch (__pyx_why) {
            case 4: goto __pyx_L4;
          }
        }
    }

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":510
 *     try:
 *         with nogil: CHKERR( MPI_Testall(count, irequests, flag, istatuses) )
 *         if flag[0]:             # <<<<<<<<<<<<<<
 *             bufs = [(<Request>requests[i]).ob_buf for i from 0 <= i < count]
 *     finally:
 */
    if ((__pyx_v_flag[0])) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":511
 *         with nogil: CHKERR( MPI_Testall(count, irequests, flag, istatuses) )
 *         if flag[0]:
 *             bufs = [(<Request>requests[i]).ob_buf for i from 0 <= i < count]             # <<<<<<<<<<<<<<
 *     finally:
 *         release_rs(requests, statuses, count, irequests, NULL)
 */
      __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L4;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
      __pyx_t_3 = __pyx_v_count;
      for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) {
        __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_requests, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L4;}
        __Pyx_GOTREF(__pyx_t_1);
        if (unlikely(PyList_Append(__pyx_t_2, (PyObject*)((struct PyMPIRequestObject *)__pyx_t_1)->ob_buf))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L4;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      }
      __Pyx_INCREF(((PyObject *)__pyx_t_2));
      __pyx_v_bufs = ((PyObject *)__pyx_t_2);
      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
      goto __pyx_L10;
    }
    __pyx_L10:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":513
 *             bufs = [(<Request>requests[i]).ob_buf for i from 0 <= i < count]
 *     finally:
 *         release_rs(requests, statuses, count, irequests, NULL)             # <<<<<<<<<<<<<<
 *     #
 *     if not flag[0]: return None
 */
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L5;
    __pyx_L4: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L5;
    }
    __pyx_L5:;
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_release_rs(__pyx_v_requests, __pyx_v_statuses, __pyx_v_count, __pyx_v_irequests, NULL); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
    goto __pyx_L14;
    __pyx_L13_error:;
    if (__pyx_why == 4) {
      Py_XDECREF(__pyx_exc_type);
      Py_XDECREF(__pyx_exc_value);
      Py_XDECREF(__pyx_exc_tb);
    }
    goto __pyx_L1_error;
    __pyx_L14:;
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":515
 *         release_rs(requests, statuses, count, irequests, NULL)
 *     #
 *     if not flag[0]: return None             # <<<<<<<<<<<<<<
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_t_4 = (!(__pyx_v_flag[0]));
  if (__pyx_t_4) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L15;
  }
  __pyx_L15:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":516
 *     #
 *     if not flag[0]: return None
 *     cdef int rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     for i from 0 <= i < count:
 */
  __pyx_v_rcount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":517
 *     if not flag[0]: return None
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     for i from 0 <= i < count:
 *         if type(bufs[i]) is not _p_buffer:
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":518
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     for i from 0 <= i < count:             # <<<<<<<<<<<<<<
 *         if type(bufs[i]) is not _p_buffer:
 *             bufs[i] = None; continue
 */
  __pyx_t_3 = __pyx_v_count;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) {
    if (unlikely(!__pyx_v_bufs)) { __Pyx_RaiseUnboundLocalError("bufs"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_bufs, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":519
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     for i from 0 <= i < count:
 *         if type(bufs[i]) is not _p_buffer:             # <<<<<<<<<<<<<<
 *             bufs[i] = None; continue
 *         rcount = 0
 */
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = (((PyObject *)Py_TYPE(__pyx_t_2)) != ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_buffer)));
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_4) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":520
 *     for i from 0 <= i < count:
 *         if type(bufs[i]) is not _p_buffer:
 *             bufs[i] = None; continue             # <<<<<<<<<<<<<<
 *         rcount = 0
 *         CHKERR( MPI_Get_count(&istatuses[i], rtype, &rcount) )
 */
      if (__Pyx_SetItemInt(__pyx_v_bufs, __pyx_v_i, Py_None, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L16_continue;
      goto __pyx_L18;
    }
    __pyx_L18:;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":521
 *         if type(bufs[i]) is not _p_buffer:
 *             bufs[i] = None; continue
 *         rcount = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Get_count(&istatuses[i], rtype, &rcount) )
 *         if rcount <= 0: bufs[i] = None
 */
    __pyx_v_rcount = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":522
 *             bufs[i] = None; continue
 *         rcount = 0
 *         CHKERR( MPI_Get_count(&istatuses[i], rtype, &rcount) )             # <<<<<<<<<<<<<<
 *         if rcount <= 0: bufs[i] = None
 *     return [pickle.load(buf) for buf in bufs]
 */
    __pyx_t_5 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_count((&(__pyx_v_istatuses[__pyx_v_i])), __pyx_v_rtype, (&__pyx_v_rcount))); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":523
 *         rcount = 0
 *         CHKERR( MPI_Get_count(&istatuses[i], rtype, &rcount) )
 *         if rcount <= 0: bufs[i] = None             # <<<<<<<<<<<<<<
 *     return [pickle.load(buf) for buf in bufs]
 * 
 */
    __pyx_t_4 = (__pyx_v_rcount <= 0);
    if (__pyx_t_4) {
      if (__Pyx_SetItemInt(__pyx_v_bufs, __pyx_v_i, Py_None, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L19;
    }
    __pyx_L19:;
    __pyx_L16_continue:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":524
 *         CHKERR( MPI_Get_count(&istatuses[i], rtype, &rcount) )
 *         if rcount <= 0: bufs[i] = None
 *     return [pickle.load(buf) for buf in bufs]             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  if (unlikely(!__pyx_v_bufs)) { __Pyx_RaiseUnboundLocalError("bufs"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }if (PyList_CheckExact(__pyx_v_bufs) || PyTuple_CheckExact(__pyx_v_bufs)) {
    __pyx_t_1 = __pyx_v_bufs; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_bufs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext;
  }
  for (;;) {
    if (PyList_CheckExact(__pyx_t_1)) {
      if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break;
      __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++;
    } else if (PyTuple_CheckExact(__pyx_t_1)) {
      if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
      __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++;
    } else {
      __pyx_t_8 = __pyx_t_7(__pyx_t_1);
      if (unlikely(!__pyx_t_8)) {
        if (PyErr_Occurred()) {
          if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_8);
    }
    __Pyx_XDECREF(__pyx_v_buf);
    __pyx_v_buf = __pyx_t_8;
    __pyx_t_8 = 0;
    __pyx_t_8 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->load(__pyx_v_pickle, __pyx_v_buf); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    if (unlikely(PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __pyx_r = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_testall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_buf);
  __Pyx_XDECREF(__pyx_v_bufs);
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":528
 * # -----------------------------------------------------------------------------
 * 
 * cdef object PyMPI_barrier(MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Barrier(comm) )
 *     return None
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_barrier(MPI_Comm __pyx_v_comm) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_barrier");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":529
 * 
 * cdef object PyMPI_barrier(MPI_Comm comm):
 *     with nogil: CHKERR( MPI_Barrier(comm) )             # <<<<<<<<<<<<<<
 *     return None
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Barrier(__pyx_v_comm)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L4;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L5;
        __pyx_L4: __pyx_why = 4; goto __pyx_L5;
        __pyx_L5:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":530
 * cdef object PyMPI_barrier(MPI_Comm comm):
 *     with nogil: CHKERR( MPI_Barrier(comm) )
 *     return None             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_None);
  __pyx_r = Py_None;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_barrier", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":533
 * 
 * 
 * cdef object PyMPI_bcast(object obj,             # <<<<<<<<<<<<<<
 *                         int root, MPI_Comm comm):
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_bcast(PyObject *__pyx_v_obj, int __pyx_v_root, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_buf;
  int __pyx_v_count;
  MPI_Datatype __pyx_v_dtype;
  int __pyx_v_dosend;
  int __pyx_v_dorecv;
  int __pyx_v_inter;
  int __pyx_v_rank;
  PyObject *__pyx_v_smsg = 0;
  PyObject *__pyx_v_rmsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_bcast");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":535
 * cdef object PyMPI_bcast(object obj,
 *                         int root, MPI_Comm comm):
 *     cdef _p_Pickle pickle = PyMPI_pickle()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *buf = NULL
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickle()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickle = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":537
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 *     #
 *     cdef void *buf = NULL             # <<<<<<<<<<<<<<
 *     cdef int count = 0
 *     cdef MPI_Datatype dtype = MPI_BYTE
 */
  __pyx_v_buf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":538
 *     #
 *     cdef void *buf = NULL
 *     cdef int count = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype dtype = MPI_BYTE
 *     #
 */
  __pyx_v_count = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":539
 *     cdef void *buf = NULL
 *     cdef int count = 0
 *     cdef MPI_Datatype dtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef int dosend=0, dorecv=0
 */
  __pyx_v_dtype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":541
 *     cdef MPI_Datatype dtype = MPI_BYTE
 *     #
 *     cdef int dosend=0, dorecv=0             # <<<<<<<<<<<<<<
 *     cdef int inter=0, rank=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_v_dosend = 0;
  __pyx_v_dorecv = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":542
 *     #
 *     cdef int dosend=0, dorecv=0
 *     cdef int inter=0, rank=0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:
 */
  __pyx_v_inter = 0;
  __pyx_v_rank = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":543
 *     cdef int dosend=0, dorecv=0
 *     cdef int inter=0, rank=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *     if inter:
 *         if root == <int>MPI_PROC_NULL:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":544
 *     cdef int inter=0, rank=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:             # <<<<<<<<<<<<<<
 *         if root == <int>MPI_PROC_NULL:
 *             dosend=0; dorecv=0;
 */
  if (__pyx_v_inter) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":545
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:
 *         if root == <int>MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *             dosend=0; dorecv=0;
 *         elif root == <int>MPI_ROOT:
 */
    __pyx_t_3 = (__pyx_v_root == ((int)MPI_PROC_NULL));
    if (__pyx_t_3) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":546
 *     if inter:
 *         if root == <int>MPI_PROC_NULL:
 *             dosend=0; dorecv=0;             # <<<<<<<<<<<<<<
 *         elif root == <int>MPI_ROOT:
 *             dosend=1; dorecv=0;
 */
      __pyx_v_dosend = 0;
      __pyx_v_dorecv = 0;
      goto __pyx_L4;
    }

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":547
 *         if root == <int>MPI_PROC_NULL:
 *             dosend=0; dorecv=0;
 *         elif root == <int>MPI_ROOT:             # <<<<<<<<<<<<<<
 *             dosend=1; dorecv=0;
 *         else:
 */
    __pyx_t_3 = (__pyx_v_root == ((int)MPI_ROOT));
    if (__pyx_t_3) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":548
 *             dosend=0; dorecv=0;
 *         elif root == <int>MPI_ROOT:
 *             dosend=1; dorecv=0;             # <<<<<<<<<<<<<<
 *         else:
 *             dosend=0; dorecv=1;
 */
      __pyx_v_dosend = 1;
      __pyx_v_dorecv = 0;
      goto __pyx_L4;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":550
 *             dosend=1; dorecv=0;
 *         else:
 *             dosend=0; dorecv=1;             # <<<<<<<<<<<<<<
 *     else:
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 */
      __pyx_v_dosend = 0;
      __pyx_v_dorecv = 1;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":552
 *             dosend=0; dorecv=1;
 *     else:
 *         CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *         if root == rank:
 *             dosend=1; dorecv=1;
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":553
 *     else:
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             dosend=1; dorecv=1;
 *         else:
 */
    __pyx_t_3 = (__pyx_v_root == __pyx_v_rank);
    if (__pyx_t_3) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":554
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:
 *             dosend=1; dorecv=1;             # <<<<<<<<<<<<<<
 *         else:
 *             dosend=0; dorecv=1;
 */
      __pyx_v_dosend = 1;
      __pyx_v_dorecv = 1;
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":556
 *             dosend=1; dorecv=1;
 *         else:
 *             dosend=0; dorecv=1;             # <<<<<<<<<<<<<<
 *     #
 *     cdef object smsg = None
 */
      __pyx_v_dosend = 0;
      __pyx_v_dorecv = 1;
    }
    __pyx_L5:;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":558
 *             dosend=0; dorecv=1;
 *     #
 *     cdef object smsg = None             # <<<<<<<<<<<<<<
 *     if dosend: smsg = pickle.dump(obj, &buf, &count)
 *     with nogil: CHKERR( MPI_Bcast(&count, 1, MPI_INT,
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_smsg = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":559
 *     #
 *     cdef object smsg = None
 *     if dosend: smsg = pickle.dump(obj, &buf, &count)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Bcast(&count, 1, MPI_INT,
 *                                   root, comm) )
 */
  if (__pyx_v_dosend) {
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->dump(__pyx_v_pickle, __pyx_v_obj, (&__pyx_v_buf), (&__pyx_v_count)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_smsg);
    __pyx_v_smsg = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":560
 *     cdef object smsg = None
 *     if dosend: smsg = pickle.dump(obj, &buf, &count)
 *     with nogil: CHKERR( MPI_Bcast(&count, 1, MPI_INT,             # <<<<<<<<<<<<<<
 *                                   root, comm) )
 *     cdef object rmsg = None
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":561
 *     if dosend: smsg = pickle.dump(obj, &buf, &count)
 *     with nogil: CHKERR( MPI_Bcast(&count, 1, MPI_INT,
 *                                   root, comm) )             # <<<<<<<<<<<<<<
 *     cdef object rmsg = None
 *     if dorecv and dosend: rmsg = smsg
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Bcast((&__pyx_v_count), 1, MPI_INT, __pyx_v_root, __pyx_v_comm)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L8;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":560
 *     cdef object smsg = None
 *     if dosend: smsg = pickle.dump(obj, &buf, &count)
 *     with nogil: CHKERR( MPI_Bcast(&count, 1, MPI_INT,             # <<<<<<<<<<<<<<
 *                                   root, comm) )
 *     cdef object rmsg = None
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L9;
        __pyx_L8: __pyx_why = 4; goto __pyx_L9;
        __pyx_L9:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":562
 *     with nogil: CHKERR( MPI_Bcast(&count, 1, MPI_INT,
 *                                   root, comm) )
 *     cdef object rmsg = None             # <<<<<<<<<<<<<<
 *     if dorecv and dosend: rmsg = smsg
 *     elif dorecv: rmsg = pickle.alloc(&buf, count)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rmsg = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":563
 *                                   root, comm) )
 *     cdef object rmsg = None
 *     if dorecv and dosend: rmsg = smsg             # <<<<<<<<<<<<<<
 *     elif dorecv: rmsg = pickle.alloc(&buf, count)
 *     with nogil: CHKERR( MPI_Bcast(buf, count, dtype,
 */
  if (__pyx_v_dorecv) {
    __pyx_t_3 = __pyx_v_dosend;
  } else {
    __pyx_t_3 = __pyx_v_dorecv;
  }
  if (__pyx_t_3) {
    __Pyx_INCREF(__pyx_v_smsg);
    __Pyx_DECREF(__pyx_v_rmsg);
    __pyx_v_rmsg = __pyx_v_smsg;
    goto __pyx_L11;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":564
 *     cdef object rmsg = None
 *     if dorecv and dosend: rmsg = smsg
 *     elif dorecv: rmsg = pickle.alloc(&buf, count)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Bcast(buf, count, dtype,
 *                                   root, comm) )
 */
  if (__pyx_v_dorecv) {
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->alloc(__pyx_v_pickle, (&__pyx_v_buf), __pyx_v_count); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_rmsg);
    __pyx_v_rmsg = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L11;
  }
  __pyx_L11:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":565
 *     if dorecv and dosend: rmsg = smsg
 *     elif dorecv: rmsg = pickle.alloc(&buf, count)
 *     with nogil: CHKERR( MPI_Bcast(buf, count, dtype,             # <<<<<<<<<<<<<<
 *                                   root, comm) )
 *     if dorecv: rmsg = pickle.load(rmsg)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":566
 *     elif dorecv: rmsg = pickle.alloc(&buf, count)
 *     with nogil: CHKERR( MPI_Bcast(buf, count, dtype,
 *                                   root, comm) )             # <<<<<<<<<<<<<<
 *     if dorecv: rmsg = pickle.load(rmsg)
 *     return rmsg
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Bcast(__pyx_v_buf, __pyx_v_count, __pyx_v_dtype, __pyx_v_root, __pyx_v_comm)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L13;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":565
 *     if dorecv and dosend: rmsg = smsg
 *     elif dorecv: rmsg = pickle.alloc(&buf, count)
 *     with nogil: CHKERR( MPI_Bcast(buf, count, dtype,             # <<<<<<<<<<<<<<
 *                                   root, comm) )
 *     if dorecv: rmsg = pickle.load(rmsg)
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L14;
        __pyx_L13: __pyx_why = 4; goto __pyx_L14;
        __pyx_L14:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":567
 *     with nogil: CHKERR( MPI_Bcast(buf, count, dtype,
 *                                   root, comm) )
 *     if dorecv: rmsg = pickle.load(rmsg)             # <<<<<<<<<<<<<<
 *     return rmsg
 * 
 */
  if (__pyx_v_dorecv) {
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->load(__pyx_v_pickle, __pyx_v_rmsg); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_rmsg);
    __pyx_v_rmsg = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L16;
  }
  __pyx_L16:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":568
 *                                   root, comm) )
 *     if dorecv: rmsg = pickle.load(rmsg)
 *     return rmsg             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rmsg);
  __pyx_r = __pyx_v_rmsg;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_bcast", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_smsg);
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":571
 * 
 * 
 * cdef object PyMPI_gather(object sendobj, object recvobj,             # <<<<<<<<<<<<<<
 *                          int root, MPI_Comm comm):
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_gather(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_recvobj, int __pyx_v_root, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  int __pyx_v_scount;
  MPI_Datatype __pyx_v_stype;
  void *__pyx_v_rbuf;
  int *__pyx_v_rcounts;
  int *__pyx_v_rdispls;
  MPI_Datatype __pyx_v_rtype;
  int __pyx_v_dosend;
  int __pyx_v_dorecv;
  int __pyx_v_inter;
  int __pyx_v_size;
  int __pyx_v_rank;
  PyObject *__pyx_v_tmp1 = 0;
  PyObject *__pyx_v_tmp2 = 0;
  PyObject *__pyx_v_smsg = 0;
  PyObject *__pyx_v_rmsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_gather");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":573
 * cdef object PyMPI_gather(object sendobj, object recvobj,
 *                          int root, MPI_Comm comm):
 *     cdef _p_Pickle pickle = PyMPI_pickle()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickle()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickle = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":575
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":576
 *     #
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 */
  __pyx_v_scount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":577
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     cdef void *rbuf = NULL
 *     cdef int *rcounts = NULL
 */
  __pyx_v_stype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":578
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int *rcounts = NULL
 *     cdef int *rdispls = NULL
 */
  __pyx_v_rbuf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":579
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 *     cdef int *rcounts = NULL             # <<<<<<<<<<<<<<
 *     cdef int *rdispls = NULL
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rcounts = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":580
 *     cdef void *rbuf = NULL
 *     cdef int *rcounts = NULL
 *     cdef int *rdispls = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rdispls = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":581
 *     cdef int *rcounts = NULL
 *     cdef int *rdispls = NULL
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef int dosend=0, dorecv=0
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":583
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 *     cdef int dosend=0, dorecv=0             # <<<<<<<<<<<<<<
 *     cdef int inter=0, size=0, rank=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_v_dosend = 0;
  __pyx_v_dorecv = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":584
 *     #
 *     cdef int dosend=0, dorecv=0
 *     cdef int inter=0, size=0, rank=0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:
 */
  __pyx_v_inter = 0;
  __pyx_v_size = 0;
  __pyx_v_rank = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":585
 *     cdef int dosend=0, dorecv=0
 *     cdef int inter=0, size=0, rank=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":586
 *     cdef int inter=0, size=0, rank=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         if root == <int>MPI_PROC_NULL:
 */
  if (__pyx_v_inter) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":587
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         if root == <int>MPI_PROC_NULL:
 *             dosend=0; dorecv=0;
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":588
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         if root == <int>MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *             dosend=0; dorecv=0;
 *         elif root == <int>MPI_ROOT:
 */
    __pyx_t_3 = (__pyx_v_root == ((int)MPI_PROC_NULL));
    if (__pyx_t_3) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":589
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         if root == <int>MPI_PROC_NULL:
 *             dosend=0; dorecv=0;             # <<<<<<<<<<<<<<
 *         elif root == <int>MPI_ROOT:
 *             dosend=0; dorecv=1;
 */
      __pyx_v_dosend = 0;
      __pyx_v_dorecv = 0;
      goto __pyx_L4;
    }

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":590
 *         if root == <int>MPI_PROC_NULL:
 *             dosend=0; dorecv=0;
 *         elif root == <int>MPI_ROOT:             # <<<<<<<<<<<<<<
 *             dosend=0; dorecv=1;
 *         else:
 */
    __pyx_t_3 = (__pyx_v_root == ((int)MPI_ROOT));
    if (__pyx_t_3) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":591
 *             dosend=0; dorecv=0;
 *         elif root == <int>MPI_ROOT:
 *             dosend=0; dorecv=1;             # <<<<<<<<<<<<<<
 *         else:
 *             dosend=1; dorecv=0;
 */
      __pyx_v_dosend = 0;
      __pyx_v_dorecv = 1;
      goto __pyx_L4;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":593
 *             dosend=0; dorecv=1;
 *         else:
 *             dosend=1; dorecv=0;             # <<<<<<<<<<<<<<
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )
 */
      __pyx_v_dosend = 1;
      __pyx_v_dorecv = 0;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":595
 *             dosend=1; dorecv=0;
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":596
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *         if root == rank:
 *             dosend=1; dorecv=1;
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":597
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             dosend=1; dorecv=1;
 *         else:
 */
    __pyx_t_3 = (__pyx_v_root == __pyx_v_rank);
    if (__pyx_t_3) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":598
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:
 *             dosend=1; dorecv=1;             # <<<<<<<<<<<<<<
 *         else:
 *             dosend=1; dorecv=0;
 */
      __pyx_v_dosend = 1;
      __pyx_v_dorecv = 1;
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":600
 *             dosend=1; dorecv=1;
 *         else:
 *             dosend=1; dorecv=0;             # <<<<<<<<<<<<<<
 *     #
 *     cdef object tmp1=None, tmp2=None
 */
      __pyx_v_dosend = 1;
      __pyx_v_dorecv = 0;
    }
    __pyx_L5:;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":602
 *             dosend=1; dorecv=0;
 *     #
 *     cdef object tmp1=None, tmp2=None             # <<<<<<<<<<<<<<
 *     if dorecv: tmp1 = allocate_int(size, &rcounts)
 *     if dorecv: tmp2 = allocate_int(size, &rdispls)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_tmp1 = Py_None;
  __Pyx_INCREF(Py_None);
  __pyx_v_tmp2 = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":603
 *     #
 *     cdef object tmp1=None, tmp2=None
 *     if dorecv: tmp1 = allocate_int(size, &rcounts)             # <<<<<<<<<<<<<<
 *     if dorecv: tmp2 = allocate_int(size, &rdispls)
 *     #
 */
  if (__pyx_v_dorecv) {
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_allocate_int(__pyx_v_size, (&__pyx_v_rcounts)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_tmp1);
    __pyx_v_tmp1 = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":604
 *     cdef object tmp1=None, tmp2=None
 *     if dorecv: tmp1 = allocate_int(size, &rcounts)
 *     if dorecv: tmp2 = allocate_int(size, &rdispls)             # <<<<<<<<<<<<<<
 *     #
 *     cdef object smsg = None
 */
  if (__pyx_v_dorecv) {
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_allocate_int(__pyx_v_size, (&__pyx_v_rdispls)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_tmp2);
    __pyx_v_tmp2 = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":606
 *     if dorecv: tmp2 = allocate_int(size, &rdispls)
 *     #
 *     cdef object smsg = None             # <<<<<<<<<<<<<<
 *     if dosend: smsg = pickle.dump(sendobj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Gather(&scount, 1, MPI_INT,
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_smsg = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":607
 *     #
 *     cdef object smsg = None
 *     if dosend: smsg = pickle.dump(sendobj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Gather(&scount, 1, MPI_INT,
 *                                    rcounts, 1, MPI_INT,
 */
  if (__pyx_v_dosend) {
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->dump(__pyx_v_pickle, __pyx_v_sendobj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_smsg);
    __pyx_v_smsg = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":608
 *     cdef object smsg = None
 *     if dosend: smsg = pickle.dump(sendobj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Gather(&scount, 1, MPI_INT,             # <<<<<<<<<<<<<<
 *                                    rcounts, 1, MPI_INT,
 *                                    root, comm) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":610
 *     with nogil: CHKERR( MPI_Gather(&scount, 1, MPI_INT,
 *                                    rcounts, 1, MPI_INT,
 *                                    root, comm) )             # <<<<<<<<<<<<<<
 *     cdef object rmsg = None
 *     if dorecv: rmsg = pickle.allocv(&rbuf, size, rcounts, rdispls)
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Gather((&__pyx_v_scount), 1, MPI_INT, __pyx_v_rcounts, 1, MPI_INT, __pyx_v_root, __pyx_v_comm)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L10;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":608
 *     cdef object smsg = None
 *     if dosend: smsg = pickle.dump(sendobj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Gather(&scount, 1, MPI_INT,             # <<<<<<<<<<<<<<
 *                                    rcounts, 1, MPI_INT,
 *                                    root, comm) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L11;
        __pyx_L10: __pyx_why = 4; goto __pyx_L11;
        __pyx_L11:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":611
 *                                    rcounts, 1, MPI_INT,
 *                                    root, comm) )
 *     cdef object rmsg = None             # <<<<<<<<<<<<<<
 *     if dorecv: rmsg = pickle.allocv(&rbuf, size, rcounts, rdispls)
 *     with nogil: CHKERR( MPI_Gatherv(sbuf, scount,           stype,
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rmsg = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":612
 *                                    root, comm) )
 *     cdef object rmsg = None
 *     if dorecv: rmsg = pickle.allocv(&rbuf, size, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Gatherv(sbuf, scount,           stype,
 *                                     rbuf, rcounts, rdispls, rtype,
 */
  if (__pyx_v_dorecv) {
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->allocv(__pyx_v_pickle, (&__pyx_v_rbuf), __pyx_v_size, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_rmsg);
    __pyx_v_rmsg = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L13;
  }
  __pyx_L13:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":613
 *     cdef object rmsg = None
 *     if dorecv: rmsg = pickle.allocv(&rbuf, size, rcounts, rdispls)
 *     with nogil: CHKERR( MPI_Gatherv(sbuf, scount,           stype,             # <<<<<<<<<<<<<<
 *                                     rbuf, rcounts, rdispls, rtype,
 *                                     root, comm) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":615
 *     with nogil: CHKERR( MPI_Gatherv(sbuf, scount,           stype,
 *                                     rbuf, rcounts, rdispls, rtype,
 *                                     root, comm) )             # <<<<<<<<<<<<<<
 *     if dorecv: rmsg = pickle.loadv(rmsg, size, rcounts, rdispls)
 *     return rmsg
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Gatherv(__pyx_v_sbuf, __pyx_v_scount, __pyx_v_stype, __pyx_v_rbuf, __pyx_v_rcounts, __pyx_v_rdispls, __pyx_v_rtype, __pyx_v_root, __pyx_v_comm)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 613; __pyx_clineno = __LINE__; goto __pyx_L15;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":613
 *     cdef object rmsg = None
 *     if dorecv: rmsg = pickle.allocv(&rbuf, size, rcounts, rdispls)
 *     with nogil: CHKERR( MPI_Gatherv(sbuf, scount,           stype,             # <<<<<<<<<<<<<<
 *                                     rbuf, rcounts, rdispls, rtype,
 *                                     root, comm) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L16;
        __pyx_L15: __pyx_why = 4; goto __pyx_L16;
        __pyx_L16:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":616
 *                                     rbuf, rcounts, rdispls, rtype,
 *                                     root, comm) )
 *     if dorecv: rmsg = pickle.loadv(rmsg, size, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *     return rmsg
 * 
 */
  if (__pyx_v_dorecv) {
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->loadv(__pyx_v_pickle, __pyx_v_rmsg, __pyx_v_size, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_rmsg);
    __pyx_v_rmsg = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L18;
  }
  __pyx_L18:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":617
 *                                     root, comm) )
 *     if dorecv: rmsg = pickle.loadv(rmsg, size, rcounts, rdispls)
 *     return rmsg             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rmsg);
  __pyx_r = __pyx_v_rmsg;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_gather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_XDECREF(__pyx_v_smsg);
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":620
 * 
 * 
 * cdef object PyMPI_scatter(object sendobj, object recvobj,             # <<<<<<<<<<<<<<
 *                           int root, MPI_Comm comm):
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_scatter(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_recvobj, int __pyx_v_root, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  int *__pyx_v_scounts;
  int *__pyx_v_sdispls;
  MPI_Datatype __pyx_v_stype;
  void *__pyx_v_rbuf;
  int __pyx_v_rcount;
  MPI_Datatype __pyx_v_rtype;
  int __pyx_v_dosend;
  int __pyx_v_dorecv;
  int __pyx_v_inter;
  int __pyx_v_size;
  int __pyx_v_rank;
  PyObject *__pyx_v_tmp1 = 0;
  PyObject *__pyx_v_tmp2 = 0;
  PyObject *__pyx_v_smsg = 0;
  PyObject *__pyx_v_rmsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_scatter");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":622
 * cdef object PyMPI_scatter(object sendobj, object recvobj,
 *                           int root, MPI_Comm comm):
 *     cdef _p_Pickle pickle = PyMPI_pickle()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickle()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickle = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":624
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int *scounts = NULL
 *     cdef int *sdispls = NULL
 */
  __pyx_v_sbuf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":625
 *     #
 *     cdef void *sbuf = NULL
 *     cdef int *scounts = NULL             # <<<<<<<<<<<<<<
 *     cdef int *sdispls = NULL
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_scounts = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":626
 *     cdef void *sbuf = NULL
 *     cdef int *scounts = NULL
 *     cdef int *sdispls = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 */
  __pyx_v_sdispls = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":627
 *     cdef int *scounts = NULL
 *     cdef int *sdispls = NULL
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     cdef void *rbuf = NULL
 *     cdef int rcount = 0
 */
  __pyx_v_stype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":628
 *     cdef int *sdispls = NULL
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rbuf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":629
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 *     cdef int rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rcount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":630
 *     cdef void *rbuf = NULL
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef int dosend=0, dorecv=0
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":632
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 *     cdef int dosend=0, dorecv=0             # <<<<<<<<<<<<<<
 *     cdef int inter=0, size=0, rank=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_v_dosend = 0;
  __pyx_v_dorecv = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":633
 *     #
 *     cdef int dosend=0, dorecv=0
 *     cdef int inter=0, size=0, rank=0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:
 */
  __pyx_v_inter = 0;
  __pyx_v_size = 0;
  __pyx_v_rank = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":634
 *     cdef int dosend=0, dorecv=0
 *     cdef int inter=0, size=0, rank=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":635
 *     cdef int inter=0, size=0, rank=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         if root == <int>MPI_PROC_NULL:
 */
  if (__pyx_v_inter) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":636
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         if root == <int>MPI_PROC_NULL:
 *             dosend=1; dorecv=0;
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":637
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         if root == <int>MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *             dosend=1; dorecv=0;
 *         elif root == <int>MPI_ROOT:
 */
    __pyx_t_3 = (__pyx_v_root == ((int)MPI_PROC_NULL));
    if (__pyx_t_3) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":638
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         if root == <int>MPI_PROC_NULL:
 *             dosend=1; dorecv=0;             # <<<<<<<<<<<<<<
 *         elif root == <int>MPI_ROOT:
 *             dosend=1; dorecv=0;
 */
      __pyx_v_dosend = 1;
      __pyx_v_dorecv = 0;
      goto __pyx_L4;
    }

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":639
 *         if root == <int>MPI_PROC_NULL:
 *             dosend=1; dorecv=0;
 *         elif root == <int>MPI_ROOT:             # <<<<<<<<<<<<<<
 *             dosend=1; dorecv=0;
 *         else:
 */
    __pyx_t_3 = (__pyx_v_root == ((int)MPI_ROOT));
    if (__pyx_t_3) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":640
 *             dosend=1; dorecv=0;
 *         elif root == <int>MPI_ROOT:
 *             dosend=1; dorecv=0;             # <<<<<<<<<<<<<<
 *         else:
 *             dosend=0; dorecv=1;
 */
      __pyx_v_dosend = 1;
      __pyx_v_dorecv = 0;
      goto __pyx_L4;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":642
 *             dosend=1; dorecv=0;
 *         else:
 *             dosend=0; dorecv=1;             # <<<<<<<<<<<<<<
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )
 */
      __pyx_v_dosend = 0;
      __pyx_v_dorecv = 1;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":644
 *             dosend=0; dorecv=1;
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":645
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *         if root == rank:
 *             dosend=1; dorecv=1;
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":646
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             dosend=1; dorecv=1;
 *         else:
 */
    __pyx_t_3 = (__pyx_v_root == __pyx_v_rank);
    if (__pyx_t_3) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":647
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:
 *             dosend=1; dorecv=1;             # <<<<<<<<<<<<<<
 *         else:
 *             dosend=0; dorecv=1;
 */
      __pyx_v_dosend = 1;
      __pyx_v_dorecv = 1;
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":649
 *             dosend=1; dorecv=1;
 *         else:
 *             dosend=0; dorecv=1;             # <<<<<<<<<<<<<<
 *     #
 *     cdef object tmp1=None, tmp2=None
 */
      __pyx_v_dosend = 0;
      __pyx_v_dorecv = 1;
    }
    __pyx_L5:;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":651
 *             dosend=0; dorecv=1;
 *     #
 *     cdef object tmp1=None, tmp2=None             # <<<<<<<<<<<<<<
 *     if dosend: tmp1 = allocate_int(size, &scounts)
 *     if dosend: tmp2 = allocate_int(size, &sdispls)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_tmp1 = Py_None;
  __Pyx_INCREF(Py_None);
  __pyx_v_tmp2 = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":652
 *     #
 *     cdef object tmp1=None, tmp2=None
 *     if dosend: tmp1 = allocate_int(size, &scounts)             # <<<<<<<<<<<<<<
 *     if dosend: tmp2 = allocate_int(size, &sdispls)
 *     #
 */
  if (__pyx_v_dosend) {
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_allocate_int(__pyx_v_size, (&__pyx_v_scounts)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 652; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_tmp1);
    __pyx_v_tmp1 = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":653
 *     cdef object tmp1=None, tmp2=None
 *     if dosend: tmp1 = allocate_int(size, &scounts)
 *     if dosend: tmp2 = allocate_int(size, &sdispls)             # <<<<<<<<<<<<<<
 *     #
 *     cdef object smsg = None
 */
  if (__pyx_v_dosend) {
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_allocate_int(__pyx_v_size, (&__pyx_v_sdispls)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_tmp2);
    __pyx_v_tmp2 = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":655
 *     if dosend: tmp2 = allocate_int(size, &sdispls)
 *     #
 *     cdef object smsg = None             # <<<<<<<<<<<<<<
 *     if dosend: smsg = pickle.dumpv(sendobj, &sbuf, size, scounts, sdispls)
 *     with nogil: CHKERR( MPI_Scatter(scounts, 1, MPI_INT,
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_smsg = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":656
 *     #
 *     cdef object smsg = None
 *     if dosend: smsg = pickle.dumpv(sendobj, &sbuf, size, scounts, sdispls)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Scatter(scounts, 1, MPI_INT,
 *                                     &rcount, 1, MPI_INT,
 */
  if (__pyx_v_dosend) {
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->dumpv(__pyx_v_pickle, __pyx_v_sendobj, (&__pyx_v_sbuf), __pyx_v_size, __pyx_v_scounts, __pyx_v_sdispls); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_smsg);
    __pyx_v_smsg = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":657
 *     cdef object smsg = None
 *     if dosend: smsg = pickle.dumpv(sendobj, &sbuf, size, scounts, sdispls)
 *     with nogil: CHKERR( MPI_Scatter(scounts, 1, MPI_INT,             # <<<<<<<<<<<<<<
 *                                     &rcount, 1, MPI_INT,
 *                                     root, comm) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":659
 *     with nogil: CHKERR( MPI_Scatter(scounts, 1, MPI_INT,
 *                                     &rcount, 1, MPI_INT,
 *                                     root, comm) )             # <<<<<<<<<<<<<<
 *     cdef object rmsg = None
 *     if dorecv: rmsg = pickle.alloc(&rbuf, rcount)
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Scatter(__pyx_v_scounts, 1, MPI_INT, (&__pyx_v_rcount), 1, MPI_INT, __pyx_v_root, __pyx_v_comm)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 657; __pyx_clineno = __LINE__; goto __pyx_L10;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":657
 *     cdef object smsg = None
 *     if dosend: smsg = pickle.dumpv(sendobj, &sbuf, size, scounts, sdispls)
 *     with nogil: CHKERR( MPI_Scatter(scounts, 1, MPI_INT,             # <<<<<<<<<<<<<<
 *                                     &rcount, 1, MPI_INT,
 *                                     root, comm) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L11;
        __pyx_L10: __pyx_why = 4; goto __pyx_L11;
        __pyx_L11:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":660
 *                                     &rcount, 1, MPI_INT,
 *                                     root, comm) )
 *     cdef object rmsg = None             # <<<<<<<<<<<<<<
 *     if dorecv: rmsg = pickle.alloc(&rbuf, rcount)
 *     with nogil: CHKERR( MPI_Scatterv(sbuf, scounts, sdispls, stype,
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rmsg = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":661
 *                                     root, comm) )
 *     cdef object rmsg = None
 *     if dorecv: rmsg = pickle.alloc(&rbuf, rcount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Scatterv(sbuf, scounts, sdispls, stype,
 *                                      rbuf, rcount,           rtype,
 */
  if (__pyx_v_dorecv) {
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->alloc(__pyx_v_pickle, (&__pyx_v_rbuf), __pyx_v_rcount); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_rmsg);
    __pyx_v_rmsg = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L13;
  }
  __pyx_L13:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":662
 *     cdef object rmsg = None
 *     if dorecv: rmsg = pickle.alloc(&rbuf, rcount)
 *     with nogil: CHKERR( MPI_Scatterv(sbuf, scounts, sdispls, stype,             # <<<<<<<<<<<<<<
 *                                      rbuf, rcount,           rtype,
 *                                      root, comm) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":664
 *     with nogil: CHKERR( MPI_Scatterv(sbuf, scounts, sdispls, stype,
 *                                      rbuf, rcount,           rtype,
 *                                      root, comm) )             # <<<<<<<<<<<<<<
 *     if dorecv: rmsg = pickle.load(rmsg)
 *     return rmsg
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Scatterv(__pyx_v_sbuf, __pyx_v_scounts, __pyx_v_sdispls, __pyx_v_stype, __pyx_v_rbuf, __pyx_v_rcount, __pyx_v_rtype, __pyx_v_root, __pyx_v_comm)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L15;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":662
 *     cdef object rmsg = None
 *     if dorecv: rmsg = pickle.alloc(&rbuf, rcount)
 *     with nogil: CHKERR( MPI_Scatterv(sbuf, scounts, sdispls, stype,             # <<<<<<<<<<<<<<
 *                                      rbuf, rcount,           rtype,
 *                                      root, comm) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L16;
        __pyx_L15: __pyx_why = 4; goto __pyx_L16;
        __pyx_L16:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":665
 *                                      rbuf, rcount,           rtype,
 *                                      root, comm) )
 *     if dorecv: rmsg = pickle.load(rmsg)             # <<<<<<<<<<<<<<
 *     return rmsg
 * 
 */
  if (__pyx_v_dorecv) {
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->load(__pyx_v_pickle, __pyx_v_rmsg); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_rmsg);
    __pyx_v_rmsg = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L18;
  }
  __pyx_L18:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":666
 *                                      root, comm) )
 *     if dorecv: rmsg = pickle.load(rmsg)
 *     return rmsg             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rmsg);
  __pyx_r = __pyx_v_rmsg;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_scatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_XDECREF(__pyx_v_smsg);
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":669
 * 
 * 
 * cdef object PyMPI_allgather(object sendobj, object recvobj,             # <<<<<<<<<<<<<<
 *                             MPI_Comm comm):
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_allgather(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_recvobj, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  int __pyx_v_scount;
  MPI_Datatype __pyx_v_stype;
  void *__pyx_v_rbuf;
  int *__pyx_v_rcounts;
  int *__pyx_v_rdispls;
  MPI_Datatype __pyx_v_rtype;
  int __pyx_v_inter;
  int __pyx_v_size;
  PyObject *__pyx_v_tmp1 = 0;
  PyObject *__pyx_v_tmp2 = 0;
  PyObject *__pyx_v_smsg = 0;
  PyObject *__pyx_v_rmsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_allgather");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":671
 * cdef object PyMPI_allgather(object sendobj, object recvobj,
 *                             MPI_Comm comm):
 *     cdef _p_Pickle pickle = PyMPI_pickle()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickle()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickle = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":673
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":674
 *     #
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 */
  __pyx_v_scount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":675
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     cdef void *rbuf = NULL
 *     cdef int *rcounts = NULL
 */
  __pyx_v_stype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":676
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int *rcounts = NULL
 *     cdef int *rdispls = NULL
 */
  __pyx_v_rbuf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":677
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 *     cdef int *rcounts = NULL             # <<<<<<<<<<<<<<
 *     cdef int *rdispls = NULL
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rcounts = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":678
 *     cdef void *rbuf = NULL
 *     cdef int *rcounts = NULL
 *     cdef int *rdispls = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rdispls = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":679
 *     cdef int *rcounts = NULL
 *     cdef int *rdispls = NULL
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef int inter=0, size=0
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":681
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 *     cdef int inter=0, size=0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:
 */
  __pyx_v_inter = 0;
  __pyx_v_size = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":682
 *     #
 *     cdef int inter=0, size=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 682; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":683
 *     cdef int inter=0, size=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *     else:
 */
  if (__pyx_v_inter) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":684
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )             # <<<<<<<<<<<<<<
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 684; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":686
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *     #
 *     cdef object tmp1 = allocate_int(size, &rcounts)
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":688
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *     #
 *     cdef object tmp1 = allocate_int(size, &rcounts)             # <<<<<<<<<<<<<<
 *     cdef object tmp2 = allocate_int(size, &rdispls)
 *     #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_allocate_int(__pyx_v_size, (&__pyx_v_rcounts)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_tmp1 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":689
 *     #
 *     cdef object tmp1 = allocate_int(size, &rcounts)
 *     cdef object tmp2 = allocate_int(size, &rdispls)             # <<<<<<<<<<<<<<
 *     #
 *     cdef object smsg = pickle.dump(sendobj, &sbuf, &scount)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_allocate_int(__pyx_v_size, (&__pyx_v_rdispls)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_tmp2 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":691
 *     cdef object tmp2 = allocate_int(size, &rdispls)
 *     #
 *     cdef object smsg = pickle.dump(sendobj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Allgather(&scount, 1, MPI_INT,
 *                                       rcounts, 1, MPI_INT,
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->dump(__pyx_v_pickle, __pyx_v_sendobj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 691; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":692
 *     #
 *     cdef object smsg = pickle.dump(sendobj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Allgather(&scount, 1, MPI_INT,             # <<<<<<<<<<<<<<
 *                                       rcounts, 1, MPI_INT,
 *                                       comm) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":694
 *     with nogil: CHKERR( MPI_Allgather(&scount, 1, MPI_INT,
 *                                       rcounts, 1, MPI_INT,
 *                                       comm) )             # <<<<<<<<<<<<<<
 *     cdef object rmsg = pickle.allocv(&rbuf, size, rcounts, rdispls)
 *     with nogil: CHKERR( MPI_Allgatherv(sbuf, scount,           stype,
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Allgather((&__pyx_v_scount), 1, MPI_INT, __pyx_v_rcounts, 1, MPI_INT, __pyx_v_comm)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 692; __pyx_clineno = __LINE__; goto __pyx_L5;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":692
 *     #
 *     cdef object smsg = pickle.dump(sendobj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Allgather(&scount, 1, MPI_INT,             # <<<<<<<<<<<<<<
 *                                       rcounts, 1, MPI_INT,
 *                                       comm) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L6;
        __pyx_L5: __pyx_why = 4; goto __pyx_L6;
        __pyx_L6:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":695
 *                                       rcounts, 1, MPI_INT,
 *                                       comm) )
 *     cdef object rmsg = pickle.allocv(&rbuf, size, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Allgatherv(sbuf, scount,           stype,
 *                                        rbuf, rcounts, rdispls, rtype,
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->allocv(__pyx_v_pickle, (&__pyx_v_rbuf), __pyx_v_size, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_rmsg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":696
 *                                       comm) )
 *     cdef object rmsg = pickle.allocv(&rbuf, size, rcounts, rdispls)
 *     with nogil: CHKERR( MPI_Allgatherv(sbuf, scount,           stype,             # <<<<<<<<<<<<<<
 *                                        rbuf, rcounts, rdispls, rtype,
 *                                        comm) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":698
 *     with nogil: CHKERR( MPI_Allgatherv(sbuf, scount,           stype,
 *                                        rbuf, rcounts, rdispls, rtype,
 *                                        comm) )             # <<<<<<<<<<<<<<
 *     rmsg = pickle.loadv(rmsg, size, rcounts, rdispls)
 *     return rmsg
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Allgatherv(__pyx_v_sbuf, __pyx_v_scount, __pyx_v_stype, __pyx_v_rbuf, __pyx_v_rcounts, __pyx_v_rdispls, __pyx_v_rtype, __pyx_v_comm)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L9;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":696
 *                                       comm) )
 *     cdef object rmsg = pickle.allocv(&rbuf, size, rcounts, rdispls)
 *     with nogil: CHKERR( MPI_Allgatherv(sbuf, scount,           stype,             # <<<<<<<<<<<<<<
 *                                        rbuf, rcounts, rdispls, rtype,
 *                                        comm) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L10;
        __pyx_L9: __pyx_why = 4; goto __pyx_L10;
        __pyx_L10:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":699
 *                                        rbuf, rcounts, rdispls, rtype,
 *                                        comm) )
 *     rmsg = pickle.loadv(rmsg, size, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *     return rmsg
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->loadv(__pyx_v_pickle, __pyx_v_rmsg, __pyx_v_size, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_rmsg);
  __pyx_v_rmsg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":700
 *                                        comm) )
 *     rmsg = pickle.loadv(rmsg, size, rcounts, rdispls)
 *     return rmsg             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rmsg);
  __pyx_r = __pyx_v_rmsg;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_XDECREF(__pyx_v_smsg);
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":703
 * 
 * 
 * cdef object PyMPI_alltoall(object sendobj, object recvobj,             # <<<<<<<<<<<<<<
 *                            MPI_Comm comm):
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_alltoall(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_recvobj, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  int *__pyx_v_scounts;
  int *__pyx_v_sdispls;
  MPI_Datatype __pyx_v_stype;
  void *__pyx_v_rbuf;
  int *__pyx_v_rcounts;
  int *__pyx_v_rdispls;
  MPI_Datatype __pyx_v_rtype;
  int __pyx_v_inter;
  int __pyx_v_size;
  PyObject *__pyx_v_stmp1 = 0;
  PyObject *__pyx_v_stmp2 = 0;
  PyObject *__pyx_v_rtmp1 = 0;
  PyObject *__pyx_v_rtmp2 = 0;
  PyObject *__pyx_v_smsg = 0;
  PyObject *__pyx_v_rmsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_alltoall");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":705
 * cdef object PyMPI_alltoall(object sendobj, object recvobj,
 *                            MPI_Comm comm):
 *     cdef _p_Pickle pickle = PyMPI_pickle()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickle()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickle = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":707
 *     cdef _p_Pickle pickle = PyMPI_pickle()
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int *scounts = NULL
 *     cdef int *sdispls = NULL
 */
  __pyx_v_sbuf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":708
 *     #
 *     cdef void *sbuf = NULL
 *     cdef int *scounts = NULL             # <<<<<<<<<<<<<<
 *     cdef int *sdispls = NULL
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_scounts = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":709
 *     cdef void *sbuf = NULL
 *     cdef int *scounts = NULL
 *     cdef int *sdispls = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 */
  __pyx_v_sdispls = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":710
 *     cdef int *scounts = NULL
 *     cdef int *sdispls = NULL
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     cdef void *rbuf = NULL
 *     cdef int *rcounts = NULL
 */
  __pyx_v_stype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":711
 *     cdef int *sdispls = NULL
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int *rcounts = NULL
 *     cdef int *rdispls = NULL
 */
  __pyx_v_rbuf = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":712
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 *     cdef int *rcounts = NULL             # <<<<<<<<<<<<<<
 *     cdef int *rdispls = NULL
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rcounts = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":713
 *     cdef void *rbuf = NULL
 *     cdef int *rcounts = NULL
 *     cdef int *rdispls = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rdispls = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":714
 *     cdef int *rcounts = NULL
 *     cdef int *rdispls = NULL
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef int inter=0, size=0
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":716
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 *     cdef int inter=0, size=0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:
 */
  __pyx_v_inter = 0;
  __pyx_v_size = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":717
 *     #
 *     cdef int inter=0, size=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":718
 *     cdef int inter=0, size=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *     else:
 */
  if (__pyx_v_inter) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":719
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )             # <<<<<<<<<<<<<<
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":721
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *     #
 *     cdef object stmp1 = allocate_int(size, &scounts)
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":723
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *     #
 *     cdef object stmp1 = allocate_int(size, &scounts)             # <<<<<<<<<<<<<<
 *     cdef object stmp2 = allocate_int(size, &sdispls)
 *     cdef object rtmp1 = allocate_int(size, &rcounts)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_allocate_int(__pyx_v_size, (&__pyx_v_scounts)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_stmp1 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":724
 *     #
 *     cdef object stmp1 = allocate_int(size, &scounts)
 *     cdef object stmp2 = allocate_int(size, &sdispls)             # <<<<<<<<<<<<<<
 *     cdef object rtmp1 = allocate_int(size, &rcounts)
 *     cdef object rtmp2 = allocate_int(size, &rdispls)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_allocate_int(__pyx_v_size, (&__pyx_v_sdispls)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_stmp2 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":725
 *     cdef object stmp1 = allocate_int(size, &scounts)
 *     cdef object stmp2 = allocate_int(size, &sdispls)
 *     cdef object rtmp1 = allocate_int(size, &rcounts)             # <<<<<<<<<<<<<<
 *     cdef object rtmp2 = allocate_int(size, &rdispls)
 *     #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_allocate_int(__pyx_v_size, (&__pyx_v_rcounts)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_rtmp1 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":726
 *     cdef object stmp2 = allocate_int(size, &sdispls)
 *     cdef object rtmp1 = allocate_int(size, &rcounts)
 *     cdef object rtmp2 = allocate_int(size, &rdispls)             # <<<<<<<<<<<<<<
 *     #
 *     cdef object smsg = pickle.dumpv(sendobj, &sbuf, size, scounts, sdispls)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_allocate_int(__pyx_v_size, (&__pyx_v_rdispls)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_rtmp2 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":728
 *     cdef object rtmp2 = allocate_int(size, &rdispls)
 *     #
 *     cdef object smsg = pickle.dumpv(sendobj, &sbuf, size, scounts, sdispls)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Alltoall(scounts, 1, MPI_INT,
 *                                      rcounts, 1, MPI_INT,
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->dumpv(__pyx_v_pickle, __pyx_v_sendobj, (&__pyx_v_sbuf), __pyx_v_size, __pyx_v_scounts, __pyx_v_sdispls); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":729
 *     #
 *     cdef object smsg = pickle.dumpv(sendobj, &sbuf, size, scounts, sdispls)
 *     with nogil: CHKERR( MPI_Alltoall(scounts, 1, MPI_INT,             # <<<<<<<<<<<<<<
 *                                      rcounts, 1, MPI_INT,
 *                                      comm) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":731
 *     with nogil: CHKERR( MPI_Alltoall(scounts, 1, MPI_INT,
 *                                      rcounts, 1, MPI_INT,
 *                                      comm) )             # <<<<<<<<<<<<<<
 *     cdef object rmsg = pickle.allocv(&rbuf, size, rcounts, rdispls)
 *     with nogil: CHKERR( MPI_Alltoallv(sbuf, scounts, sdispls, stype,
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Alltoall(__pyx_v_scounts, 1, MPI_INT, __pyx_v_rcounts, 1, MPI_INT, __pyx_v_comm)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L5;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":729
 *     #
 *     cdef object smsg = pickle.dumpv(sendobj, &sbuf, size, scounts, sdispls)
 *     with nogil: CHKERR( MPI_Alltoall(scounts, 1, MPI_INT,             # <<<<<<<<<<<<<<
 *                                      rcounts, 1, MPI_INT,
 *                                      comm) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L6;
        __pyx_L5: __pyx_why = 4; goto __pyx_L6;
        __pyx_L6:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":732
 *                                      rcounts, 1, MPI_INT,
 *                                      comm) )
 *     cdef object rmsg = pickle.allocv(&rbuf, size, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Alltoallv(sbuf, scounts, sdispls, stype,
 *                                       rbuf, rcounts, rdispls, rtype,
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->allocv(__pyx_v_pickle, (&__pyx_v_rbuf), __pyx_v_size, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_rmsg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":733
 *                                      comm) )
 *     cdef object rmsg = pickle.allocv(&rbuf, size, rcounts, rdispls)
 *     with nogil: CHKERR( MPI_Alltoallv(sbuf, scounts, sdispls, stype,             # <<<<<<<<<<<<<<
 *                                       rbuf, rcounts, rdispls, rtype,
 *                                       comm) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":735
 *     with nogil: CHKERR( MPI_Alltoallv(sbuf, scounts, sdispls, stype,
 *                                       rbuf, rcounts, rdispls, rtype,
 *                                       comm) )             # <<<<<<<<<<<<<<
 *     rmsg = pickle.loadv(rmsg, size, rcounts, rdispls)
 *     return rmsg
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Alltoallv(__pyx_v_sbuf, __pyx_v_scounts, __pyx_v_sdispls, __pyx_v_stype, __pyx_v_rbuf, __pyx_v_rcounts, __pyx_v_rdispls, __pyx_v_rtype, __pyx_v_comm)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L9;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":733
 *                                      comm) )
 *     cdef object rmsg = pickle.allocv(&rbuf, size, rcounts, rdispls)
 *     with nogil: CHKERR( MPI_Alltoallv(sbuf, scounts, sdispls, stype,             # <<<<<<<<<<<<<<
 *                                       rbuf, rcounts, rdispls, rtype,
 *                                       comm) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L10;
        __pyx_L9: __pyx_why = 4; goto __pyx_L10;
        __pyx_L10:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":736
 *                                       rbuf, rcounts, rdispls, rtype,
 *                                       comm) )
 *     rmsg = pickle.loadv(rmsg, size, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *     return rmsg
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle *)__pyx_v_pickle->__pyx_vtab)->loadv(__pyx_v_pickle, __pyx_v_rmsg, __pyx_v_size, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_rmsg);
  __pyx_v_rmsg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":737
 *                                       comm) )
 *     rmsg = pickle.loadv(rmsg, size, rcounts, rdispls)
 *     return rmsg             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rmsg);
  __pyx_r = __pyx_v_rmsg;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_stmp1);
  __Pyx_XDECREF(__pyx_v_stmp2);
  __Pyx_XDECREF(__pyx_v_rtmp1);
  __Pyx_XDECREF(__pyx_v_rtmp2);
  __Pyx_XDECREF(__pyx_v_smsg);
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":741
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline object _py_reduce(object seq, object op):             # <<<<<<<<<<<<<<
 *     if seq is None: return None
 *     cdef object res
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI__py_reduce(PyObject *__pyx_v_seq, PyObject *__pyx_v_op) {
  PyObject *__pyx_v_res = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_py_reduce");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":742
 * 
 * cdef inline object _py_reduce(object seq, object op):
 *     if seq is None: return None             # <<<<<<<<<<<<<<
 *     cdef object res
 *     cdef Py_ssize_t i=0, n=len(seq)
 */
  __pyx_t_1 = (__pyx_v_seq == Py_None);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":744
 *     if seq is None: return None
 *     cdef object res
 *     cdef Py_ssize_t i=0, n=len(seq)             # <<<<<<<<<<<<<<
 *     if op is __MAXLOC__ or op is __MINLOC__:
 *         res = (seq[0], 0)
 */
  __pyx_v_i = 0;
  __pyx_t_2 = PyObject_Length(__pyx_v_seq); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_2;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":745
 *     cdef object res
 *     cdef Py_ssize_t i=0, n=len(seq)
 *     if op is __MAXLOC__ or op is __MINLOC__:             # <<<<<<<<<<<<<<
 *         res = (seq[0], 0)
 *         for i from 1 <= i < n:
 */
  __pyx_t_1 = (__pyx_v_op == ((PyObject *)__pyx_v_6mpi4py_3MPI___MAXLOC__));
  if (!__pyx_t_1) {
    __pyx_t_3 = (__pyx_v_op == ((PyObject *)__pyx_v_6mpi4py_3MPI___MINLOC__));
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_1;
  }
  if (__pyx_t_4) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":746
 *     cdef Py_ssize_t i=0, n=len(seq)
 *     if op is __MAXLOC__ or op is __MINLOC__:
 *         res = (seq[0], 0)             # <<<<<<<<<<<<<<
 *         for i from 1 <= i < n:
 *             res = op(res, (seq[i], i))
 */
    __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_seq, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    __pyx_t_5 = 0;
    __pyx_v_res = ((PyObject *)__pyx_t_6);
    __pyx_t_6 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":747
 *     if op is __MAXLOC__ or op is __MINLOC__:
 *         res = (seq[0], 0)
 *         for i from 1 <= i < n:             # <<<<<<<<<<<<<<
 *             res = op(res, (seq[i], i))
 *     else:
 */
    __pyx_t_2 = __pyx_v_n;
    for (__pyx_v_i = 1; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":748
 *         res = (seq[0], 0)
 *         for i from 1 <= i < n:
 *             res = op(res, (seq[i], i))             # <<<<<<<<<<<<<<
 *     else:
 *         res = seq[0]
 */
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_seq, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_7));
      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_5);
      __pyx_t_6 = 0;
      __pyx_t_5 = 0;
      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_5));
      __Pyx_INCREF(__pyx_v_res);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_res);
      __Pyx_GIVEREF(__pyx_v_res);
      PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_t_7));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_7));
      __pyx_t_7 = 0;
      __pyx_t_7 = PyObject_Call(__pyx_v_op, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_res);
      __pyx_v_res = __pyx_t_7;
      __pyx_t_7 = 0;
    }
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":750
 *             res = op(res, (seq[i], i))
 *     else:
 *         res = seq[0]             # <<<<<<<<<<<<<<
 *         for i from 1 <= i < n:
 *             res = op(res, seq[i])
 */
    __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_seq, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 750; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_v_res = __pyx_t_7;
    __pyx_t_7 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":751
 *     else:
 *         res = seq[0]
 *         for i from 1 <= i < n:             # <<<<<<<<<<<<<<
 *             res = op(res, seq[i])
 *     return res
 */
    __pyx_t_2 = __pyx_v_n;
    for (__pyx_v_i = 1; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":752
 *         res = seq[0]
 *         for i from 1 <= i < n:
 *             res = op(res, seq[i])             # <<<<<<<<<<<<<<
 *     return res
 * 
 */
      __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_seq, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_5));
      __Pyx_INCREF(__pyx_v_res);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_res);
      __Pyx_GIVEREF(__pyx_v_res);
      PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_7 = PyObject_Call(__pyx_v_op, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_res);
      __pyx_v_res = __pyx_t_7;
      __pyx_t_7 = 0;
    }
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":753
 *         for i from 1 <= i < n:
 *             res = op(res, seq[i])
 *     return res             # <<<<<<<<<<<<<<
 * 
 * cdef inline object _py_scan(object seq, object op):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_res);
  __pyx_r = __pyx_v_res;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI._py_reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_res);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":755
 *     return res
 * 
 * cdef inline object _py_scan(object seq, object op):             # <<<<<<<<<<<<<<
 *     if seq is None: return None
 *     cdef Py_ssize_t i=0, n=len(seq)
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI__py_scan(PyObject *__pyx_v_seq, PyObject *__pyx_v_op) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_py_scan");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":756
 * 
 * cdef inline object _py_scan(object seq, object op):
 *     if seq is None: return None             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i=0, n=len(seq)
 *     if op is __MAXLOC__ or op is __MINLOC__:
 */
  __pyx_t_1 = (__pyx_v_seq == Py_None);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":757
 * cdef inline object _py_scan(object seq, object op):
 *     if seq is None: return None
 *     cdef Py_ssize_t i=0, n=len(seq)             # <<<<<<<<<<<<<<
 *     if op is __MAXLOC__ or op is __MINLOC__:
 *         seq[0] = (seq[0], 0)
 */
  __pyx_v_i = 0;
  __pyx_t_2 = PyObject_Length(__pyx_v_seq); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_2;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":758
 *     if seq is None: return None
 *     cdef Py_ssize_t i=0, n=len(seq)
 *     if op is __MAXLOC__ or op is __MINLOC__:             # <<<<<<<<<<<<<<
 *         seq[0] = (seq[0], 0)
 *         for i from 1 <= i < n:
 */
  __pyx_t_1 = (__pyx_v_op == ((PyObject *)__pyx_v_6mpi4py_3MPI___MAXLOC__));
  if (!__pyx_t_1) {
    __pyx_t_3 = (__pyx_v_op == ((PyObject *)__pyx_v_6mpi4py_3MPI___MINLOC__));
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_1;
  }
  if (__pyx_t_4) {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":759
 *     cdef Py_ssize_t i=0, n=len(seq)
 *     if op is __MAXLOC__ or op is __MINLOC__:
 *         seq[0] = (seq[0], 0)             # <<<<<<<<<<<<<<
 *         for i from 1 <= i < n:
 *             seq[i] = op(seq[i-1], (seq[i], i))
 */
    __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_seq, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    __pyx_t_5 = 0;
    if (__Pyx_SetItemInt(__pyx_v_seq, 0, ((PyObject *)__pyx_t_6), sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":760
 *     if op is __MAXLOC__ or op is __MINLOC__:
 *         seq[0] = (seq[0], 0)
 *         for i from 1 <= i < n:             # <<<<<<<<<<<<<<
 *             seq[i] = op(seq[i-1], (seq[i], i))
 *     else:
 */
    __pyx_t_2 = __pyx_v_n;
    for (__pyx_v_i = 1; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":761
 *         seq[0] = (seq[0], 0)
 *         for i from 1 <= i < n:
 *             seq[i] = op(seq[i-1], (seq[i], i))             # <<<<<<<<<<<<<<
 *     else:
 *         for i from 1 <= i < n:
 */
      __pyx_t_7 = (__pyx_v_i - 1);
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_seq, __pyx_t_7, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_seq, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_9));
      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_8);
      __pyx_t_5 = 0;
      __pyx_t_8 = 0;
      __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_8));
      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_8, 1, ((PyObject *)__pyx_t_9));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_9));
      __pyx_t_6 = 0;
      __pyx_t_9 = 0;
      __pyx_t_9 = PyObject_Call(__pyx_v_op, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
      if (__Pyx_SetItemInt(__pyx_v_seq, __pyx_v_i, __pyx_t_9, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    }
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":763
 *             seq[i] = op(seq[i-1], (seq[i], i))
 *     else:
 *         for i from 1 <= i < n:             # <<<<<<<<<<<<<<
 *             seq[i] = op(seq[i-1], seq[i])
 *     return seq
 */
    __pyx_t_2 = __pyx_v_n;
    for (__pyx_v_i = 1; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":764
 *     else:
 *         for i from 1 <= i < n:
 *             seq[i] = op(seq[i-1], seq[i])             # <<<<<<<<<<<<<<
 *     return seq
 * 
 */
      __pyx_t_7 = (__pyx_v_i - 1);
      __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_seq, __pyx_t_7, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_9) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_seq, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_6));
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_8);
      __pyx_t_9 = 0;
      __pyx_t_8 = 0;
      __pyx_t_8 = PyObject_Call(__pyx_v_op, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
      if (__Pyx_SetItemInt(__pyx_v_seq, __pyx_v_i, __pyx_t_8, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
  }
  __pyx_L4:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":765
 *         for i from 1 <= i < n:
 *             seq[i] = op(seq[i-1], seq[i])
 *     return seq             # <<<<<<<<<<<<<<
 * 
 * cdef inline object _py_exscan(object seq, object op):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_seq);
  __pyx_r = __pyx_v_seq;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI._py_scan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":767
 *     return seq
 * 
 * cdef inline object _py_exscan(object seq, object op):             # <<<<<<<<<<<<<<
 *     if seq is None: return None
 *     seq = _py_scan(seq, op)
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI__py_exscan(PyObject *__pyx_v_seq, PyObject *__pyx_v_op) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_py_exscan");
  __Pyx_INCREF(__pyx_v_seq);

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":768
 * 
 * cdef inline object _py_exscan(object seq, object op):
 *     if seq is None: return None             # <<<<<<<<<<<<<<
 *     seq = _py_scan(seq, op)
 *     seq.pop(-1)
 */
  __pyx_t_1 = (__pyx_v_seq == Py_None);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":769
 * cdef inline object _py_exscan(object seq, object op):
 *     if seq is None: return None
 *     seq = _py_scan(seq, op)             # <<<<<<<<<<<<<<
 *     seq.pop(-1)
 *     seq.insert(0, None)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI__py_scan(__pyx_v_seq, __pyx_v_op); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_seq);
  __pyx_v_seq = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":770
 *     if seq is None: return None
 *     seq = _py_scan(seq, op)
 *     seq.pop(-1)             # <<<<<<<<<<<<<<
 *     seq.insert(0, None)
 *     return seq
 */
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_seq, __pyx_n_s__pop); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_51), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":771
 *     seq = _py_scan(seq, op)
 *     seq.pop(-1)
 *     seq.insert(0, None)             # <<<<<<<<<<<<<<
 *     return seq
 * 
 */
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_seq, __pyx_n_s__insert); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_52), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":772
 *     seq.pop(-1)
 *     seq.insert(0, None)
 *     return seq             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_seq);
  __pyx_r = __pyx_v_seq;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._py_exscan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_seq);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":775
 * 
 * 
 * cdef object PyMPI_reduce(object sendobj, object recvobj,             # <<<<<<<<<<<<<<
 *                          object op, int root, MPI_Comm comm):
 *     cdef object items = PyMPI_gather(sendobj, recvobj, root, comm)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_reduce(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_recvobj, PyObject *__pyx_v_op, int __pyx_v_root, MPI_Comm __pyx_v_comm) {
  PyObject *__pyx_v_items = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_reduce");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":777
 * cdef object PyMPI_reduce(object sendobj, object recvobj,
 *                          object op, int root, MPI_Comm comm):
 *     cdef object items = PyMPI_gather(sendobj, recvobj, root, comm)             # <<<<<<<<<<<<<<
 *     return _py_reduce(items, op)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_gather(__pyx_v_sendobj, __pyx_v_recvobj, __pyx_v_root, __pyx_v_comm); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_items = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":778
 *                          object op, int root, MPI_Comm comm):
 *     cdef object items = PyMPI_gather(sendobj, recvobj, root, comm)
 *     return _py_reduce(items, op)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__py_reduce(__pyx_v_items, __pyx_v_op); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_items);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":781
 * 
 * 
 * cdef object PyMPI_allreduce(object sendobj, object recvobj,             # <<<<<<<<<<<<<<
 *                             object op, MPI_Comm comm):
 *     cdef object items = PyMPI_allgather(sendobj, recvobj, comm)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_allreduce(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_recvobj, PyObject *__pyx_v_op, MPI_Comm __pyx_v_comm) {
  PyObject *__pyx_v_items = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_allreduce");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":783
 * cdef object PyMPI_allreduce(object sendobj, object recvobj,
 *                             object op, MPI_Comm comm):
 *     cdef object items = PyMPI_allgather(sendobj, recvobj, comm)             # <<<<<<<<<<<<<<
 *     return _py_reduce(items, op)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_allgather(__pyx_v_sendobj, __pyx_v_recvobj, __pyx_v_comm); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_items = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":784
 *                             object op, MPI_Comm comm):
 *     cdef object items = PyMPI_allgather(sendobj, recvobj, comm)
 *     return _py_reduce(items, op)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__py_reduce(__pyx_v_items, __pyx_v_op); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_allreduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_items);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":787
 * 
 * 
 * cdef object PyMPI_scan(object sendobj, object recvobj,             # <<<<<<<<<<<<<<
 *                        object op, MPI_Comm comm):
 *     cdef object items = PyMPI_gather(sendobj, None, 0, comm)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_scan(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_recvobj, PyObject *__pyx_v_op, MPI_Comm __pyx_v_comm) {
  PyObject *__pyx_v_items = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_scan");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":789
 * cdef object PyMPI_scan(object sendobj, object recvobj,
 *                        object op, MPI_Comm comm):
 *     cdef object items = PyMPI_gather(sendobj, None, 0, comm)             # <<<<<<<<<<<<<<
 *     items = _py_scan(items, op)
 *     return PyMPI_scatter(items, None, 0, comm)
 */
  __pyx_t_1 = Py_None;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_gather(__pyx_v_sendobj, __pyx_t_1, 0, __pyx_v_comm); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_items = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":790
 *                        object op, MPI_Comm comm):
 *     cdef object items = PyMPI_gather(sendobj, None, 0, comm)
 *     items = _py_scan(items, op)             # <<<<<<<<<<<<<<
 *     return PyMPI_scatter(items, None, 0, comm)
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI__py_scan(__pyx_v_items, __pyx_v_op); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_items);
  __pyx_v_items = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":791
 *     cdef object items = PyMPI_gather(sendobj, None, 0, comm)
 *     items = _py_scan(items, op)
 *     return PyMPI_scatter(items, None, 0, comm)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = Py_None;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_scatter(__pyx_v_items, __pyx_t_2, 0, __pyx_v_comm); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_scan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_items);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":794
 * 
 * 
 * cdef object PyMPI_exscan(object sendobj, object recvobj,             # <<<<<<<<<<<<<<
 *                          object op, MPI_Comm comm):
 *     cdef object items = PyMPI_gather(sendobj, None, 0, comm)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_exscan(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_recvobj, PyObject *__pyx_v_op, MPI_Comm __pyx_v_comm) {
  PyObject *__pyx_v_items = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_exscan");

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":796
 * cdef object PyMPI_exscan(object sendobj, object recvobj,
 *                          object op, MPI_Comm comm):
 *     cdef object items = PyMPI_gather(sendobj, None, 0, comm)             # <<<<<<<<<<<<<<
 *     items = _py_exscan(items, op)
 *     return PyMPI_scatter(items, None, 0, comm)
 */
  __pyx_t_1 = Py_None;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_gather(__pyx_v_sendobj, __pyx_t_1, 0, __pyx_v_comm); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_items = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":797
 *                          object op, MPI_Comm comm):
 *     cdef object items = PyMPI_gather(sendobj, None, 0, comm)
 *     items = _py_exscan(items, op)             # <<<<<<<<<<<<<<
 *     return PyMPI_scatter(items, None, 0, comm)
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI__py_exscan(__pyx_v_items, __pyx_v_op); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_items);
  __pyx_v_items = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":798
 *     cdef object items = PyMPI_gather(sendobj, None, 0, comm)
 *     items = _py_exscan(items, op)
 *     return PyMPI_scatter(items, None, 0, comm)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = Py_None;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_scatter(__pyx_v_items, __pyx_t_2, 0, __pyx_v_comm); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_exscan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_items);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":5
 * #  Datatype
 * 
 * cdef api object PyMPIDatatype_New(MPI_Datatype arg):             # <<<<<<<<<<<<<<
 *     cdef Datatype obj = <Datatype>Datatype.__new__(Datatype)
 *     obj.ob_mpi = arg
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIDatatype_New(MPI_Datatype __pyx_v_arg) {
  struct PyMPIDatatypeObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIDatatype_New");

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":6
 * 
 * cdef api object PyMPIDatatype_New(MPI_Datatype arg):
 *     cdef Datatype obj = <Datatype>Datatype.__new__(Datatype)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     return obj
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_1)));
  __pyx_v_obj = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":7
 * cdef api object PyMPIDatatype_New(MPI_Datatype arg):
 *     cdef Datatype obj = <Datatype>Datatype.__new__(Datatype)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":8
 *     cdef Datatype obj = <Datatype>Datatype.__new__(Datatype)
 *     obj.ob_mpi = arg
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_Datatype* PyMPIDatatype_Get(object arg) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_obj));
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIDatatype_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":10
 *     return obj
 * 
 * cdef api MPI_Datatype* PyMPIDatatype_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Datatype?>arg).ob_mpi
 * 
 */

static MPI_Datatype *__pyx_f_6mpi4py_3MPI_PyMPIDatatype_Get(PyObject *__pyx_v_arg) {
  MPI_Datatype *__pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIDatatype_Get");

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":11
 * 
 * cdef api MPI_Datatype* PyMPIDatatype_Get(object arg) except NULL:
 *     return &(<Datatype?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Datatype)))) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = (&((struct PyMPIDatatypeObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIDatatype_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":17
 * #  Status
 * 
 * cdef api object PyMPIStatus_New(MPI_Status *arg):             # <<<<<<<<<<<<<<
 *     cdef Status obj = <Status>Status.__new__(Status)
 *     if (arg != NULL and
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIStatus_New(MPI_Status *__pyx_v_arg) {
  struct PyMPIStatusObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIStatus_New");

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":18
 * 
 * cdef api object PyMPIStatus_New(MPI_Status *arg):
 *     cdef Status obj = <Status>Status.__new__(Status)             # <<<<<<<<<<<<<<
 *     if (arg != NULL and
 *         arg != MPI_STATUS_IGNORE and
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Status)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIStatusObject *)__pyx_t_1)));
  __pyx_v_obj = ((struct PyMPIStatusObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":19
 * cdef api object PyMPIStatus_New(MPI_Status *arg):
 *     cdef Status obj = <Status>Status.__new__(Status)
 *     if (arg != NULL and             # <<<<<<<<<<<<<<
 *         arg != MPI_STATUS_IGNORE and
 *         arg != MPI_STATUSES_IGNORE):
 */
  __pyx_t_2 = (__pyx_v_arg != NULL);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":20
 *     cdef Status obj = <Status>Status.__new__(Status)
 *     if (arg != NULL and
 *         arg != MPI_STATUS_IGNORE and             # <<<<<<<<<<<<<<
 *         arg != MPI_STATUSES_IGNORE):
 *         obj.ob_mpi = arg[0]
 */
    __pyx_t_3 = (__pyx_v_arg != MPI_STATUS_IGNORE);
    if (__pyx_t_3) {

      /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":21
 *     if (arg != NULL and
 *         arg != MPI_STATUS_IGNORE and
 *         arg != MPI_STATUSES_IGNORE):             # <<<<<<<<<<<<<<
 *         obj.ob_mpi = arg[0]
 *     else: pass  # XXX should fail ?
 */
      __pyx_t_4 = (__pyx_v_arg != MPI_STATUSES_IGNORE);
      __pyx_t_5 = __pyx_t_4;
    } else {
      __pyx_t_5 = __pyx_t_3;
    }
    __pyx_t_3 = __pyx_t_5;
  } else {
    __pyx_t_3 = __pyx_t_2;
  }
  if (__pyx_t_3) {

    /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":22
 *         arg != MPI_STATUS_IGNORE and
 *         arg != MPI_STATUSES_IGNORE):
 *         obj.ob_mpi = arg[0]             # <<<<<<<<<<<<<<
 *     else: pass  # XXX should fail ?
 *     return obj
 */
    __pyx_v_obj->ob_mpi = (__pyx_v_arg[0]);
    goto __pyx_L3;
  }
  /*else*/ {
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":24
 *         obj.ob_mpi = arg[0]
 *     else: pass  # XXX should fail ?
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_Status* PyMPIStatus_Get(object arg) except? NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_obj));
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIStatus_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":26
 *     return obj
 * 
 * cdef api MPI_Status* PyMPIStatus_Get(object arg) except? NULL:             # <<<<<<<<<<<<<<
 *     if arg is None: return MPI_STATUS_IGNORE
 *     return &(<Status?>arg).ob_mpi
 */

static MPI_Status *__pyx_f_6mpi4py_3MPI_PyMPIStatus_Get(PyObject *__pyx_v_arg) {
  MPI_Status *__pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIStatus_Get");

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":27
 * 
 * cdef api MPI_Status* PyMPIStatus_Get(object arg) except? NULL:
 *     if arg is None: return MPI_STATUS_IGNORE             # <<<<<<<<<<<<<<
 *     return &(<Status?>arg).ob_mpi
 * 
 */
  __pyx_t_1 = (__pyx_v_arg == Py_None);
  if (__pyx_t_1) {
    __pyx_r = MPI_STATUS_IGNORE;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":28
 * cdef api MPI_Status* PyMPIStatus_Get(object arg) except? NULL:
 *     if arg is None: return MPI_STATUS_IGNORE
 *     return &(<Status?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Status)))) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = (&((struct PyMPIStatusObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIStatus_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":34
 * #  Request
 * 
 * cdef api object PyMPIRequest_New(MPI_Request arg):             # <<<<<<<<<<<<<<
 *     cdef Request obj = <Request>Request.__new__(Request)
 *     obj.ob_mpi = arg
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIRequest_New(MPI_Request __pyx_v_arg) {
  struct PyMPIRequestObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIRequest_New");

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":35
 * 
 * cdef api object PyMPIRequest_New(MPI_Request arg):
 *     cdef Request obj = <Request>Request.__new__(Request)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     return obj
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIRequestObject *)__pyx_t_1)));
  __pyx_v_obj = ((struct PyMPIRequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":36
 * cdef api object PyMPIRequest_New(MPI_Request arg):
 *     cdef Request obj = <Request>Request.__new__(Request)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":37
 *     cdef Request obj = <Request>Request.__new__(Request)
 *     obj.ob_mpi = arg
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_Request* PyMPIRequest_Get(object arg) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_obj));
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIRequest_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":39
 *     return obj
 * 
 * cdef api MPI_Request* PyMPIRequest_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Request?>arg).ob_mpi
 * 
 */

static MPI_Request *__pyx_f_6mpi4py_3MPI_PyMPIRequest_Get(PyObject *__pyx_v_arg) {
  MPI_Request *__pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIRequest_Get");

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":40
 * 
 * cdef api MPI_Request* PyMPIRequest_Get(object arg) except NULL:
 *     return &(<Request?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Request)))) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = (&((struct PyMPIRequestObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIRequest_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":46
 * #  Op
 * 
 * cdef api object PyMPIOp_New(MPI_Op arg):             # <<<<<<<<<<<<<<
 *     cdef Op obj = <Op>Op.__new__(Op)
 *     obj.ob_mpi = arg
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIOp_New(MPI_Op __pyx_v_arg) {
  struct PyMPIOpObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIOp_New");

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":47
 * 
 * cdef api object PyMPIOp_New(MPI_Op arg):
 *     cdef Op obj = <Op>Op.__new__(Op)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     return obj
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Op)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIOpObject *)__pyx_t_1)));
  __pyx_v_obj = ((struct PyMPIOpObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":48
 * cdef api object PyMPIOp_New(MPI_Op arg):
 *     cdef Op obj = <Op>Op.__new__(Op)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":49
 *     cdef Op obj = <Op>Op.__new__(Op)
 *     obj.ob_mpi = arg
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_Op* PyMPIOp_Get(object arg) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_obj));
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIOp_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":51
 *     return obj
 * 
 * cdef api MPI_Op* PyMPIOp_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Op?>arg).ob_mpi
 * 
 */

static MPI_Op *__pyx_f_6mpi4py_3MPI_PyMPIOp_Get(PyObject *__pyx_v_arg) {
  MPI_Op *__pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIOp_Get");

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":52
 * 
 * cdef api MPI_Op* PyMPIOp_Get(object arg) except NULL:
 *     return &(<Op?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Op)))) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = (&((struct PyMPIOpObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIOp_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":58
 * #  Info
 * 
 * cdef api object PyMPIInfo_New(MPI_Info arg):             # <<<<<<<<<<<<<<
 *     cdef Info obj = <Info>Info.__new__(Info)
 *     obj.ob_mpi = arg
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIInfo_New(MPI_Info __pyx_v_arg) {
  struct PyMPIInfoObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIInfo_New");

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":59
 * 
 * cdef api object PyMPIInfo_New(MPI_Info arg):
 *     cdef Info obj = <Info>Info.__new__(Info)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     return obj
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Info)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIInfoObject *)__pyx_t_1)));
  __pyx_v_obj = ((struct PyMPIInfoObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":60
 * cdef api object PyMPIInfo_New(MPI_Info arg):
 *     cdef Info obj = <Info>Info.__new__(Info)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":61
 *     cdef Info obj = <Info>Info.__new__(Info)
 *     obj.ob_mpi = arg
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_Info* PyMPIInfo_Get(object arg) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_obj));
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIInfo_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":63
 *     return obj
 * 
 * cdef api MPI_Info* PyMPIInfo_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Info?>arg).ob_mpi
 * 
 */

static MPI_Info *__pyx_f_6mpi4py_3MPI_PyMPIInfo_Get(PyObject *__pyx_v_arg) {
  MPI_Info *__pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIInfo_Get");

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":64
 * 
 * cdef api MPI_Info* PyMPIInfo_Get(object arg) except NULL:
 *     return &(<Info?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Info)))) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = (&((struct PyMPIInfoObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIInfo_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":70
 * #  Group
 * 
 * cdef api object PyMPIGroup_New(MPI_Group arg):             # <<<<<<<<<<<<<<
 *     cdef Group obj = <Group>Group.__new__(Group)
 *     obj.ob_mpi = arg
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIGroup_New(MPI_Group __pyx_v_arg) {
  struct PyMPIGroupObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIGroup_New");

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":71
 * 
 * cdef api object PyMPIGroup_New(MPI_Group arg):
 *     cdef Group obj = <Group>Group.__new__(Group)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     return obj
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Group)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIGroupObject *)__pyx_t_1)));
  __pyx_v_obj = ((struct PyMPIGroupObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":72
 * cdef api object PyMPIGroup_New(MPI_Group arg):
 *     cdef Group obj = <Group>Group.__new__(Group)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":73
 *     cdef Group obj = <Group>Group.__new__(Group)
 *     obj.ob_mpi = arg
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_Group* PyMPIGroup_Get(object arg) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_obj));
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIGroup_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":75
 *     return obj
 * 
 * cdef api MPI_Group* PyMPIGroup_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Group?>arg).ob_mpi
 * 
 */

static MPI_Group *__pyx_f_6mpi4py_3MPI_PyMPIGroup_Get(PyObject *__pyx_v_arg) {
  MPI_Group *__pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIGroup_Get");

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":76
 * 
 * cdef api MPI_Group* PyMPIGroup_Get(object arg) except NULL:
 *     return &(<Group?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Group)))) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = (&((struct PyMPIGroupObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIGroup_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":82
 * # Comm
 * 
 * cdef api object PyMPIComm_New(MPI_Comm arg):             # <<<<<<<<<<<<<<
 *     cdef type cls   = Comm
 *     cdef int  inter = 0
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIComm_New(MPI_Comm __pyx_v_arg) {
  PyObject *__pyx_v_cls = 0;
  int __pyx_v_inter;
  int __pyx_v_topo;
  struct PyMPICommObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIComm_New");

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":83
 * 
 * cdef api object PyMPIComm_New(MPI_Comm arg):
 *     cdef type cls   = Comm             # <<<<<<<<<<<<<<
 *     cdef int  inter = 0
 *     cdef int  topo  = MPI_UNDEFINED
 */
  __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Comm)));
  __pyx_v_cls = ((PyObject*)__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":84
 * cdef api object PyMPIComm_New(MPI_Comm arg):
 *     cdef type cls   = Comm
 *     cdef int  inter = 0             # <<<<<<<<<<<<<<
 *     cdef int  topo  = MPI_UNDEFINED
 *     if arg != MPI_COMM_NULL:
 */
  __pyx_v_inter = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":85
 *     cdef type cls   = Comm
 *     cdef int  inter = 0
 *     cdef int  topo  = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *     if arg != MPI_COMM_NULL:
 *         CHKERR( MPI_Comm_test_inter(arg, &inter) )
 */
  __pyx_v_topo = MPI_UNDEFINED;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":86
 *     cdef int  inter = 0
 *     cdef int  topo  = MPI_UNDEFINED
 *     if arg != MPI_COMM_NULL:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(arg, &inter) )
 *         if inter:
 */
  __pyx_t_1 = (__pyx_v_arg != MPI_COMM_NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":87
 *     cdef int  topo  = MPI_UNDEFINED
 *     if arg != MPI_COMM_NULL:
 *         CHKERR( MPI_Comm_test_inter(arg, &inter) )             # <<<<<<<<<<<<<<
 *         if inter:
 *             cls = Intercomm
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_arg, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":88
 *     if arg != MPI_COMM_NULL:
 *         CHKERR( MPI_Comm_test_inter(arg, &inter) )
 *         if inter:             # <<<<<<<<<<<<<<
 *             cls = Intercomm
 *         else:
 */
    if (__pyx_v_inter) {

      /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":89
 *         CHKERR( MPI_Comm_test_inter(arg, &inter) )
 *         if inter:
 *             cls = Intercomm             # <<<<<<<<<<<<<<
 *         else:
 *             CHKERR( MPI_Topo_test(arg, &topo) )
 */
      __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intercomm)));
      __Pyx_DECREF(((PyObject *)__pyx_v_cls));
      __pyx_v_cls = ((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intercomm);
      goto __pyx_L4;
    }
    /*else*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":91
 *             cls = Intercomm
 *         else:
 *             CHKERR( MPI_Topo_test(arg, &topo) )             # <<<<<<<<<<<<<<
 *             if topo == <int>MPI_UNDEFINED:
 *                 cls = Intracomm
 */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Topo_test(__pyx_v_arg, (&__pyx_v_topo))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":92
 *         else:
 *             CHKERR( MPI_Topo_test(arg, &topo) )
 *             if topo == <int>MPI_UNDEFINED:             # <<<<<<<<<<<<<<
 *                 cls = Intracomm
 *             elif topo == <int>MPI_CART:
 */
      __pyx_t_1 = (__pyx_v_topo == ((int)MPI_UNDEFINED));
      if (__pyx_t_1) {

        /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":93
 *             CHKERR( MPI_Topo_test(arg, &topo) )
 *             if topo == <int>MPI_UNDEFINED:
 *                 cls = Intracomm             # <<<<<<<<<<<<<<
 *             elif topo == <int>MPI_CART:
 *                 cls = Cartcomm
 */
        __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intracomm)));
        __Pyx_DECREF(((PyObject *)__pyx_v_cls));
        __pyx_v_cls = ((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intracomm);
        goto __pyx_L5;
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":94
 *             if topo == <int>MPI_UNDEFINED:
 *                 cls = Intracomm
 *             elif topo == <int>MPI_CART:             # <<<<<<<<<<<<<<
 *                 cls = Cartcomm
 *             elif topo == <int>MPI_GRAPH:
 */
      __pyx_t_1 = (__pyx_v_topo == ((int)MPI_CART));
      if (__pyx_t_1) {

        /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":95
 *                 cls = Intracomm
 *             elif topo == <int>MPI_CART:
 *                 cls = Cartcomm             # <<<<<<<<<<<<<<
 *             elif topo == <int>MPI_GRAPH:
 *                 cls = Graphcomm
 */
        __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Cartcomm)));
        __Pyx_DECREF(((PyObject *)__pyx_v_cls));
        __pyx_v_cls = ((PyObject*)__pyx_ptype_6mpi4py_3MPI_Cartcomm);
        goto __pyx_L5;
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":96
 *             elif topo == <int>MPI_CART:
 *                 cls = Cartcomm
 *             elif topo == <int>MPI_GRAPH:             # <<<<<<<<<<<<<<
 *                 cls = Graphcomm
 *             elif topo == <int>MPI_DIST_GRAPH:
 */
      __pyx_t_1 = (__pyx_v_topo == ((int)MPI_GRAPH));
      if (__pyx_t_1) {

        /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":97
 *                 cls = Cartcomm
 *             elif topo == <int>MPI_GRAPH:
 *                 cls = Graphcomm             # <<<<<<<<<<<<<<
 *             elif topo == <int>MPI_DIST_GRAPH:
 *                 cls = Distgraphcomm
 */
        __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Graphcomm)));
        __Pyx_DECREF(((PyObject *)__pyx_v_cls));
        __pyx_v_cls = ((PyObject*)__pyx_ptype_6mpi4py_3MPI_Graphcomm);
        goto __pyx_L5;
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":98
 *             elif topo == <int>MPI_GRAPH:
 *                 cls = Graphcomm
 *             elif topo == <int>MPI_DIST_GRAPH:             # <<<<<<<<<<<<<<
 *                 cls = Distgraphcomm
 *             else:
 */
      __pyx_t_1 = (__pyx_v_topo == ((int)MPI_DIST_GRAPH));
      if (__pyx_t_1) {

        /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":99
 *                 cls = Graphcomm
 *             elif topo == <int>MPI_DIST_GRAPH:
 *                 cls = Distgraphcomm             # <<<<<<<<<<<<<<
 *             else:
 *                 cls = Intracomm
 */
        __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Distgraphcomm)));
        __Pyx_DECREF(((PyObject *)__pyx_v_cls));
        __pyx_v_cls = ((PyObject*)__pyx_ptype_6mpi4py_3MPI_Distgraphcomm);
        goto __pyx_L5;
      }
      /*else*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":101
 *                 cls = Distgraphcomm
 *             else:
 *                 cls = Intracomm             # <<<<<<<<<<<<<<
 *     cdef Comm obj = <Comm>cls()
 *     obj.ob_mpi = arg
 */
        __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intracomm)));
        __Pyx_DECREF(((PyObject *)__pyx_v_cls));
        __pyx_v_cls = ((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intracomm);
      }
      __pyx_L5:;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":102
 *             else:
 *                 cls = Intracomm
 *     cdef Comm obj = <Comm>cls()             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     return obj
 */
  __pyx_t_3 = PyObject_Call(((PyObject *)__pyx_v_cls), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(((PyObject *)((struct PyMPICommObject *)__pyx_t_3)));
  __pyx_v_obj = ((struct PyMPICommObject *)__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":103
 *                 cls = Intracomm
 *     cdef Comm obj = <Comm>cls()
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":104
 *     cdef Comm obj = <Comm>cls()
 *     obj.ob_mpi = arg
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_Comm* PyMPIComm_Get(object arg) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_obj));
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIComm_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":106
 *     return obj
 * 
 * cdef api MPI_Comm* PyMPIComm_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Comm?>arg).ob_mpi
 * 
 */

static MPI_Comm *__pyx_f_6mpi4py_3MPI_PyMPIComm_Get(PyObject *__pyx_v_arg) {
  MPI_Comm *__pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIComm_Get");

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":107
 * 
 * cdef api MPI_Comm* PyMPIComm_Get(object arg) except NULL:
 *     return &(<Comm?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Comm)))) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = (&((struct PyMPICommObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIComm_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":113
 * # Win
 * 
 * cdef api object PyMPIWin_New(MPI_Win arg):             # <<<<<<<<<<<<<<
 *     cdef Win obj = <Win>Win.__new__(Win)
 *     obj.ob_mpi = arg
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIWin_New(MPI_Win __pyx_v_arg) {
  struct PyMPIWinObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIWin_New");

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":114
 * 
 * cdef api object PyMPIWin_New(MPI_Win arg):
 *     cdef Win obj = <Win>Win.__new__(Win)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     return obj
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Win)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIWinObject *)__pyx_t_1)));
  __pyx_v_obj = ((struct PyMPIWinObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":115
 * cdef api object PyMPIWin_New(MPI_Win arg):
 *     cdef Win obj = <Win>Win.__new__(Win)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":116
 *     cdef Win obj = <Win>Win.__new__(Win)
 *     obj.ob_mpi = arg
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_Win* PyMPIWin_Get(object arg) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_obj));
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIWin_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":118
 *     return obj
 * 
 * cdef api MPI_Win* PyMPIWin_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Win?>arg).ob_mpi
 * 
 */

static MPI_Win *__pyx_f_6mpi4py_3MPI_PyMPIWin_Get(PyObject *__pyx_v_arg) {
  MPI_Win *__pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIWin_Get");

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":119
 * 
 * cdef api MPI_Win* PyMPIWin_Get(object arg) except NULL:
 *     return &(<Win?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Win)))) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = (&((struct PyMPIWinObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIWin_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":125
 * # File
 * 
 * cdef api object PyMPIFile_New(MPI_File arg):             # <<<<<<<<<<<<<<
 *     cdef File obj = <File>File.__new__(File)
 *     obj.ob_mpi = arg
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIFile_New(MPI_File __pyx_v_arg) {
  struct PyMPIFileObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIFile_New");

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":126
 * 
 * cdef api object PyMPIFile_New(MPI_File arg):
 *     cdef File obj = <File>File.__new__(File)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     return obj
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_File)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIFileObject *)__pyx_t_1)));
  __pyx_v_obj = ((struct PyMPIFileObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":127
 * cdef api object PyMPIFile_New(MPI_File arg):
 *     cdef File obj = <File>File.__new__(File)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":128
 *     cdef File obj = <File>File.__new__(File)
 *     obj.ob_mpi = arg
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_File* PyMPIFile_Get(object arg) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_obj));
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIFile_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":130
 *     return obj
 * 
 * cdef api MPI_File* PyMPIFile_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<File?>arg).ob_mpi
 * 
 */

static MPI_File *__pyx_f_6mpi4py_3MPI_PyMPIFile_Get(PyObject *__pyx_v_arg) {
  MPI_File *__pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIFile_Get");

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":131
 * 
 * cdef api MPI_File* PyMPIFile_Get(object arg) except NULL:
 *     return &(<File?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_File)))) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = (&((struct PyMPIFileObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIFile_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":137
 * # Errhandler
 * 
 * cdef api object PyMPIErrhandler_New(MPI_Errhandler arg):             # <<<<<<<<<<<<<<
 *     cdef Errhandler obj = <Errhandler>Errhandler.__new__(Errhandler)
 *     obj.ob_mpi = arg
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIErrhandler_New(MPI_Errhandler __pyx_v_arg) {
  struct PyMPIErrhandlerObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIErrhandler_New");

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":138
 * 
 * cdef api object PyMPIErrhandler_New(MPI_Errhandler arg):
 *     cdef Errhandler obj = <Errhandler>Errhandler.__new__(Errhandler)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     return obj
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Errhandler)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIErrhandlerObject *)__pyx_t_1)));
  __pyx_v_obj = ((struct PyMPIErrhandlerObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":139
 * cdef api object PyMPIErrhandler_New(MPI_Errhandler arg):
 *     cdef Errhandler obj = <Errhandler>Errhandler.__new__(Errhandler)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":140
 *     cdef Errhandler obj = <Errhandler>Errhandler.__new__(Errhandler)
 *     obj.ob_mpi = arg
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_Errhandler* PyMPIErrhandler_Get(object arg) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_obj));
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIErrhandler_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":142
 *     return obj
 * 
 * cdef api MPI_Errhandler* PyMPIErrhandler_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Errhandler?>arg).ob_mpi
 * 
 */

static MPI_Errhandler *__pyx_f_6mpi4py_3MPI_PyMPIErrhandler_Get(PyObject *__pyx_v_arg) {
  MPI_Errhandler *__pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIErrhandler_Get");

  /* "/home/devel/mpi4py-1.3/src/MPI/CAPI.pxi":143
 * 
 * cdef api MPI_Errhandler* PyMPIErrhandler_Get(object arg) except NULL:
 *     return &(<Errhandler?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Errhandler)))) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = (&((struct PyMPIErrhandlerObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIErrhandler_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":7
 *     """
 * 
 *     def __init__(self, int ierr=0):             # <<<<<<<<<<<<<<
 *         if ierr < MPI_SUCCESS:      ierr = MPI_ERR_UNKNOWN
 *         if ierr > MPI_ERR_LASTCODE: ierr = MPI_ERR_UNKNOWN
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception___init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception___init__[] = "Exception.__init__(self, int ierr=0)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception___init__ = {__Pyx_NAMESTR("__init__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception___init__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception___init__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception___init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  int __pyx_v_ierr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,&__pyx_n_s__ierr,0};
  __Pyx_RefNannySetupContext("__init__");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__self);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ierr);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_self = values[0];
    if (values[1]) {
      __pyx_v_ierr = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_ierr == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_ierr = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":8
 * 
 *     def __init__(self, int ierr=0):
 *         if ierr < MPI_SUCCESS:      ierr = MPI_ERR_UNKNOWN             # <<<<<<<<<<<<<<
 *         if ierr > MPI_ERR_LASTCODE: ierr = MPI_ERR_UNKNOWN
 *         self.ob_mpi = ierr
 */
  __pyx_t_1 = (__pyx_v_ierr < MPI_SUCCESS);
  if (__pyx_t_1) {
    __pyx_v_ierr = MPI_ERR_UNKNOWN;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":9
 *     def __init__(self, int ierr=0):
 *         if ierr < MPI_SUCCESS:      ierr = MPI_ERR_UNKNOWN
 *         if ierr > MPI_ERR_LASTCODE: ierr = MPI_ERR_UNKNOWN             # <<<<<<<<<<<<<<
 *         self.ob_mpi = ierr
 *         RuntimeError.__init__(self, self.ob_mpi)
 */
  __pyx_t_1 = (__pyx_v_ierr > MPI_ERR_LASTCODE);
  if (__pyx_t_1) {
    __pyx_v_ierr = MPI_ERR_UNKNOWN;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":10
 *         if ierr < MPI_SUCCESS:      ierr = MPI_ERR_UNKNOWN
 *         if ierr > MPI_ERR_LASTCODE: ierr = MPI_ERR_UNKNOWN
 *         self.ob_mpi = ierr             # <<<<<<<<<<<<<<
 *         RuntimeError.__init__(self, self.ob_mpi)
 * 
 */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_ierr); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__ob_mpi, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":11
 *         if ierr > MPI_ERR_LASTCODE: ierr = MPI_ERR_UNKNOWN
 *         self.ob_mpi = ierr
 *         RuntimeError.__init__(self, self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     def __eq__(self, int error):
 */
  __pyx_t_2 = PyObject_GetAttr(__pyx_builtin_RuntimeError, __pyx_n_s____init__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__ob_mpi); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":13
 *         RuntimeError.__init__(self, self.ob_mpi)
 * 
 *     def __eq__(self, int error):             # <<<<<<<<<<<<<<
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr == error)
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_1__eq__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception_1__eq__[] = "Exception.__eq__(self, int error)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_1__eq__ = {__Pyx_NAMESTR("__eq__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception_1__eq__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception_1__eq__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_1__eq__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  int __pyx_v_error;
  int __pyx_v_ierr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,&__pyx_n_s__error,0};
  __Pyx_RefNannySetupContext("__eq__");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__self);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__error);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__eq__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__eq__") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_error = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_error == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__eq__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":14
 * 
 *     def __eq__(self, int error):
 *         cdef int ierr = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return <bint> (ierr == error)
 *     def __ne__(self, int error):
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_ierr = __pyx_t_2;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":15
 *     def __eq__(self, int error):
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr == error)             # <<<<<<<<<<<<<<
 *     def __ne__(self, int error):
 *         cdef int ierr = self.ob_mpi
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)(__pyx_v_ierr == __pyx_v_error))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":16
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr == error)
 *     def __ne__(self, int error):             # <<<<<<<<<<<<<<
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr != error)
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_2__ne__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception_2__ne__[] = "Exception.__ne__(self, int error)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_2__ne__ = {__Pyx_NAMESTR("__ne__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception_2__ne__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception_2__ne__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_2__ne__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  int __pyx_v_error;
  int __pyx_v_ierr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,&__pyx_n_s__error,0};
  __Pyx_RefNannySetupContext("__ne__");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__self);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__error);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__ne__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__ne__") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_error = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_error == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__ne__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__ne__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":17
 *         return <bint> (ierr == error)
 *     def __ne__(self, int error):
 *         cdef int ierr = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return <bint> (ierr != error)
 *     def __lt__(self, int error):
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_ierr = __pyx_t_2;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":18
 *     def __ne__(self, int error):
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr != error)             # <<<<<<<<<<<<<<
 *     def __lt__(self, int error):
 *         cdef int ierr = self.ob_mpi
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)(__pyx_v_ierr != __pyx_v_error))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__ne__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":19
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr != error)
 *     def __lt__(self, int error):             # <<<<<<<<<<<<<<
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr < error)
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_3__lt__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception_3__lt__[] = "Exception.__lt__(self, int error)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_3__lt__ = {__Pyx_NAMESTR("__lt__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception_3__lt__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception_3__lt__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_3__lt__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  int __pyx_v_error;
  int __pyx_v_ierr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,&__pyx_n_s__error,0};
  __Pyx_RefNannySetupContext("__lt__");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__self);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__error);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__lt__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__lt__") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_error = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_error == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__lt__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__lt__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":20
 *         return <bint> (ierr != error)
 *     def __lt__(self, int error):
 *         cdef int ierr = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return <bint> (ierr < error)
 *     def __le__(self, int error):
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_ierr = __pyx_t_2;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":21
 *     def __lt__(self, int error):
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr < error)             # <<<<<<<<<<<<<<
 *     def __le__(self, int error):
 *         cdef int ierr = self.ob_mpi
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)(__pyx_v_ierr < __pyx_v_error))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__lt__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":22
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr < error)
 *     def __le__(self, int error):             # <<<<<<<<<<<<<<
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr <= error)
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_4__le__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception_4__le__[] = "Exception.__le__(self, int error)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_4__le__ = {__Pyx_NAMESTR("__le__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception_4__le__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception_4__le__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_4__le__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  int __pyx_v_error;
  int __pyx_v_ierr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,&__pyx_n_s__error,0};
  __Pyx_RefNannySetupContext("__le__");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__self);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__error);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__le__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__le__") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_error = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_error == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__le__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__le__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":23
 *         return <bint> (ierr < error)
 *     def __le__(self, int error):
 *         cdef int ierr = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return <bint> (ierr <= error)
 *     def __gt__(self, int error):
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_ierr = __pyx_t_2;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":24
 *     def __le__(self, int error):
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr <= error)             # <<<<<<<<<<<<<<
 *     def __gt__(self, int error):
 *         cdef int ierr = self.ob_mpi
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)(__pyx_v_ierr <= __pyx_v_error))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__le__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":25
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr <= error)
 *     def __gt__(self, int error):             # <<<<<<<<<<<<<<
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr > error)
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_5__gt__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception_5__gt__[] = "Exception.__gt__(self, int error)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_5__gt__ = {__Pyx_NAMESTR("__gt__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception_5__gt__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception_5__gt__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_5__gt__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  int __pyx_v_error;
  int __pyx_v_ierr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,&__pyx_n_s__error,0};
  __Pyx_RefNannySetupContext("__gt__");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__self);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__error);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__gt__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__gt__") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_error = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_error == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__gt__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__gt__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":26
 *         return <bint> (ierr <= error)
 *     def __gt__(self, int error):
 *         cdef int ierr = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return <bint> (ierr > error)
 *     def __ge__(self, int error):
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_ierr = __pyx_t_2;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":27
 *     def __gt__(self, int error):
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr > error)             # <<<<<<<<<<<<<<
 *     def __ge__(self, int error):
 *         cdef int ierr = self.ob_mpi
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)(__pyx_v_ierr > __pyx_v_error))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__gt__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":28
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr > error)
 *     def __ge__(self, int error):             # <<<<<<<<<<<<<<
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr >= error)
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_6__ge__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception_6__ge__[] = "Exception.__ge__(self, int error)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_6__ge__ = {__Pyx_NAMESTR("__ge__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception_6__ge__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception_6__ge__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_6__ge__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  int __pyx_v_error;
  int __pyx_v_ierr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,&__pyx_n_s__error,0};
  __Pyx_RefNannySetupContext("__ge__");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__self);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__error);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__ge__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__ge__") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_error = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_error == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__ge__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__ge__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":29
 *         return <bint> (ierr > error)
 *     def __ge__(self, int error):
 *         cdef int ierr = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return <bint> (ierr >= error)
 * 
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_ierr = __pyx_t_2;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":30
 *     def __ge__(self, int error):
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr >= error)             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)(__pyx_v_ierr >= __pyx_v_error))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__ge__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":32
 *         return <bint> (ierr >= error)
 * 
 *     def __bool__(self):             # <<<<<<<<<<<<<<
 *         cdef int ierr = self.ob_mpi
 *         return ierr != MPI_SUCCESS
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_7__bool__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception_7__bool__[] = "Exception.__bool__(self)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_7__bool__ = {__Pyx_NAMESTR("__bool__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception_7__bool__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception_7__bool__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_7__bool__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  int __pyx_v_ierr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,0};
  __Pyx_RefNannySetupContext("__bool__");
  __pyx_self = __pyx_self;
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__self);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__bool__") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__bool__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__bool__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":33
 * 
 *     def __bool__(self):
 *         cdef int ierr = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return ierr != MPI_SUCCESS
 * 
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_ierr = __pyx_t_2;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":34
 *     def __bool__(self):
 *         cdef int ierr = self.ob_mpi
 *         return ierr != MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 *     def __int__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_ierr != MPI_SUCCESS)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__bool__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":36
 *         return ierr != MPI_SUCCESS
 * 
 *     def __int__(self):             # <<<<<<<<<<<<<<
 *         if not mpi_active():
 *             return self.ob_mpi
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_8__int__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception_8__int__[] = "Exception.__int__(self)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_8__int__ = {__Pyx_NAMESTR("__int__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception_8__int__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception_8__int__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_8__int__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,0};
  __Pyx_RefNannySetupContext("__int__");
  __pyx_self = __pyx_self;
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__self);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__int__") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__int__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__int__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":37
 * 
 *     def __int__(self):
 *         if not mpi_active():             # <<<<<<<<<<<<<<
 *             return self.ob_mpi
 *         return self.Get_error_code()
 */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":38
 *     def __int__(self):
 *         if not mpi_active():
 *             return self.ob_mpi             # <<<<<<<<<<<<<<
 *         return self.Get_error_code()
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__ob_mpi); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":39
 *         if not mpi_active():
 *             return self.ob_mpi
 *         return self.Get_error_code()             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_error_code); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__int__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":41
 *         return self.Get_error_code()
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "MPI.Exception(%d)" % self.ob_mpi
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_9__repr__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception_9__repr__[] = "Exception.__repr__(self)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_9__repr__ = {__Pyx_NAMESTR("__repr__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception_9__repr__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception_9__repr__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_9__repr__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,0};
  __Pyx_RefNannySetupContext("__repr__");
  __pyx_self = __pyx_self;
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__self);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__repr__") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__repr__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":42
 * 
 *     def __repr__(self):
 *         return "MPI.Exception(%d)" % self.ob_mpi             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_53), __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = ((PyObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":44
 *         return "MPI.Exception(%d)" % self.ob_mpi
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         if not mpi_active():
 *             return "error code: %d" % self.ob_mpi
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_10__str__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception_10__str__[] = "Exception.__str__(self)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_10__str__ = {__Pyx_NAMESTR("__str__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception_10__str__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception_10__str__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_10__str__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,0};
  __Pyx_RefNannySetupContext("__str__");
  __pyx_self = __pyx_self;
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__self);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__str__") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__str__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":45
 * 
 *     def __str__(self):
 *         if not mpi_active():             # <<<<<<<<<<<<<<
 *             return "error code: %d" % self.ob_mpi
 *         return self.Get_error_string()
 */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":46
 *     def __str__(self):
 *         if not mpi_active():
 *             return "error code: %d" % self.ob_mpi             # <<<<<<<<<<<<<<
 *         return self.Get_error_string()
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__ob_mpi); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_54), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = ((PyObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":47
 *         if not mpi_active():
 *             return "error code: %d" % self.ob_mpi
 *         return self.Get_error_string()             # <<<<<<<<<<<<<<
 * 
 *     def Get_error_code(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_error_string); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":49
 *         return self.Get_error_string()
 * 
 *     def Get_error_code(self):             # <<<<<<<<<<<<<<
 *         """
 *         Error code
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_11Get_error_code(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception_11Get_error_code[] = "Exception.Get_error_code(self)\n\n        Error code\n        ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_11Get_error_code = {__Pyx_NAMESTR("Get_error_code"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception_11Get_error_code, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception_11Get_error_code)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_11Get_error_code(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  int __pyx_v_errorcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,0};
  __Pyx_RefNannySetupContext("Get_error_code");
  __pyx_self = __pyx_self;
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__self);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Get_error_code") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_error_code", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Exception.Get_error_code", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":53
 *         Error code
 *         """
 *         cdef int errorcode = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *         errorcode = self.ob_mpi
 *         return errorcode
 */
  __pyx_v_errorcode = MPI_SUCCESS;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":54
 *         """
 *         cdef int errorcode = MPI_SUCCESS
 *         errorcode = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return errorcode
 * 
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_errorcode = __pyx_t_2;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":55
 *         cdef int errorcode = MPI_SUCCESS
 *         errorcode = self.ob_mpi
 *         return errorcode             # <<<<<<<<<<<<<<
 * 
 *     error_code = property(Get_error_code, doc="error code")
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyInt_FromLong(__pyx_v_errorcode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.Get_error_code", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":59
 *     error_code = property(Get_error_code, doc="error code")
 * 
 *     def Get_error_class(self):             # <<<<<<<<<<<<<<
 *         """
 *         Error class
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_12Get_error_class(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception_12Get_error_class[] = "Exception.Get_error_class(self)\n\n        Error class\n        ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_12Get_error_class = {__Pyx_NAMESTR("Get_error_class"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception_12Get_error_class, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception_12Get_error_class)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_12Get_error_class(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  int __pyx_v_errorclass;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,0};
  __Pyx_RefNannySetupContext("Get_error_class");
  __pyx_self = __pyx_self;
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__self);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Get_error_class") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_error_class", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Exception.Get_error_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":63
 *         Error class
 *         """
 *         cdef int errorclass = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Error_class(self.ob_mpi, &errorclass) )
 *         return errorclass
 */
  __pyx_v_errorclass = MPI_SUCCESS;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":64
 *         """
 *         cdef int errorclass = MPI_SUCCESS
 *         CHKERR( MPI_Error_class(self.ob_mpi, &errorclass) )             # <<<<<<<<<<<<<<
 *         return errorclass
 * 
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Error_class(__pyx_t_2, (&__pyx_v_errorclass))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":65
 *         cdef int errorclass = MPI_SUCCESS
 *         CHKERR( MPI_Error_class(self.ob_mpi, &errorclass) )
 *         return errorclass             # <<<<<<<<<<<<<<
 * 
 *     error_class = property(Get_error_class, doc="error class")
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyInt_FromLong(__pyx_v_errorclass); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.Get_error_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":69
 *     error_class = property(Get_error_class, doc="error class")
 * 
 *     def Get_error_string(self):             # <<<<<<<<<<<<<<
 *         """
 *         Error string
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_13Get_error_string(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception_13Get_error_string[] = "Exception.Get_error_string(self)\n\n        Error string\n        ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_13Get_error_string = {__Pyx_NAMESTR("Get_error_string"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception_13Get_error_string, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception_13Get_error_string)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_13Get_error_string(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  char __pyx_v_string[(MPI_MAX_ERROR_STRING + 1)];
  int __pyx_v_resultlen;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,0};
  __Pyx_RefNannySetupContext("Get_error_string");
  __pyx_self = __pyx_self;
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__self);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Get_error_string") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_error_string", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Exception.Get_error_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":74
 *         """
 *         cdef char string[MPI_MAX_ERROR_STRING+1]
 *         cdef int resultlen = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Error_string(self.ob_mpi, string, &resultlen) )
 *         return tompistr(string, resultlen)
 */
  __pyx_v_resultlen = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":75
 *         cdef char string[MPI_MAX_ERROR_STRING+1]
 *         cdef int resultlen = 0
 *         CHKERR( MPI_Error_string(self.ob_mpi, string, &resultlen) )             # <<<<<<<<<<<<<<
 *         return tompistr(string, resultlen)
 * 
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Error_string(__pyx_t_2, __pyx_v_string, (&__pyx_v_resultlen))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":76
 *         cdef int resultlen = 0
 *         CHKERR( MPI_Error_string(self.ob_mpi, string, &resultlen) )
 *         return tompistr(string, resultlen)             # <<<<<<<<<<<<<<
 * 
 *     error_string = property(Get_error_string, doc="error string")
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_tompistr(__pyx_v_string, __pyx_v_resultlen); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.Get_error_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":82
 * 
 * 
 * def Get_error_class(int errorcode):             # <<<<<<<<<<<<<<
 *     """
 *     Convert an *error code* into an *error class*
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_Get_error_class(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Get_error_class[] = "Get_error_class(int errorcode)\n\n    Convert an *error code* into an *error class*\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_Get_error_class = {__Pyx_NAMESTR("Get_error_class"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Get_error_class, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Get_error_class)};
static PyObject *__pyx_pf_6mpi4py_3MPI_Get_error_class(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_errorcode;
  int __pyx_v_errorclass;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__errorcode,0};
  __Pyx_RefNannySetupContext("Get_error_class");
  __pyx_self = __pyx_self;
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__errorcode);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Get_error_class") < 0)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_errorcode = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_error_class", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Get_error_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":86
 *     Convert an *error code* into an *error class*
 *     """
 *     cdef int errorclass = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Error_class(errorcode, &errorclass) )
 *     return errorclass
 */
  __pyx_v_errorclass = MPI_SUCCESS;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":87
 *     """
 *     cdef int errorclass = MPI_SUCCESS
 *     CHKERR( MPI_Error_class(errorcode, &errorclass) )             # <<<<<<<<<<<<<<
 *     return errorclass
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Error_class(__pyx_v_errorcode, (&__pyx_v_errorclass))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":88
 *     cdef int errorclass = MPI_SUCCESS
 *     CHKERR( MPI_Error_class(errorcode, &errorclass) )
 *     return errorclass             # <<<<<<<<<<<<<<
 * 
 * def Get_error_string(int errorcode):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_errorclass); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Get_error_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":90
 *     return errorclass
 * 
 * def Get_error_string(int errorcode):             # <<<<<<<<<<<<<<
 *     """
 *     Return the *error string* for a given
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_1Get_error_string(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_1Get_error_string[] = "Get_error_string(int errorcode)\n\n    Return the *error string* for a given\n    *error class* or *error code*\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_1Get_error_string = {__Pyx_NAMESTR("Get_error_string"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_1Get_error_string, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_1Get_error_string)};
static PyObject *__pyx_pf_6mpi4py_3MPI_1Get_error_string(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_errorcode;
  char __pyx_v_string[(MPI_MAX_ERROR_STRING + 1)];
  int __pyx_v_resultlen;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__errorcode,0};
  __Pyx_RefNannySetupContext("Get_error_string");
  __pyx_self = __pyx_self;
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__errorcode);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Get_error_string") < 0)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_errorcode = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_error_string", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Get_error_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":96
 *     """
 *     cdef char string[MPI_MAX_ERROR_STRING+1]
 *     cdef int resultlen = 0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Error_string(errorcode, string, &resultlen) )
 *     return tompistr(string, resultlen)
 */
  __pyx_v_resultlen = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":97
 *     cdef char string[MPI_MAX_ERROR_STRING+1]
 *     cdef int resultlen = 0
 *     CHKERR( MPI_Error_string(errorcode, string, &resultlen) )             # <<<<<<<<<<<<<<
 *     return tompistr(string, resultlen)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Error_string(__pyx_v_errorcode, __pyx_v_string, (&__pyx_v_resultlen))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":98
 *     cdef int resultlen = 0
 *     CHKERR( MPI_Error_string(errorcode, string, &resultlen) )
 *     return tompistr(string, resultlen)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_tompistr(__pyx_v_string, __pyx_v_resultlen); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Get_error_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":101
 * 
 * 
 * def Add_error_class():             # <<<<<<<<<<<<<<
 *     """
 *     Add an *error class* to the known error classes
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_2Add_error_class(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_2Add_error_class[] = "Add_error_class()\n\n    Add an *error class* to the known error classes\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_2Add_error_class = {__Pyx_NAMESTR("Add_error_class"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_2Add_error_class, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_2Add_error_class)};
static PyObject *__pyx_pf_6mpi4py_3MPI_2Add_error_class(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_errorclass;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Add_error_class");
  __pyx_self = __pyx_self;
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Add_error_class", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Add_error_class", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":105
 *     Add an *error class* to the known error classes
 *     """
 *     cdef int errorclass = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Add_error_class(&errorclass) )
 *     return errorclass
 */
  __pyx_v_errorclass = MPI_SUCCESS;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":106
 *     """
 *     cdef int errorclass = MPI_SUCCESS
 *     CHKERR( MPI_Add_error_class(&errorclass) )             # <<<<<<<<<<<<<<
 *     return errorclass
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Add_error_class((&__pyx_v_errorclass))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":107
 *     cdef int errorclass = MPI_SUCCESS
 *     CHKERR( MPI_Add_error_class(&errorclass) )
 *     return errorclass             # <<<<<<<<<<<<<<
 * 
 * def Add_error_code(int errorclass):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_errorclass); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Add_error_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":109
 *     return errorclass
 * 
 * def Add_error_code(int errorclass):             # <<<<<<<<<<<<<<
 *     """
 *     Add an *error code* to an *error class*
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Add_error_code(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Add_error_code[] = "Add_error_code(int errorclass)\n\n    Add an *error code* to an *error class*\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Add_error_code = {__Pyx_NAMESTR("Add_error_code"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Add_error_code, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Add_error_code)};
static PyObject *__pyx_pf_6mpi4py_3MPI_3Add_error_code(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_errorclass;
  int __pyx_v_errorcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__errorclass,0};
  __Pyx_RefNannySetupContext("Add_error_code");
  __pyx_self = __pyx_self;
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__errorclass);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Add_error_code") < 0)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_errorclass = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_errorclass == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Add_error_code", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Add_error_code", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":113
 *     Add an *error code* to an *error class*
 *     """
 *     cdef int errorcode = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Add_error_code(errorclass, &errorcode) )
 *     return errorcode
 */
  __pyx_v_errorcode = MPI_SUCCESS;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":114
 *     """
 *     cdef int errorcode = MPI_SUCCESS
 *     CHKERR( MPI_Add_error_code(errorclass, &errorcode) )             # <<<<<<<<<<<<<<
 *     return errorcode
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Add_error_code(__pyx_v_errorclass, (&__pyx_v_errorcode))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":115
 *     cdef int errorcode = MPI_SUCCESS
 *     CHKERR( MPI_Add_error_code(errorclass, &errorcode) )
 *     return errorcode             # <<<<<<<<<<<<<<
 * 
 * def Add_error_string(int errorcode, string):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_errorcode); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Add_error_code", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":117
 *     return errorcode
 * 
 * def Add_error_string(int errorcode, string):             # <<<<<<<<<<<<<<
 *     """
 *     Associate an *error string* with an
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Add_error_string(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Add_error_string[] = "Add_error_string(int errorcode, string)\n\n    Associate an *error string* with an\n    *error class* or *errorcode*\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Add_error_string = {__Pyx_NAMESTR("Add_error_string"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Add_error_string, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Add_error_string)};
static PyObject *__pyx_pf_6mpi4py_3MPI_4Add_error_string(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_errorcode;
  PyObject *__pyx_v_string = 0;
  char *__pyx_v_cstring;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__errorcode,&__pyx_n_s__string,0};
  __Pyx_RefNannySetupContext("Add_error_string");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__errorcode);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__string);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Add_error_string", 1, 2, 2, 1); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Add_error_string") < 0)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_errorcode = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_string = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Add_error_string", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Add_error_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_string);

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":122
 *     *error class* or *errorcode*
 *     """
 *     cdef char *cstring = NULL             # <<<<<<<<<<<<<<
 *     string = asmpistr(string, &cstring, NULL)
 *     CHKERR( MPI_Add_error_string(errorcode, cstring) )
 */
  __pyx_v_cstring = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":123
 *     """
 *     cdef char *cstring = NULL
 *     string = asmpistr(string, &cstring, NULL)             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Add_error_string(errorcode, cstring) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_string, (&__pyx_v_cstring), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_string);
  __pyx_v_string = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":124
 *     cdef char *cstring = NULL
 *     string = asmpistr(string, &cstring, NULL)
 *     CHKERR( MPI_Add_error_string(errorcode, cstring) )             # <<<<<<<<<<<<<<
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Add_error_string(__pyx_v_errorcode, __pyx_v_cstring)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Add_error_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_string);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":7
 *     """
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ob_mpi = MPI_ERRHANDLER_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_10Errhandler___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_10Errhandler___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;

  /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":8
 * 
 *     def __cinit__(self):
 *         self.ob_mpi = MPI_ERRHANDLER_NULL             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  ((struct PyMPIErrhandlerObject *)__pyx_v_self)->ob_mpi = MPI_ERRHANDLER_NULL;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":10
 *         self.ob_mpi = MPI_ERRHANDLER_NULL
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( del_Errhandler(&self.ob_mpi) )
 */

static void __pyx_pf_6mpi4py_3MPI_10Errhandler_1__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_6mpi4py_3MPI_10Errhandler_1__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":11
 * 
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return             # <<<<<<<<<<<<<<
 *         CHKERR( del_Errhandler(&self.ob_mpi) )
 * 
 */
  __pyx_t_1 = (!(((struct PyMPIErrhandlerObject *)__pyx_v_self)->flags & __pyx_e_6mpi4py_3MPI_PyMPI_OWNED));
  if (__pyx_t_1) {
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":12
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( del_Errhandler(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_f_6mpi4py_3MPI_del_Errhandler((&((struct PyMPIErrhandlerObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":14
 *         CHKERR( del_Errhandler(&self.ob_mpi) )
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(self,  Errhandler): return NotImplemented
 *         if not isinstance(other, Errhandler): return NotImplemented
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  struct PyMPIErrhandlerObject *__pyx_v_s = 0;
  struct PyMPIErrhandlerObject *__pyx_v_o = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":15
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Errhandler): return NotImplemented             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Errhandler): return NotImplemented
 *         cdef Errhandler s = <Errhandler>self, o = <Errhandler>other
 */
  __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Errhandler));
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_self, __pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":16
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Errhandler): return NotImplemented
 *         if not isinstance(other, Errhandler): return NotImplemented             # <<<<<<<<<<<<<<
 *         cdef Errhandler s = <Errhandler>self, o = <Errhandler>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 */
  __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Errhandler));
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_other, __pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = (!__pyx_t_3);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":17
 *         if not isinstance(self,  Errhandler): return NotImplemented
 *         if not isinstance(other, Errhandler): return NotImplemented
 *         cdef Errhandler s = <Errhandler>self, o = <Errhandler>other             # <<<<<<<<<<<<<<
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 */
  __Pyx_INCREF(((PyObject *)((struct PyMPIErrhandlerObject *)__pyx_v_self)));
  __pyx_v_s = ((struct PyMPIErrhandlerObject *)__pyx_v_self);
  __Pyx_INCREF(((PyObject *)((struct PyMPIErrhandlerObject *)__pyx_v_other)));
  __pyx_v_o = ((struct PyMPIErrhandlerObject *)__pyx_v_other);

  /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":19
 *         cdef Errhandler s = <Errhandler>self, o = <Errhandler>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError("only '==' and '!='")
 * 
 */
  switch (__pyx_v_op) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":18
 *         if not isinstance(other, Errhandler): return NotImplemented
 *         cdef Errhandler s = <Errhandler>self, o = <Errhandler>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)             # <<<<<<<<<<<<<<
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")
 */
    case Py_EQ:
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi == __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":19
 *         cdef Errhandler s = <Errhandler>self, o = <Errhandler>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError("only '==' and '!='")
 * 
 */
    case Py_NE:
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi != __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    break;
    default:

    /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":20
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
    __pyx_t_1 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_56), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[5]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    break;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_s);
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":22
 *         else: raise TypeError("only '==' and '!='")
 * 
 *     def __bool__(self):             # <<<<<<<<<<<<<<
 *         return self.ob_mpi != MPI_ERRHANDLER_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_10Errhandler_3__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_10Errhandler_3__bool__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":23
 * 
 *     def __bool__(self):
 *         return self.ob_mpi != MPI_ERRHANDLER_NULL             # <<<<<<<<<<<<<<
 * 
 *     def Free(self):
 */
  __pyx_r = (((struct PyMPIErrhandlerObject *)__pyx_v_self)->ob_mpi != MPI_ERRHANDLER_NULL);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":25
 *         return self.ob_mpi != MPI_ERRHANDLER_NULL
 * 
 *     def Free(self):             # <<<<<<<<<<<<<<
 *         """
 *         Free an error handler
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_4Free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_10Errhandler_4Free[] = "Errhandler.Free(self)\n\n        Free an error handler\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_4Free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Free");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Free", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Free", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":29
 *         Free an error handler
 *         """
 *         CHKERR( MPI_Errhandler_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Errhandler_free((&((struct PyMPIErrhandlerObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.Free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":34
 *     # --------------
 * 
 *     def py2f(self):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_5py2f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_10Errhandler_5py2f[] = "Errhandler.py2f(self)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_5py2f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("py2f");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("py2f", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "py2f", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":37
 *         """
 *         """
 *         return MPI_Errhandler_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_to_py_MPI_Fint(MPI_Errhandler_c2f(((struct PyMPIErrhandlerObject *)__pyx_v_self)->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.py2f", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":40
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_6f2py(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_10Errhandler_6f2py[] = "Errhandler.f2py(type cls, arg)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_6f2py(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_arg = 0;
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Fint __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__arg,0};
  __Pyx_RefNannySetupContext("f2py");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__arg);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "f2py") < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":43
 *         """
 *         """
 *         cdef Errhandler errhandler = <Errhandler>cls()             # <<<<<<<<<<<<<<
 *         errhandler.ob_mpi = MPI_Errhandler_f2c(arg)
 *         return errhandler
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIErrhandlerObject *)__pyx_t_1)));
  __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":44
 *         """
 *         cdef Errhandler errhandler = <Errhandler>cls()
 *         errhandler.ob_mpi = MPI_Errhandler_f2c(arg)             # <<<<<<<<<<<<<<
 *         return errhandler
 * 
 */
  __pyx_t_2 = __Pyx_PyInt_from_py_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_2 == (MPI_Fint)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_errhandler->ob_mpi = MPI_Errhandler_f2c(__pyx_t_2);

  /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":45
 *         cdef Errhandler errhandler = <Errhandler>cls()
 *         errhandler.ob_mpi = MPI_Errhandler_f2c(arg)
 *         return errhandler             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_errhandler));
  __pyx_r = ((PyObject *)__pyx_v_errhandler);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_errhandler);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":53
 *     """
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ob_mpi = MPI_DATATYPE_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_8Datatype___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_8Datatype___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":54
 * 
 *     def __cinit__(self):
 *         self.ob_mpi = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  ((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi = MPI_DATATYPE_NULL;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":56
 *         self.ob_mpi = MPI_DATATYPE_NULL
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( del_Datatype(&self.ob_mpi) )
 */

static void __pyx_pf_6mpi4py_3MPI_8Datatype_1__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_6mpi4py_3MPI_8Datatype_1__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":57
 * 
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return             # <<<<<<<<<<<<<<
 *         CHKERR( del_Datatype(&self.ob_mpi) )
 * 
 */
  __pyx_t_1 = (!(((struct PyMPIDatatypeObject *)__pyx_v_self)->flags & __pyx_e_6mpi4py_3MPI_PyMPI_OWNED));
  if (__pyx_t_1) {
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":58
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( del_Datatype(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_f_6mpi4py_3MPI_del_Datatype((&((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":60
 *         CHKERR( del_Datatype(&self.ob_mpi) )
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(self,  Datatype): return NotImplemented
 *         if not isinstance(other, Datatype): return NotImplemented
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  struct PyMPIDatatypeObject *__pyx_v_s = 0;
  struct PyMPIDatatypeObject *__pyx_v_o = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":61
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Datatype): return NotImplemented             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Datatype): return NotImplemented
 *         cdef Datatype s = <Datatype>self, o = <Datatype>other
 */
  __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype));
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_self, __pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":62
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Datatype): return NotImplemented
 *         if not isinstance(other, Datatype): return NotImplemented             # <<<<<<<<<<<<<<
 *         cdef Datatype s = <Datatype>self, o = <Datatype>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 */
  __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype));
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_other, __pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = (!__pyx_t_3);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":63
 *         if not isinstance(self,  Datatype): return NotImplemented
 *         if not isinstance(other, Datatype): return NotImplemented
 *         cdef Datatype s = <Datatype>self, o = <Datatype>other             # <<<<<<<<<<<<<<
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 */
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_v_self)));
  __pyx_v_s = ((struct PyMPIDatatypeObject *)__pyx_v_self);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_v_other)));
  __pyx_v_o = ((struct PyMPIDatatypeObject *)__pyx_v_other);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":65
 *         cdef Datatype s = <Datatype>self, o = <Datatype>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError("only '==' and '!='")
 * 
 */
  switch (__pyx_v_op) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":64
 *         if not isinstance(other, Datatype): return NotImplemented
 *         cdef Datatype s = <Datatype>self, o = <Datatype>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)             # <<<<<<<<<<<<<<
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")
 */
    case Py_EQ:
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi == __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":65
 *         cdef Datatype s = <Datatype>self, o = <Datatype>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError("only '==' and '!='")
 * 
 */
    case Py_NE:
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi != __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    break;
    default:

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":66
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
    __pyx_t_1 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_57), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[18]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    break;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_s);
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":68
 *         else: raise TypeError("only '==' and '!='")
 * 
 *     def __bool__(self):             # <<<<<<<<<<<<<<
 *         return self.ob_mpi != MPI_DATATYPE_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_8Datatype_3__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_8Datatype_3__bool__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":69
 * 
 *     def __bool__(self):
 *         return self.ob_mpi != MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 * 
 *     # Datatype Accessors
 */
  __pyx_r = (((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi != MPI_DATATYPE_NULL);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":74
 *     # ------------------
 * 
 *     def Get_extent(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return lower bound and extent of datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_4Get_extent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_4Get_extent[] = "Datatype.Get_extent(self)\n\n        Return lower bound and extent of datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_4Get_extent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Aint __pyx_v_lb;
  MPI_Aint __pyx_v_extent;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_extent");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_extent", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_extent", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":78
 *         Return lower bound and extent of datatype
 *         """
 *         cdef MPI_Aint lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )
 *         return (lb, extent)
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":79
 *         """
 *         cdef MPI_Aint lb = 0, extent = 0
 *         CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )             # <<<<<<<<<<<<<<
 *         return (lb, extent)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":80
 *         cdef MPI_Aint lb = 0, extent = 0
 *         CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )
 *         return (lb, extent)             # <<<<<<<<<<<<<<
 * 
 *     property extent:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_lb); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_extent); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_r = ((PyObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Get_extent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":84
 *     property extent:
 *         """extent"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef MPI_Aint lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_6extent___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_6extent___get__(PyObject *__pyx_v_self) {
  MPI_Aint __pyx_v_lb;
  MPI_Aint __pyx_v_extent;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":85
 *         """extent"""
 *         def __get__(self):
 *             cdef MPI_Aint lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )
 *             return extent
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":86
 *         def __get__(self):
 *             cdef MPI_Aint lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )             # <<<<<<<<<<<<<<
 *             return extent
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":87
 *             cdef MPI_Aint lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )
 *             return extent             # <<<<<<<<<<<<<<
 * 
 *     property lb:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_extent); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.extent.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":91
 *     property lb:
 *         """lower bound"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef MPI_Aint lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_2lb___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_2lb___get__(PyObject *__pyx_v_self) {
  MPI_Aint __pyx_v_lb;
  MPI_Aint __pyx_v_extent;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":92
 *         """lower bound"""
 *         def __get__(self):
 *             cdef MPI_Aint lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )
 *             return lb
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":93
 *         def __get__(self):
 *             cdef MPI_Aint lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )             # <<<<<<<<<<<<<<
 *             return lb
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":94
 *             cdef MPI_Aint lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )
 *             return lb             # <<<<<<<<<<<<<<
 * 
 *     property ub:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_lb); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.lb.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":98
 *     property ub:
 *         """upper bound"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef MPI_Aint lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_2ub___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_2ub___get__(PyObject *__pyx_v_self) {
  MPI_Aint __pyx_v_lb;
  MPI_Aint __pyx_v_extent;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":99
 *         """upper bound"""
 *         def __get__(self):
 *             cdef MPI_Aint lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )
 *             return lb + extent
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":100
 *         def __get__(self):
 *             cdef MPI_Aint lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )             # <<<<<<<<<<<<<<
 *             return lb + extent
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":101
 *             cdef MPI_Aint lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )
 *             return lb + extent             # <<<<<<<<<<<<<<
 * 
 *     def Get_size(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_to_py_MPI_Aint((__pyx_v_lb + __pyx_v_extent)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.ub.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":103
 *             return lb + extent
 * 
 *     def Get_size(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of bytes occupied
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_5Get_size(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_5Get_size[] = "Datatype.Get_size(self)\n\n        Return the number of bytes occupied\n        by entries in the datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_5Get_size(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_size");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_size", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_size", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":108
 *         by entries in the datatype
 *         """
 *         cdef int size = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_size(self.ob_mpi, &size) )
 *         return size
 */
  __pyx_v_size = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":109
 *         """
 *         cdef int size = 0
 *         CHKERR( MPI_Type_size(self.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *         return size
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_size(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":110
 *         cdef int size = 0
 *         CHKERR( MPI_Type_size(self.ob_mpi, &size) )
 *         return size             # <<<<<<<<<<<<<<
 * 
 *     property size:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Get_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":114
 *     property size:
 *         """size (in bytes)"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef int size = 0
 *             CHKERR( MPI_Type_size(self.ob_mpi, &size) )
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_4size___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_4size___get__(PyObject *__pyx_v_self) {
  int __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":115
 *         """size (in bytes)"""
 *         def __get__(self):
 *             cdef int size = 0             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Type_size(self.ob_mpi, &size) )
 *             return size
 */
  __pyx_v_size = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":116
 *         def __get__(self):
 *             cdef int size = 0
 *             CHKERR( MPI_Type_size(self.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *             return size
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_size(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":117
 *             cdef int size = 0
 *             CHKERR( MPI_Type_size(self.ob_mpi, &size) )
 *             return size             # <<<<<<<<<<<<<<
 * 
 *     # Datatype Constructors
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":122
 *     # ---------------------
 * 
 *     def Dup(self):             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_6Dup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_6Dup[] = "Datatype.Dup(self)\n\n        Duplicate a datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_6Dup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Dup");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Dup", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Dup", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":126
 *         Duplicate a datatype
 *         """
 *         cdef Datatype datatype = <Datatype>type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_dup(self.ob_mpi, &datatype.ob_mpi) )
 *         return datatype
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_1)));
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":127
 *         """
 *         cdef Datatype datatype = <Datatype>type(self)()
 *         CHKERR( MPI_Type_dup(self.ob_mpi, &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_dup(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":128
 *         cdef Datatype datatype = <Datatype>type(self)()
 *         CHKERR( MPI_Type_dup(self.ob_mpi, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     Create_dup = Dup #: convenience alias
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_datatype));
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Dup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":132
 *     Create_dup = Dup #: convenience alias
 * 
 *     def Create_contiguous(self, int count):             # <<<<<<<<<<<<<<
 *         """
 *         Create a contiguous datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_7Create_contiguous(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_7Create_contiguous[] = "Datatype.Create_contiguous(self, int count)\n\n        Create a contiguous datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_7Create_contiguous(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_count;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__count,0};
  __Pyx_RefNannySetupContext("Create_contiguous");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__count);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create_contiguous") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_count = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_count == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_contiguous", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_contiguous", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":136
 *         Create a contiguous datatype
 *         """
 *         cdef Datatype datatype = <Datatype>type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_contiguous(count, self.ob_mpi,
 *                                     &datatype.ob_mpi) )
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_1)));
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":138
 *         cdef Datatype datatype = <Datatype>type(self)()
 *         CHKERR( MPI_Type_contiguous(count, self.ob_mpi,
 *                                     &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_contiguous(__pyx_v_count, ((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":139
 *         CHKERR( MPI_Type_contiguous(count, self.ob_mpi,
 *                                     &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     def Create_vector(self, int count, int blocklength, int stride):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_datatype));
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_contiguous", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":141
 *         return datatype
 * 
 *     def Create_vector(self, int count, int blocklength, int stride):             # <<<<<<<<<<<<<<
 *         """
 *         Create a vector (strided) datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_8Create_vector(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_8Create_vector[] = "Datatype.Create_vector(self, int count, int blocklength, int stride)\n\n        Create a vector (strided) datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_8Create_vector(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_count;
  int __pyx_v_blocklength;
  int __pyx_v_stride;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__count,&__pyx_n_s__blocklength,&__pyx_n_s__stride,0};
  __Pyx_RefNannySetupContext("Create_vector");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__count);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__blocklength);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_vector", 1, 3, 3, 1); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__stride);
        if (likely(values[2])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_vector", 1, 3, 3, 2); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create_vector") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_count = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_count == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_blocklength = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_blocklength == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_stride = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_stride == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_vector", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_vector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":145
 *         Create a vector (strided) datatype
 *         """
 *         cdef Datatype datatype = <Datatype>type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_vector(count, blocklength, stride,
 *                                 self.ob_mpi, &datatype.ob_mpi) )
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_1)));
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":147
 *         cdef Datatype datatype = <Datatype>type(self)()
 *         CHKERR( MPI_Type_vector(count, blocklength, stride,
 *                                 self.ob_mpi, &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_vector(__pyx_v_count, __pyx_v_blocklength, __pyx_v_stride, ((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":148
 *         CHKERR( MPI_Type_vector(count, blocklength, stride,
 *                                 self.ob_mpi, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     def Create_hvector(self, int count, int blocklength, Aint stride):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_datatype));
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_vector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":150
 *         return datatype
 * 
 *     def Create_hvector(self, int count, int blocklength, Aint stride):             # <<<<<<<<<<<<<<
 *         """
 *         Create a vector (strided) datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_9Create_hvector(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_9Create_hvector[] = "Datatype.Create_hvector(self, int count, int blocklength, Aint stride)\n\n        Create a vector (strided) datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_9Create_hvector(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_count;
  int __pyx_v_blocklength;
  MPI_Aint __pyx_v_stride;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__count,&__pyx_n_s__blocklength,&__pyx_n_s__stride,0};
  __Pyx_RefNannySetupContext("Create_hvector");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__count);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__blocklength);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_hvector", 1, 3, 3, 1); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__stride);
        if (likely(values[2])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_hvector", 1, 3, 3, 2); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create_hvector") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_count = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_count == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_blocklength = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_blocklength == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_stride = __Pyx_PyInt_from_py_MPI_Aint(values[2]); if (unlikely((__pyx_v_stride == (MPI_Aint)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_hvector", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_hvector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":154
 *         Create a vector (strided) datatype
 *         """
 *         cdef Datatype datatype = <Datatype>type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_hvector(count, blocklength, stride,
 *                                         self.ob_mpi,
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_1)));
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":157
 *         CHKERR( MPI_Type_create_hvector(count, blocklength, stride,
 *                                         self.ob_mpi,
 *                                         &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_hvector(__pyx_v_count, __pyx_v_blocklength, __pyx_v_stride, ((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":158
 *                                         self.ob_mpi,
 *                                         &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     def Create_indexed(self, blocklengths, displacements):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_datatype));
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_hvector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":160
 *         return datatype
 * 
 *     def Create_indexed(self, blocklengths, displacements):             # <<<<<<<<<<<<<<
 *         """
 *         Create an indexed datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_10Create_indexed(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_10Create_indexed[] = "Datatype.Create_indexed(self, blocklengths, displacements)\n\n        Create an indexed datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_10Create_indexed(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_blocklengths = 0;
  PyObject *__pyx_v_displacements = 0;
  int __pyx_v_count;
  int *__pyx_v_iblen;
  int *__pyx_v_idisp;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__blocklengths,&__pyx_n_s__displacements,0};
  __Pyx_RefNannySetupContext("Create_indexed");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__blocklengths);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__displacements);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_indexed", 1, 2, 2, 1); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create_indexed") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_blocklengths = values[0];
    __pyx_v_displacements = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_indexed", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_indexed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_blocklengths);
  __Pyx_INCREF(__pyx_v_displacements);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":164
 *         Create an indexed datatype
 *         """
 *         cdef int count = 0, *iblen = NULL, *idisp = NULL             # <<<<<<<<<<<<<<
 *         blocklengths  = getarray_int(blocklengths,  &count, &iblen)
 *         displacements = chkarray_int(displacements,  count, &idisp)
 */
  __pyx_v_count = 0;
  __pyx_v_iblen = NULL;
  __pyx_v_idisp = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":165
 *         """
 *         cdef int count = 0, *iblen = NULL, *idisp = NULL
 *         blocklengths  = getarray_int(blocklengths,  &count, &iblen)             # <<<<<<<<<<<<<<
 *         displacements = chkarray_int(displacements,  count, &idisp)
 *         #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_getarray_int(__pyx_v_blocklengths, (&__pyx_v_count), (&__pyx_v_iblen)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_blocklengths);
  __pyx_v_blocklengths = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":166
 *         cdef int count = 0, *iblen = NULL, *idisp = NULL
 *         blocklengths  = getarray_int(blocklengths,  &count, &iblen)
 *         displacements = chkarray_int(displacements,  count, &idisp)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Datatype datatype = <Datatype>type(self)()
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_chkarray_int(__pyx_v_displacements, __pyx_v_count, (&__pyx_v_idisp)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_displacements);
  __pyx_v_displacements = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":168
 *         displacements = chkarray_int(displacements,  count, &idisp)
 *         #
 *         cdef Datatype datatype = <Datatype>type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_indexed(count, iblen, idisp,
 *                                  self.ob_mpi, &datatype.ob_mpi) )
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_1)));
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":170
 *         cdef Datatype datatype = <Datatype>type(self)()
 *         CHKERR( MPI_Type_indexed(count, iblen, idisp,
 *                                  self.ob_mpi, &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_indexed(__pyx_v_count, __pyx_v_iblen, __pyx_v_idisp, ((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":171
 *         CHKERR( MPI_Type_indexed(count, iblen, idisp,
 *                                  self.ob_mpi, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     def Create_indexed_block(self, int blocklength, displacements):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_datatype));
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_indexed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XDECREF(__pyx_v_blocklengths);
  __Pyx_XDECREF(__pyx_v_displacements);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":173
 *         return datatype
 * 
 *     def Create_indexed_block(self, int blocklength, displacements):             # <<<<<<<<<<<<<<
 *         """
 *         Create an indexed datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_11Create_indexed_block(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_11Create_indexed_block[] = "Datatype.Create_indexed_block(self, int blocklength, displacements)\n\n        Create an indexed datatype\n        with constant-sized blocks\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_11Create_indexed_block(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_blocklength;
  PyObject *__pyx_v_displacements = 0;
  int __pyx_v_count;
  int *__pyx_v_idisp;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__blocklength,&__pyx_n_s__displacements,0};
  __Pyx_RefNannySetupContext("Create_indexed_block");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__blocklength);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__displacements);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_indexed_block", 1, 2, 2, 1); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create_indexed_block") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_blocklength = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_blocklength == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_displacements = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_indexed_block", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_indexed_block", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_displacements);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":178
 *         with constant-sized blocks
 *         """
 *         cdef int count = 0, *idisp = NULL             # <<<<<<<<<<<<<<
 *         displacements = getarray_int(displacements, &count, &idisp)
 *         #
 */
  __pyx_v_count = 0;
  __pyx_v_idisp = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":179
 *         """
 *         cdef int count = 0, *idisp = NULL
 *         displacements = getarray_int(displacements, &count, &idisp)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Datatype datatype = <Datatype>type(self)()
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_getarray_int(__pyx_v_displacements, (&__pyx_v_count), (&__pyx_v_idisp)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_displacements);
  __pyx_v_displacements = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":181
 *         displacements = getarray_int(displacements, &count, &idisp)
 *         #
 *         cdef Datatype datatype = <Datatype>type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_indexed_block(count, blocklength,
 *                                               idisp, self.ob_mpi,
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_1)));
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":184
 *         CHKERR( MPI_Type_create_indexed_block(count, blocklength,
 *                                               idisp, self.ob_mpi,
 *                                               &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_indexed_block(__pyx_v_count, __pyx_v_blocklength, __pyx_v_idisp, ((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":185
 *                                               idisp, self.ob_mpi,
 *                                               &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     def Create_hindexed(self, blocklengths, displacements):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_datatype));
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_indexed_block", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XDECREF(__pyx_v_displacements);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":187
 *         return datatype
 * 
 *     def Create_hindexed(self, blocklengths, displacements):             # <<<<<<<<<<<<<<
 *         """
 *         Create an indexed datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_12Create_hindexed(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_12Create_hindexed[] = "Datatype.Create_hindexed(self, blocklengths, displacements)\n\n        Create an indexed datatype\n        with displacements in bytes\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_12Create_hindexed(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_blocklengths = 0;
  PyObject *__pyx_v_displacements = 0;
  int __pyx_v_count;
  int *__pyx_v_iblen;
  MPI_Aint *__pyx_v_idisp;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__blocklengths,&__pyx_n_s__displacements,0};
  __Pyx_RefNannySetupContext("Create_hindexed");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__blocklengths);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__displacements);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_hindexed", 1, 2, 2, 1); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create_hindexed") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_blocklengths = values[0];
    __pyx_v_displacements = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_hindexed", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_hindexed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_blocklengths);
  __Pyx_INCREF(__pyx_v_displacements);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":192
 *         with displacements in bytes
 *         """
 *         cdef int count = 0, *iblen = NULL             # <<<<<<<<<<<<<<
 *         blocklengths = getarray_int(blocklengths, &count, &iblen)
 *         cdef MPI_Aint *idisp = NULL
 */
  __pyx_v_count = 0;
  __pyx_v_iblen = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":193
 *         """
 *         cdef int count = 0, *iblen = NULL
 *         blocklengths = getarray_int(blocklengths, &count, &iblen)             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint *idisp = NULL
 *         displacements = asarray_Aint(displacements, count, &idisp)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_getarray_int(__pyx_v_blocklengths, (&__pyx_v_count), (&__pyx_v_iblen)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_blocklengths);
  __pyx_v_blocklengths = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":194
 *         cdef int count = 0, *iblen = NULL
 *         blocklengths = getarray_int(blocklengths, &count, &iblen)
 *         cdef MPI_Aint *idisp = NULL             # <<<<<<<<<<<<<<
 *         displacements = asarray_Aint(displacements, count, &idisp)
 *         #
 */
  __pyx_v_idisp = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":195
 *         blocklengths = getarray_int(blocklengths, &count, &iblen)
 *         cdef MPI_Aint *idisp = NULL
 *         displacements = asarray_Aint(displacements, count, &idisp)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Datatype datatype = <Datatype>type(self)()
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asarray_Aint(__pyx_v_displacements, __pyx_v_count, (&__pyx_v_idisp)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_displacements);
  __pyx_v_displacements = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":197
 *         displacements = asarray_Aint(displacements, count, &idisp)
 *         #
 *         cdef Datatype datatype = <Datatype>type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_hindexed(count, iblen, idisp,
 *                                          self.ob_mpi,
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_1)));
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":200
 *         CHKERR( MPI_Type_create_hindexed(count, iblen, idisp,
 *                                          self.ob_mpi,
 *                                          &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_hindexed(__pyx_v_count, __pyx_v_iblen, __pyx_v_idisp, ((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":201
 *                                          self.ob_mpi,
 *                                          &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     def Create_subarray(self, sizes, subsizes, starts,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_datatype));
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_hindexed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XDECREF(__pyx_v_blocklengths);
  __Pyx_XDECREF(__pyx_v_displacements);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":203
 *         return datatype
 * 
 *     def Create_subarray(self, sizes, subsizes, starts,             # <<<<<<<<<<<<<<
 *                         int order=ORDER_C):
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_13Create_subarray(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_13Create_subarray[] = "Datatype.Create_subarray(self, sizes, subsizes, starts, int order=ORDER_C)\n\n        Create a datatype for a subarray of\n        a regular, multidimensional array\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_13Create_subarray(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sizes = 0;
  PyObject *__pyx_v_subsizes = 0;
  PyObject *__pyx_v_starts = 0;
  int __pyx_v_order;
  int __pyx_v_ndims;
  int *__pyx_v_isizes;
  int *__pyx_v_isubsizes;
  int *__pyx_v_istarts;
  int __pyx_v_iorder;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sizes,&__pyx_n_s__subsizes,&__pyx_n_s__starts,&__pyx_n_s__order,0};
  __Pyx_RefNannySetupContext("Create_subarray");
  {
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sizes);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__subsizes);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_subarray", 0, 3, 4, 1); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__starts);
        if (likely(values[2])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_subarray", 0, 3, 4, 2); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__order);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create_subarray") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sizes = values[0];
    __pyx_v_subsizes = values[1];
    __pyx_v_starts = values[2];
    if (values[3]) {
      __pyx_v_order = __Pyx_PyInt_AsInt(values[3]); if (unlikely((__pyx_v_order == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_order = __pyx_k_58;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_subarray", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_subarray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_sizes);
  __Pyx_INCREF(__pyx_v_subsizes);
  __Pyx_INCREF(__pyx_v_starts);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":209
 *         a regular, multidimensional array
 *         """
 *         cdef int ndims = 0, *isizes = NULL             # <<<<<<<<<<<<<<
 *         cdef int *isubsizes = NULL, *istarts = NULL
 *         sizes    = getarray_int(sizes,    &ndims, &isizes   )
 */
  __pyx_v_ndims = 0;
  __pyx_v_isizes = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":210
 *         """
 *         cdef int ndims = 0, *isizes = NULL
 *         cdef int *isubsizes = NULL, *istarts = NULL             # <<<<<<<<<<<<<<
 *         sizes    = getarray_int(sizes,    &ndims, &isizes   )
 *         subsizes = chkarray_int(subsizes,  ndims, &isubsizes)
 */
  __pyx_v_isubsizes = NULL;
  __pyx_v_istarts = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":211
 *         cdef int ndims = 0, *isizes = NULL
 *         cdef int *isubsizes = NULL, *istarts = NULL
 *         sizes    = getarray_int(sizes,    &ndims, &isizes   )             # <<<<<<<<<<<<<<
 *         subsizes = chkarray_int(subsizes,  ndims, &isubsizes)
 *         starts   = chkarray_int(starts,    ndims, &istarts  )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_getarray_int(__pyx_v_sizes, (&__pyx_v_ndims), (&__pyx_v_isizes)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_sizes);
  __pyx_v_sizes = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":212
 *         cdef int *isubsizes = NULL, *istarts = NULL
 *         sizes    = getarray_int(sizes,    &ndims, &isizes   )
 *         subsizes = chkarray_int(subsizes,  ndims, &isubsizes)             # <<<<<<<<<<<<<<
 *         starts   = chkarray_int(starts,    ndims, &istarts  )
 *         cdef int iorder = MPI_ORDER_C
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_chkarray_int(__pyx_v_subsizes, __pyx_v_ndims, (&__pyx_v_isubsizes)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_subsizes);
  __pyx_v_subsizes = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":213
 *         sizes    = getarray_int(sizes,    &ndims, &isizes   )
 *         subsizes = chkarray_int(subsizes,  ndims, &isubsizes)
 *         starts   = chkarray_int(starts,    ndims, &istarts  )             # <<<<<<<<<<<<<<
 *         cdef int iorder = MPI_ORDER_C
 *         if order is not None: iorder = order
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_chkarray_int(__pyx_v_starts, __pyx_v_ndims, (&__pyx_v_istarts)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_starts);
  __pyx_v_starts = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":214
 *         subsizes = chkarray_int(subsizes,  ndims, &isubsizes)
 *         starts   = chkarray_int(starts,    ndims, &istarts  )
 *         cdef int iorder = MPI_ORDER_C             # <<<<<<<<<<<<<<
 *         if order is not None: iorder = order
 *         #
 */
  __pyx_v_iorder = MPI_ORDER_C;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":215
 *         starts   = chkarray_int(starts,    ndims, &istarts  )
 *         cdef int iorder = MPI_ORDER_C
 *         if order is not None: iorder = order             # <<<<<<<<<<<<<<
 *         #
 *         cdef Datatype datatype = <Datatype>type(self)()
 */
  __pyx_t_1 = PyInt_FromLong(__pyx_v_order); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__pyx_t_1 != Py_None);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {
    __pyx_v_iorder = __pyx_v_order;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":217
 *         if order is not None: iorder = order
 *         #
 *         cdef Datatype datatype = <Datatype>type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_subarray(ndims, isizes,
 *                                          isubsizes, istarts,
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_1)));
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":221
 *                                          isubsizes, istarts,
 *                                          iorder, self.ob_mpi,
 *                                          &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_subarray(__pyx_v_ndims, __pyx_v_isizes, __pyx_v_isubsizes, __pyx_v_istarts, __pyx_v_iorder, ((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":222
 *                                          iorder, self.ob_mpi,
 *                                          &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     def Create_darray(self, int size, int rank,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_datatype));
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_subarray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XDECREF(__pyx_v_sizes);
  __Pyx_XDECREF(__pyx_v_subsizes);
  __Pyx_XDECREF(__pyx_v_starts);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":224
 *         return datatype
 * 
 *     def Create_darray(self, int size, int rank,             # <<<<<<<<<<<<<<
 *                       gsizes, distribs, dargs, psizes,
 *                       int order=ORDER_C):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_14Create_darray(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_14Create_darray[] = "Datatype.Create_darray(self, int size, int rank, gsizes, distribs, dargs, psizes, int order=ORDER_C)\n\n        Create a datatype representing an HPF-like\n        distributed array on Cartesian process grids\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_14Create_darray(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_size;
  int __pyx_v_rank;
  PyObject *__pyx_v_gsizes = 0;
  PyObject *__pyx_v_distribs = 0;
  PyObject *__pyx_v_dargs = 0;
  PyObject *__pyx_v_psizes = 0;
  int __pyx_v_order;
  int __pyx_v_ndims;
  int *__pyx_v_igsizes;
  int *__pyx_v_idistribs;
  int *__pyx_v_idargs;
  int *__pyx_v_ipsizes;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__size,&__pyx_n_s__rank,&__pyx_n_s__gsizes,&__pyx_n_s__distribs,&__pyx_n_s__dargs,&__pyx_n_s__psizes,&__pyx_n_s__order,0};
  __Pyx_RefNannySetupContext("Create_darray");
  {
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__size);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__rank);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_darray", 0, 6, 7, 1); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__gsizes);
        if (likely(values[2])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_darray", 0, 6, 7, 2); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__distribs);
        if (likely(values[3])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_darray", 0, 6, 7, 3); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  4:
        values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dargs);
        if (likely(values[4])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_darray", 0, 6, 7, 4); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  5:
        values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__psizes);
        if (likely(values[5])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_darray", 0, 6, 7, 5); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  6:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__order);
          if (value) { values[6] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create_darray") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_size = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_rank = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_gsizes = values[2];
    __pyx_v_distribs = values[3];
    __pyx_v_dargs = values[4];
    __pyx_v_psizes = values[5];
    if (values[6]) {
      __pyx_v_order = __Pyx_PyInt_AsInt(values[6]); if (unlikely((__pyx_v_order == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_order = __pyx_k_59;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_darray", 0, 6, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_darray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_gsizes);
  __Pyx_INCREF(__pyx_v_distribs);
  __Pyx_INCREF(__pyx_v_dargs);
  __Pyx_INCREF(__pyx_v_psizes);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":231
 *         distributed array on Cartesian process grids
 *         """
 *         cdef int ndims = 0, *igsizes = NULL             # <<<<<<<<<<<<<<
 *         cdef int *idistribs = NULL, *idargs = NULL, *ipsizes = NULL
 *         gsizes   = getarray_int(gsizes,  &ndims, &igsizes   )
 */
  __pyx_v_ndims = 0;
  __pyx_v_igsizes = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":232
 *         """
 *         cdef int ndims = 0, *igsizes = NULL
 *         cdef int *idistribs = NULL, *idargs = NULL, *ipsizes = NULL             # <<<<<<<<<<<<<<
 *         gsizes   = getarray_int(gsizes,  &ndims, &igsizes   )
 *         distribs = chkarray_int(distribs, ndims, &idistribs )
 */
  __pyx_v_idistribs = NULL;
  __pyx_v_idargs = NULL;
  __pyx_v_ipsizes = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":233
 *         cdef int ndims = 0, *igsizes = NULL
 *         cdef int *idistribs = NULL, *idargs = NULL, *ipsizes = NULL
 *         gsizes   = getarray_int(gsizes,  &ndims, &igsizes   )             # <<<<<<<<<<<<<<
 *         distribs = chkarray_int(distribs, ndims, &idistribs )
 *         dargs    = chkarray_int(dargs,    ndims, &idargs    )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_getarray_int(__pyx_v_gsizes, (&__pyx_v_ndims), (&__pyx_v_igsizes)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_gsizes);
  __pyx_v_gsizes = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":234
 *         cdef int *idistribs = NULL, *idargs = NULL, *ipsizes = NULL
 *         gsizes   = getarray_int(gsizes,  &ndims, &igsizes   )
 *         distribs = chkarray_int(distribs, ndims, &idistribs )             # <<<<<<<<<<<<<<
 *         dargs    = chkarray_int(dargs,    ndims, &idargs    )
 *         psizes   = chkarray_int(psizes,   ndims, &ipsizes   )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_chkarray_int(__pyx_v_distribs, __pyx_v_ndims, (&__pyx_v_idistribs)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_distribs);
  __pyx_v_distribs = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":235
 *         gsizes   = getarray_int(gsizes,  &ndims, &igsizes   )
 *         distribs = chkarray_int(distribs, ndims, &idistribs )
 *         dargs    = chkarray_int(dargs,    ndims, &idargs    )             # <<<<<<<<<<<<<<
 *         psizes   = chkarray_int(psizes,   ndims, &ipsizes   )
 *         #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_chkarray_int(__pyx_v_dargs, __pyx_v_ndims, (&__pyx_v_idargs)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_dargs);
  __pyx_v_dargs = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":236
 *         distribs = chkarray_int(distribs, ndims, &idistribs )
 *         dargs    = chkarray_int(dargs,    ndims, &idargs    )
 *         psizes   = chkarray_int(psizes,   ndims, &ipsizes   )             # <<<<<<<<<<<<<<
 *         #
 *         cdef Datatype datatype = <Datatype>type(self)()
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_chkarray_int(__pyx_v_psizes, __pyx_v_ndims, (&__pyx_v_ipsizes)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_psizes);
  __pyx_v_psizes = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":238
 *         psizes   = chkarray_int(psizes,   ndims, &ipsizes   )
 *         #
 *         cdef Datatype datatype = <Datatype>type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_darray(size, rank, ndims, igsizes,
 *                                        idistribs, idargs, ipsizes,
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_1)));
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":242
 *                                        idistribs, idargs, ipsizes,
 *                                        order, self.ob_mpi,
 *                                        &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_darray(__pyx_v_size, __pyx_v_rank, __pyx_v_ndims, __pyx_v_igsizes, __pyx_v_idistribs, __pyx_v_idargs, __pyx_v_ipsizes, __pyx_v_order, ((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":243
 *                                        order, self.ob_mpi,
 *                                        &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_datatype));
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_darray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XDECREF(__pyx_v_gsizes);
  __Pyx_XDECREF(__pyx_v_distribs);
  __Pyx_XDECREF(__pyx_v_dargs);
  __Pyx_XDECREF(__pyx_v_psizes);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":246
 * 
 *     @classmethod
 *     def Create_struct(cls, blocklengths, displacements, datatypes):             # <<<<<<<<<<<<<<
 *         """
 *         Create an datatype from a general set of
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_15Create_struct(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_15Create_struct[] = "Datatype.Create_struct(type cls, blocklengths, displacements, datatypes)\n\n        Create an datatype from a general set of\n        block sizes, displacements and datatypes\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_15Create_struct(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_blocklengths = 0;
  PyObject *__pyx_v_displacements = 0;
  PyObject *__pyx_v_datatypes = 0;
  int __pyx_v_count;
  int *__pyx_v_iblen;
  MPI_Aint *__pyx_v_idisp;
  MPI_Datatype *__pyx_v_ptype;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__blocklengths,&__pyx_n_s__displacements,&__pyx_n_s__datatypes,0};
  __Pyx_RefNannySetupContext("Create_struct");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__blocklengths);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__displacements);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_struct", 1, 3, 3, 1); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__datatypes);
        if (likely(values[2])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_struct", 1, 3, 3, 2); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create_struct") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_blocklengths = values[0];
    __pyx_v_displacements = values[1];
    __pyx_v_datatypes = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_struct", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_struct", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_blocklengths);
  __Pyx_INCREF(__pyx_v_displacements);
  __Pyx_INCREF(__pyx_v_datatypes);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":251
 *         block sizes, displacements and datatypes
 *         """
 *         cdef int count = 0, *iblen = NULL             # <<<<<<<<<<<<<<
 *         blocklengths = getarray_int(blocklengths, &count, &iblen)
 *         cdef MPI_Aint *idisp = NULL
 */
  __pyx_v_count = 0;
  __pyx_v_iblen = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":252
 *         """
 *         cdef int count = 0, *iblen = NULL
 *         blocklengths = getarray_int(blocklengths, &count, &iblen)             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint *idisp = NULL
 *         displacements = asarray_Aint(displacements, count, &idisp)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_getarray_int(__pyx_v_blocklengths, (&__pyx_v_count), (&__pyx_v_iblen)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_blocklengths);
  __pyx_v_blocklengths = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":253
 *         cdef int count = 0, *iblen = NULL
 *         blocklengths = getarray_int(blocklengths, &count, &iblen)
 *         cdef MPI_Aint *idisp = NULL             # <<<<<<<<<<<<<<
 *         displacements = asarray_Aint(displacements, count, &idisp)
 *         cdef MPI_Datatype *ptype = NULL
 */
  __pyx_v_idisp = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":254
 *         blocklengths = getarray_int(blocklengths, &count, &iblen)
 *         cdef MPI_Aint *idisp = NULL
 *         displacements = asarray_Aint(displacements, count, &idisp)             # <<<<<<<<<<<<<<
 *         cdef MPI_Datatype *ptype = NULL
 *         datatypes = asarray_Datatype(datatypes, count, &ptype)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asarray_Aint(__pyx_v_displacements, __pyx_v_count, (&__pyx_v_idisp)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_displacements);
  __pyx_v_displacements = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":255
 *         cdef MPI_Aint *idisp = NULL
 *         displacements = asarray_Aint(displacements, count, &idisp)
 *         cdef MPI_Datatype *ptype = NULL             # <<<<<<<<<<<<<<
 *         datatypes = asarray_Datatype(datatypes, count, &ptype)
 *         #
 */
  __pyx_v_ptype = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":256
 *         displacements = asarray_Aint(displacements, count, &idisp)
 *         cdef MPI_Datatype *ptype = NULL
 *         datatypes = asarray_Datatype(datatypes, count, &ptype)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Datatype datatype = <Datatype>cls()
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asarray_Datatype(__pyx_v_datatypes, __pyx_v_count, (&__pyx_v_ptype)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_datatypes);
  __pyx_v_datatypes = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":258
 *         datatypes = asarray_Datatype(datatypes, count, &ptype)
 *         #
 *         cdef Datatype datatype = <Datatype>cls()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_struct(count, iblen, idisp, ptype,
 *                                        &datatype.ob_mpi) )
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_1)));
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":260
 *         cdef Datatype datatype = <Datatype>cls()
 *         CHKERR( MPI_Type_create_struct(count, iblen, idisp, ptype,
 *                                        &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_struct(__pyx_v_count, __pyx_v_iblen, __pyx_v_idisp, __pyx_v_ptype, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":261
 *         CHKERR( MPI_Type_create_struct(count, iblen, idisp, ptype,
 *                                        &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     # Parametrized and size-specific Fortran Datatypes
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_datatype));
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_struct", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XDECREF(__pyx_v_blocklengths);
  __Pyx_XDECREF(__pyx_v_displacements);
  __Pyx_XDECREF(__pyx_v_datatypes);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":267
 * 
 *     @classmethod
 *     def Create_f90_integer(cls, int r):             # <<<<<<<<<<<<<<
 *         """
 *         Return a bounded integer datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_16Create_f90_integer(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_16Create_f90_integer[] = "Datatype.Create_f90_integer(type cls, int r)\n\n        Return a bounded integer datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_16Create_f90_integer(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_r;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__r,0};
  __Pyx_RefNannySetupContext("Create_f90_integer");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__r);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create_f90_integer") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_r = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_r == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_f90_integer", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_f90_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":271
 *         Return a bounded integer datatype
 *         """
 *         cdef Datatype datatype = <Datatype>cls()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_f90_integer(r, &datatype.ob_mpi) )
 *         return datatype
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_1)));
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":272
 *         """
 *         cdef Datatype datatype = <Datatype>cls()
 *         CHKERR( MPI_Type_create_f90_integer(r, &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_f90_integer(__pyx_v_r, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":273
 *         cdef Datatype datatype = <Datatype>cls()
 *         CHKERR( MPI_Type_create_f90_integer(r, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_datatype));
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_f90_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":276
 * 
 *     @classmethod
 *     def Create_f90_real(cls, int p, int r):             # <<<<<<<<<<<<<<
 *         """
 *         Return a bounded real datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_17Create_f90_real(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_17Create_f90_real[] = "Datatype.Create_f90_real(type cls, int p, int r)\n\n        Return a bounded real datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_17Create_f90_real(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_p;
  int __pyx_v_r;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__p,&__pyx_n_s__r,0};
  __Pyx_RefNannySetupContext("Create_f90_real");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__p);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__r);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_f90_real", 1, 2, 2, 1); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create_f90_real") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_p = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_p == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_r = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_r == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_f90_real", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_f90_real", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":280
 *         Return a bounded real datatype
 *         """
 *         cdef Datatype datatype = <Datatype>cls()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_f90_real(p, r, &datatype.ob_mpi) )
 *         return datatype
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_1)));
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":281
 *         """
 *         cdef Datatype datatype = <Datatype>cls()
 *         CHKERR( MPI_Type_create_f90_real(p, r, &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_f90_real(__pyx_v_p, __pyx_v_r, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":282
 *         cdef Datatype datatype = <Datatype>cls()
 *         CHKERR( MPI_Type_create_f90_real(p, r, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_datatype));
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_f90_real", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":285
 * 
 *     @classmethod
 *     def Create_f90_complex(cls, int p, int r):             # <<<<<<<<<<<<<<
 *         """
 *         Return a bounded complex datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_18Create_f90_complex(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_18Create_f90_complex[] = "Datatype.Create_f90_complex(type cls, int p, int r)\n\n        Return a bounded complex datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_18Create_f90_complex(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_p;
  int __pyx_v_r;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__p,&__pyx_n_s__r,0};
  __Pyx_RefNannySetupContext("Create_f90_complex");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__p);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__r);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_f90_complex", 1, 2, 2, 1); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create_f90_complex") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_p = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_p == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_r = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_r == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_f90_complex", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_f90_complex", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":289
 *         Return a bounded complex datatype
 *         """
 *         cdef Datatype datatype = <Datatype>cls()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_f90_complex(p, r, &datatype.ob_mpi) )
 *         return datatype
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_1)));
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":290
 *         """
 *         cdef Datatype datatype = <Datatype>cls()
 *         CHKERR( MPI_Type_create_f90_complex(p, r, &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_f90_complex(__pyx_v_p, __pyx_v_r, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":291
 *         cdef Datatype datatype = <Datatype>cls()
 *         CHKERR( MPI_Type_create_f90_complex(p, r, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_datatype));
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_f90_complex", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":294
 * 
 *     @classmethod
 *     def Match_size(cls, int typeclass, int size):             # <<<<<<<<<<<<<<
 *         """
 *         Find a datatype matching a specified size in bytes
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_19Match_size(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_19Match_size[] = "Datatype.Match_size(type cls, int typeclass, int size)\n\n        Find a datatype matching a specified size in bytes\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_19Match_size(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_typeclass;
  int __pyx_v_size;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__typeclass,&__pyx_n_s__size,0};
  __Pyx_RefNannySetupContext("Match_size");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__typeclass);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__size);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Match_size", 1, 2, 2, 1); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Match_size") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_typeclass = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_typeclass == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_size = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Match_size", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Match_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":298
 *         Find a datatype matching a specified size in bytes
 *         """
 *         cdef Datatype datatype = <Datatype>cls()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_match_size(typeclass, size, &datatype.ob_mpi) )
 *         return datatype
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_1)));
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":299
 *         """
 *         cdef Datatype datatype = <Datatype>cls()
 *         CHKERR( MPI_Type_match_size(typeclass, size, &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_match_size(__pyx_v_typeclass, __pyx_v_size, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":300
 *         cdef Datatype datatype = <Datatype>cls()
 *         CHKERR( MPI_Type_match_size(typeclass, size, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     # Use of Derived Datatypes
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_datatype));
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Match_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":305
 *     # ------------------------
 * 
 *     def Commit(self):             # <<<<<<<<<<<<<<
 *         """
 *         Commit the datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_20Commit(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_20Commit[] = "Datatype.Commit(self)\n\n        Commit the datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_20Commit(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Commit");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Commit", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Commit", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":309
 *         Commit the datatype
 *         """
 *         CHKERR( MPI_Type_commit(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_commit((&((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":310
 *         """
 *         CHKERR( MPI_Type_commit(&self.ob_mpi) )
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def Free(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self);
  __pyx_r = __pyx_v_self;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Commit", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":312
 *         return self
 * 
 *     def Free(self):             # <<<<<<<<<<<<<<
 *         """
 *         Free the datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_21Free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_21Free[] = "Datatype.Free(self)\n\n        Free the datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_21Free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Free");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Free", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Free", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":316
 *         Free the datatype
 *         """
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Datatype Resizing
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_free((&((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":321
 *     # -----------------
 * 
 *     def Create_resized(self, Aint lb, Aint extent):             # <<<<<<<<<<<<<<
 *         """
 *         Create a datatype with a new lower bound and extent
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_22Create_resized(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_22Create_resized[] = "Datatype.Create_resized(self, Aint lb, Aint extent)\n\n        Create a datatype with a new lower bound and extent\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_22Create_resized(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Aint __pyx_v_lb;
  MPI_Aint __pyx_v_extent;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__lb,&__pyx_n_s__extent,0};
  __Pyx_RefNannySetupContext("Create_resized");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lb);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__extent);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_resized", 1, 2, 2, 1); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create_resized") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_lb = __Pyx_PyInt_from_py_MPI_Aint(values[0]); if (unlikely((__pyx_v_lb == (MPI_Aint)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_extent = __Pyx_PyInt_from_py_MPI_Aint(values[1]); if (unlikely((__pyx_v_extent == (MPI_Aint)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_resized", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_resized", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":325
 *         Create a datatype with a new lower bound and extent
 *         """
 *         cdef Datatype datatype = <Datatype>type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_resized(self.ob_mpi,
 *                                         lb, extent,
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_1)));
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":328
 *         CHKERR( MPI_Type_create_resized(self.ob_mpi,
 *                                         lb, extent,
 *                                         &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_resized(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, __pyx_v_lb, __pyx_v_extent, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":329
 *                                         lb, extent,
 *                                         &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     Resized = Create_resized #: compatibility alias
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_datatype));
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_resized", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":333
 *     Resized = Create_resized #: compatibility alias
 * 
 *     def Get_true_extent(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the true lower bound and extent of a datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_23Get_true_extent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_23Get_true_extent[] = "Datatype.Get_true_extent(self)\n\n        Return the true lower bound and extent of a datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_23Get_true_extent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Aint __pyx_v_lb;
  MPI_Aint __pyx_v_extent;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_true_extent");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_true_extent", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_true_extent", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":337
 *         Return the true lower bound and extent of a datatype
 *         """
 *         cdef MPI_Aint lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_true_extent(self.ob_mpi,
 *                                          &lb, &extent) )
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":339
 *         cdef MPI_Aint lb = 0, extent = 0
 *         CHKERR( MPI_Type_get_true_extent(self.ob_mpi,
 *                                          &lb, &extent) )             # <<<<<<<<<<<<<<
 *         return (lb, extent)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_true_extent(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":340
 *         CHKERR( MPI_Type_get_true_extent(self.ob_mpi,
 *                                          &lb, &extent) )
 *         return (lb, extent)             # <<<<<<<<<<<<<<
 * 
 *     property true_extent:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_lb); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_extent); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_r = ((PyObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Get_true_extent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":344
 *     property true_extent:
 *         """true extent"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef MPI_Aint lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_true_extent(self.ob_mpi,
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_11true_extent___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_11true_extent___get__(PyObject *__pyx_v_self) {
  MPI_Aint __pyx_v_lb;
  MPI_Aint __pyx_v_extent;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":345
 *         """true extent"""
 *         def __get__(self):
 *             cdef MPI_Aint lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Type_get_true_extent(self.ob_mpi,
 *                                              &lb, &extent) )
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":347
 *             cdef MPI_Aint lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_true_extent(self.ob_mpi,
 *                                              &lb, &extent) )             # <<<<<<<<<<<<<<
 *             return extent
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_true_extent(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":348
 *             CHKERR( MPI_Type_get_true_extent(self.ob_mpi,
 *                                              &lb, &extent) )
 *             return extent             # <<<<<<<<<<<<<<
 * 
 *     property true_lb:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_extent); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.true_extent.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":352
 *     property true_lb:
 *         """true lower bound"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef MPI_Aint lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_true_extent(self.ob_mpi,
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_7true_lb___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_7true_lb___get__(PyObject *__pyx_v_self) {
  MPI_Aint __pyx_v_lb;
  MPI_Aint __pyx_v_extent;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":353
 *         """true lower bound"""
 *         def __get__(self):
 *             cdef MPI_Aint lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Type_get_true_extent(self.ob_mpi,
 *                                              &lb, &extent) )
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":355
 *             cdef MPI_Aint lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_true_extent(self.ob_mpi,
 *                                              &lb, &extent) )             # <<<<<<<<<<<<<<
 *             return lb
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_true_extent(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":356
 *             CHKERR( MPI_Type_get_true_extent(self.ob_mpi,
 *                                              &lb, &extent) )
 *             return lb             # <<<<<<<<<<<<<<
 * 
 *     property true_ub:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_lb); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.true_lb.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":360
 *     property true_ub:
 *         """true upper bound"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef MPI_Aint lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_true_extent(self.ob_mpi, &lb,
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_7true_ub___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_7true_ub___get__(PyObject *__pyx_v_self) {
  MPI_Aint __pyx_v_lb;
  MPI_Aint __pyx_v_extent;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":361
 *         """true upper bound"""
 *         def __get__(self):
 *             cdef MPI_Aint lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Type_get_true_extent(self.ob_mpi, &lb,
 *                                              &extent) )
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":363
 *             cdef MPI_Aint lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_true_extent(self.ob_mpi, &lb,
 *                                              &extent) )             # <<<<<<<<<<<<<<
 *             return lb + extent
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_true_extent(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":364
 *             CHKERR( MPI_Type_get_true_extent(self.ob_mpi, &lb,
 *                                              &extent) )
 *             return lb + extent             # <<<<<<<<<<<<<<
 * 
 *     # Decoding a Datatype
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_to_py_MPI_Aint((__pyx_v_lb + __pyx_v_extent)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.true_ub.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":369
 *     # -------------------
 * 
 *     def Get_envelope(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return information on the number and type of input arguments
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_24Get_envelope(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_24Get_envelope[] = "Datatype.Get_envelope(self)\n\n        Return information on the number and type of input arguments\n        used in the call that created a datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_24Get_envelope(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_ni;
  int __pyx_v_na;
  int __pyx_v_nd;
  int __pyx_v_combiner;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_envelope");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_envelope", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_envelope", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":374
 *         used in the call that created a datatype
 *         """
 *         cdef int ni = 0, na = 0, nd = 0, combiner = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_envelope(self.ob_mpi, &ni, &na, &nd, &combiner) )
 *         return (ni, na, nd, combiner)
 */
  __pyx_v_ni = 0;
  __pyx_v_na = 0;
  __pyx_v_nd = 0;
  __pyx_v_combiner = MPI_UNDEFINED;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":375
 *         """
 *         cdef int ni = 0, na = 0, nd = 0, combiner = MPI_UNDEFINED
 *         CHKERR( MPI_Type_get_envelope(self.ob_mpi, &ni, &na, &nd, &combiner) )             # <<<<<<<<<<<<<<
 *         return (ni, na, nd, combiner)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_envelope(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_ni), (&__pyx_v_na), (&__pyx_v_nd), (&__pyx_v_combiner))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":376
 *         cdef int ni = 0, na = 0, nd = 0, combiner = MPI_UNDEFINED
 *         CHKERR( MPI_Type_get_envelope(self.ob_mpi, &ni, &na, &nd, &combiner) )
 *         return (ni, na, nd, combiner)             # <<<<<<<<<<<<<<
 * 
 *     def Get_contents(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_ni); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromLong(__pyx_v_na); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyInt_FromLong(__pyx_v_nd); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyInt_FromLong(__pyx_v_combiner); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_6));
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_r = ((PyObject *)__pyx_t_6);
  __pyx_t_6 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Get_envelope", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":378
 *         return (ni, na, nd, combiner)
 * 
 *     def Get_contents(self):             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve the actual arguments used in the call that created a
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_25Get_contents(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_25Get_contents[] = "Datatype.Get_contents(self)\n\n        Retrieve the actual arguments used in the call that created a\n        datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_25Get_contents(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_ni;
  int __pyx_v_na;
  int __pyx_v_nd;
  int __pyx_v_combiner;
  int *__pyx_v_i;
  MPI_Aint *__pyx_v_a;
  MPI_Datatype *__pyx_v_d;
  PyObject *__pyx_v_tmp1 = 0;
  PyObject *__pyx_v_tmp2 = 0;
  PyObject *__pyx_v_tmp3 = 0;
  int __pyx_v_k;
  PyObject *__pyx_v_integers = 0;
  PyObject *__pyx_v_addresses = 0;
  PyObject *__pyx_v_datatypes = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_contents");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_contents", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_contents", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":383
 *         datatype
 *         """
 *         cdef int ni = 0, na = 0, nd = 0, combiner = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_envelope(self.ob_mpi, &ni, &na, &nd, &combiner) )
 *         cdef int *i = NULL
 */
  __pyx_v_ni = 0;
  __pyx_v_na = 0;
  __pyx_v_nd = 0;
  __pyx_v_combiner = MPI_UNDEFINED;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":384
 *         """
 *         cdef int ni = 0, na = 0, nd = 0, combiner = MPI_UNDEFINED
 *         CHKERR( MPI_Type_get_envelope(self.ob_mpi, &ni, &na, &nd, &combiner) )             # <<<<<<<<<<<<<<
 *         cdef int *i = NULL
 *         cdef MPI_Aint *a = NULL
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_envelope(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_ni), (&__pyx_v_na), (&__pyx_v_nd), (&__pyx_v_combiner))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":385
 *         cdef int ni = 0, na = 0, nd = 0, combiner = MPI_UNDEFINED
 *         CHKERR( MPI_Type_get_envelope(self.ob_mpi, &ni, &na, &nd, &combiner) )
 *         cdef int *i = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint *a = NULL
 *         cdef MPI_Datatype *d = NULL
 */
  __pyx_v_i = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":386
 *         CHKERR( MPI_Type_get_envelope(self.ob_mpi, &ni, &na, &nd, &combiner) )
 *         cdef int *i = NULL
 *         cdef MPI_Aint *a = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Datatype *d = NULL
 *         cdef tmp1 = allocate(ni, sizeof(int), <void**>&i)
 */
  __pyx_v_a = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":387
 *         cdef int *i = NULL
 *         cdef MPI_Aint *a = NULL
 *         cdef MPI_Datatype *d = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp1 = allocate(ni, sizeof(int), <void**>&i)
 *         cdef tmp2 = allocate(na, sizeof(MPI_Aint), <void**>&a)
 */
  __pyx_v_d = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":388
 *         cdef MPI_Aint *a = NULL
 *         cdef MPI_Datatype *d = NULL
 *         cdef tmp1 = allocate(ni, sizeof(int), <void**>&i)             # <<<<<<<<<<<<<<
 *         cdef tmp2 = allocate(na, sizeof(MPI_Aint), <void**>&a)
 *         cdef tmp3 = allocate(nd, sizeof(MPI_Datatype), <void**>&d)
 */
  __pyx_t_2 = PyMPI_Allocate(__pyx_v_ni, (sizeof(int)), ((void **)(&__pyx_v_i))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":389
 *         cdef MPI_Datatype *d = NULL
 *         cdef tmp1 = allocate(ni, sizeof(int), <void**>&i)
 *         cdef tmp2 = allocate(na, sizeof(MPI_Aint), <void**>&a)             # <<<<<<<<<<<<<<
 *         cdef tmp3 = allocate(nd, sizeof(MPI_Datatype), <void**>&d)
 *         CHKERR( MPI_Type_get_contents(self.ob_mpi, ni, na, nd, i, a, d) )
 */
  __pyx_t_2 = PyMPI_Allocate(__pyx_v_na, (sizeof(MPI_Aint)), ((void **)(&__pyx_v_a))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":390
 *         cdef tmp1 = allocate(ni, sizeof(int), <void**>&i)
 *         cdef tmp2 = allocate(na, sizeof(MPI_Aint), <void**>&a)
 *         cdef tmp3 = allocate(nd, sizeof(MPI_Datatype), <void**>&d)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_contents(self.ob_mpi, ni, na, nd, i, a, d) )
 *         cdef int k = 0
 */
  __pyx_t_2 = PyMPI_Allocate(__pyx_v_nd, (sizeof(MPI_Datatype)), ((void **)(&__pyx_v_d))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp3 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":391
 *         cdef tmp2 = allocate(na, sizeof(MPI_Aint), <void**>&a)
 *         cdef tmp3 = allocate(nd, sizeof(MPI_Datatype), <void**>&d)
 *         CHKERR( MPI_Type_get_contents(self.ob_mpi, ni, na, nd, i, a, d) )             # <<<<<<<<<<<<<<
 *         cdef int k = 0
 *         cdef object integers  = [i[k] for k from 0 <= k < ni]
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_contents(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, __pyx_v_ni, __pyx_v_na, __pyx_v_nd, __pyx_v_i, __pyx_v_a, __pyx_v_d)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":392
 *         cdef tmp3 = allocate(nd, sizeof(MPI_Datatype), <void**>&d)
 *         CHKERR( MPI_Type_get_contents(self.ob_mpi, ni, na, nd, i, a, d) )
 *         cdef int k = 0             # <<<<<<<<<<<<<<
 *         cdef object integers  = [i[k] for k from 0 <= k < ni]
 *         cdef object addresses = [a[k] for k from 0 <= k < na]
 */
  __pyx_v_k = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":393
 *         CHKERR( MPI_Type_get_contents(self.ob_mpi, ni, na, nd, i, a, d) )
 *         cdef int k = 0
 *         cdef object integers  = [i[k] for k from 0 <= k < ni]             # <<<<<<<<<<<<<<
 *         cdef object addresses = [a[k] for k from 0 <= k < na]
 *         cdef object datatypes = [new_Datatype(d[k]) for k from 0 <= k < nd]
 */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_1 = __pyx_v_ni;
  for (__pyx_v_k = 0; __pyx_v_k < __pyx_t_1; __pyx_v_k++) {
    __pyx_t_3 = PyInt_FromLong((__pyx_v_i[__pyx_v_k])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __pyx_v_integers = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":394
 *         cdef int k = 0
 *         cdef object integers  = [i[k] for k from 0 <= k < ni]
 *         cdef object addresses = [a[k] for k from 0 <= k < na]             # <<<<<<<<<<<<<<
 *         cdef object datatypes = [new_Datatype(d[k]) for k from 0 <= k < nd]
 *         return (integers, addresses, datatypes)
 */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_1 = __pyx_v_na;
  for (__pyx_v_k = 0; __pyx_v_k < __pyx_t_1; __pyx_v_k++) {
    __pyx_t_3 = __Pyx_PyInt_to_py_MPI_Aint((__pyx_v_a[__pyx_v_k])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __pyx_v_addresses = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":395
 *         cdef object integers  = [i[k] for k from 0 <= k < ni]
 *         cdef object addresses = [a[k] for k from 0 <= k < na]
 *         cdef object datatypes = [new_Datatype(d[k]) for k from 0 <= k < nd]             # <<<<<<<<<<<<<<
 *         return (integers, addresses, datatypes)
 * 
 */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_1 = __pyx_v_nd;
  for (__pyx_v_k = 0; __pyx_v_k < __pyx_t_1; __pyx_v_k++) {
    __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype((__pyx_v_d[__pyx_v_k]))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __pyx_v_datatypes = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":396
 *         cdef object addresses = [a[k] for k from 0 <= k < na]
 *         cdef object datatypes = [new_Datatype(d[k]) for k from 0 <= k < nd]
 *         return (integers, addresses, datatypes)             # <<<<<<<<<<<<<<
 * 
 *     def decode(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_integers);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_integers);
  __Pyx_GIVEREF(__pyx_v_integers);
  __Pyx_INCREF(__pyx_v_addresses);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_addresses);
  __Pyx_GIVEREF(__pyx_v_addresses);
  __Pyx_INCREF(__pyx_v_datatypes);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_datatypes);
  __Pyx_GIVEREF(__pyx_v_datatypes);
  __pyx_r = ((PyObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Get_contents", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_XDECREF(__pyx_v_tmp3);
  __Pyx_XDECREF(__pyx_v_integers);
  __Pyx_XDECREF(__pyx_v_addresses);
  __Pyx_XDECREF(__pyx_v_datatypes);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":398
 *         return (integers, addresses, datatypes)
 * 
 *     def decode(self):             # <<<<<<<<<<<<<<
 *         """
 *         Convenience method for decoding a datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_26decode(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_26decode[] = "Datatype.decode(self)\n\n        Convenience method for decoding a datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_26decode(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_ni;
  int __pyx_v_na;
  int __pyx_v_nd;
  int __pyx_v_combiner;
  int *__pyx_v_i;
  MPI_Aint *__pyx_v_a;
  MPI_Datatype *__pyx_v_d;
  PyObject *__pyx_v_tmp1 = 0;
  PyObject *__pyx_v_tmp2 = 0;
  PyObject *__pyx_v_tmp3 = 0;
  int __pyx_v_k;
  int __pyx_v_s1;
  int __pyx_v_e1;
  int __pyx_v_s2;
  int __pyx_v_e2;
  int __pyx_v_s3;
  int __pyx_v_e3;
  int __pyx_v_s4;
  int __pyx_v_e4;
  PyObject *__pyx_v_oldtype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("decode");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("decode", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "decode", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":403
 *         """
 *         # get the datatype envelope
 *         cdef int ni = 0, na = 0, nd = 0, combiner = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_envelope(self.ob_mpi, &ni, &na, &nd, &combiner) )
 *         # return self immediatly for named datatypes
 */
  __pyx_v_ni = 0;
  __pyx_v_na = 0;
  __pyx_v_nd = 0;
  __pyx_v_combiner = MPI_UNDEFINED;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":404
 *         # get the datatype envelope
 *         cdef int ni = 0, na = 0, nd = 0, combiner = MPI_UNDEFINED
 *         CHKERR( MPI_Type_get_envelope(self.ob_mpi, &ni, &na, &nd, &combiner) )             # <<<<<<<<<<<<<<
 *         # return self immediatly for named datatypes
 *         if combiner == MPI_COMBINER_NAMED: return self
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_envelope(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_ni), (&__pyx_v_na), (&__pyx_v_nd), (&__pyx_v_combiner))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":406
 *         CHKERR( MPI_Type_get_envelope(self.ob_mpi, &ni, &na, &nd, &combiner) )
 *         # return self immediatly for named datatypes
 *         if combiner == MPI_COMBINER_NAMED: return self             # <<<<<<<<<<<<<<
 *         # get the datatype contents
 *         cdef int *i = NULL
 */
  __pyx_t_2 = (__pyx_v_combiner == MPI_COMBINER_NAMED);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_self);
    __pyx_r = __pyx_v_self;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":408
 *         if combiner == MPI_COMBINER_NAMED: return self
 *         # get the datatype contents
 *         cdef int *i = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint *a = NULL
 *         cdef MPI_Datatype *d = NULL
 */
  __pyx_v_i = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":409
 *         # get the datatype contents
 *         cdef int *i = NULL
 *         cdef MPI_Aint *a = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Datatype *d = NULL
 *         cdef tmp1 = allocate(ni, sizeof(int), <void**>&i)
 */
  __pyx_v_a = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":410
 *         cdef int *i = NULL
 *         cdef MPI_Aint *a = NULL
 *         cdef MPI_Datatype *d = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp1 = allocate(ni, sizeof(int), <void**>&i)
 *         cdef tmp2 = allocate(na, sizeof(MPI_Aint), <void**>&a)
 */
  __pyx_v_d = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":411
 *         cdef MPI_Aint *a = NULL
 *         cdef MPI_Datatype *d = NULL
 *         cdef tmp1 = allocate(ni, sizeof(int), <void**>&i)             # <<<<<<<<<<<<<<
 *         cdef tmp2 = allocate(na, sizeof(MPI_Aint), <void**>&a)
 *         cdef tmp3 = allocate(nd, sizeof(MPI_Datatype), <void**>&d)
 */
  __pyx_t_3 = PyMPI_Allocate(__pyx_v_ni, (sizeof(int)), ((void **)(&__pyx_v_i))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_tmp1 = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":412
 *         cdef MPI_Datatype *d = NULL
 *         cdef tmp1 = allocate(ni, sizeof(int), <void**>&i)
 *         cdef tmp2 = allocate(na, sizeof(MPI_Aint), <void**>&a)             # <<<<<<<<<<<<<<
 *         cdef tmp3 = allocate(nd, sizeof(MPI_Datatype), <void**>&d)
 *         CHKERR( MPI_Type_get_contents(self.ob_mpi, ni, na, nd, i, a, d) )
 */
  __pyx_t_3 = PyMPI_Allocate(__pyx_v_na, (sizeof(MPI_Aint)), ((void **)(&__pyx_v_a))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_tmp2 = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":413
 *         cdef tmp1 = allocate(ni, sizeof(int), <void**>&i)
 *         cdef tmp2 = allocate(na, sizeof(MPI_Aint), <void**>&a)
 *         cdef tmp3 = allocate(nd, sizeof(MPI_Datatype), <void**>&d)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_contents(self.ob_mpi, ni, na, nd, i, a, d) )
 *         # manage in advance the contained datatypes
 */
  __pyx_t_3 = PyMPI_Allocate(__pyx_v_nd, (sizeof(MPI_Datatype)), ((void **)(&__pyx_v_d))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_tmp3 = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":414
 *         cdef tmp2 = allocate(na, sizeof(MPI_Aint), <void**>&a)
 *         cdef tmp3 = allocate(nd, sizeof(MPI_Datatype), <void**>&d)
 *         CHKERR( MPI_Type_get_contents(self.ob_mpi, ni, na, nd, i, a, d) )             # <<<<<<<<<<<<<<
 *         # manage in advance the contained datatypes
 *         cdef int k = 0, s1, e1, s2, e2, s3, e3, s4, e4
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_contents(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, __pyx_v_ni, __pyx_v_na, __pyx_v_nd, __pyx_v_i, __pyx_v_a, __pyx_v_d)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":416
 *         CHKERR( MPI_Type_get_contents(self.ob_mpi, ni, na, nd, i, a, d) )
 *         # manage in advance the contained datatypes
 *         cdef int k = 0, s1, e1, s2, e2, s3, e3, s4, e4             # <<<<<<<<<<<<<<
 *         cdef object oldtype = None
 *         if (combiner == <int>MPI_COMBINER_STRUCT or
 */
  __pyx_v_k = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":417
 *         # manage in advance the contained datatypes
 *         cdef int k = 0, s1, e1, s2, e2, s3, e3, s4, e4
 *         cdef object oldtype = None             # <<<<<<<<<<<<<<
 *         if (combiner == <int>MPI_COMBINER_STRUCT or
 *             combiner == <int>MPI_COMBINER_STRUCT_INTEGER):
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_oldtype = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":418
 *         cdef int k = 0, s1, e1, s2, e2, s3, e3, s4, e4
 *         cdef object oldtype = None
 *         if (combiner == <int>MPI_COMBINER_STRUCT or             # <<<<<<<<<<<<<<
 *             combiner == <int>MPI_COMBINER_STRUCT_INTEGER):
 *             oldtype = [new_Datatype(d[k]) for k from 0 <= k < nd]
 */
  __pyx_t_2 = (__pyx_v_combiner == ((int)MPI_COMBINER_STRUCT));
  if (!__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":419
 *         cdef object oldtype = None
 *         if (combiner == <int>MPI_COMBINER_STRUCT or
 *             combiner == <int>MPI_COMBINER_STRUCT_INTEGER):             # <<<<<<<<<<<<<<
 *             oldtype = [new_Datatype(d[k]) for k from 0 <= k < nd]
 *         elif (combiner != <int>MPI_COMBINER_F90_INTEGER and
 */
    __pyx_t_4 = (__pyx_v_combiner == ((int)MPI_COMBINER_STRUCT_INTEGER));
    __pyx_t_5 = __pyx_t_4;
  } else {
    __pyx_t_5 = __pyx_t_2;
  }
  if (__pyx_t_5) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":420
 *         if (combiner == <int>MPI_COMBINER_STRUCT or
 *             combiner == <int>MPI_COMBINER_STRUCT_INTEGER):
 *             oldtype = [new_Datatype(d[k]) for k from 0 <= k < nd]             # <<<<<<<<<<<<<<
 *         elif (combiner != <int>MPI_COMBINER_F90_INTEGER and
 *               combiner != <int>MPI_COMBINER_F90_REAL and
 */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_1 = __pyx_v_nd;
    for (__pyx_v_k = 0; __pyx_v_k < __pyx_t_1; __pyx_v_k++) {
      __pyx_t_6 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype((__pyx_v_d[__pyx_v_k]))); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(PyList_Append(__pyx_t_3, (PyObject*)__pyx_t_6))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_INCREF(((PyObject *)__pyx_t_3));
    __Pyx_DECREF(__pyx_v_oldtype);
    __pyx_v_oldtype = ((PyObject *)__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    goto __pyx_L6;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":421
 *             combiner == <int>MPI_COMBINER_STRUCT_INTEGER):
 *             oldtype = [new_Datatype(d[k]) for k from 0 <= k < nd]
 *         elif (combiner != <int>MPI_COMBINER_F90_INTEGER and             # <<<<<<<<<<<<<<
 *               combiner != <int>MPI_COMBINER_F90_REAL and
 *               combiner != <int>MPI_COMBINER_F90_COMPLEX):
 */
  __pyx_t_5 = (__pyx_v_combiner != ((int)MPI_COMBINER_F90_INTEGER));
  if (__pyx_t_5) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":422
 *             oldtype = [new_Datatype(d[k]) for k from 0 <= k < nd]
 *         elif (combiner != <int>MPI_COMBINER_F90_INTEGER and
 *               combiner != <int>MPI_COMBINER_F90_REAL and             # <<<<<<<<<<<<<<
 *               combiner != <int>MPI_COMBINER_F90_COMPLEX):
 *             oldtype = new_Datatype(d[0])
 */
    __pyx_t_2 = (__pyx_v_combiner != ((int)MPI_COMBINER_F90_REAL));
    if (__pyx_t_2) {

      /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":423
 *         elif (combiner != <int>MPI_COMBINER_F90_INTEGER and
 *               combiner != <int>MPI_COMBINER_F90_REAL and
 *               combiner != <int>MPI_COMBINER_F90_COMPLEX):             # <<<<<<<<<<<<<<
 *             oldtype = new_Datatype(d[0])
 *         # dispatch depending on the combiner value
 */
      __pyx_t_4 = (__pyx_v_combiner != ((int)MPI_COMBINER_F90_COMPLEX));
      __pyx_t_7 = __pyx_t_4;
    } else {
      __pyx_t_7 = __pyx_t_2;
    }
    __pyx_t_2 = __pyx_t_7;
  } else {
    __pyx_t_2 = __pyx_t_5;
  }
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":424
 *               combiner != <int>MPI_COMBINER_F90_REAL and
 *               combiner != <int>MPI_COMBINER_F90_COMPLEX):
 *             oldtype = new_Datatype(d[0])             # <<<<<<<<<<<<<<
 *         # dispatch depending on the combiner value
 *         if combiner == <int>MPI_COMBINER_DUP:
 */
    __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype((__pyx_v_d[0]))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_v_oldtype);
    __pyx_v_oldtype = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":426
 *             oldtype = new_Datatype(d[0])
 *         # dispatch depending on the combiner value
 *         if combiner == <int>MPI_COMBINER_DUP:             # <<<<<<<<<<<<<<
 *             return (oldtype, ('DUP'), {})
 *         elif combiner == <int>MPI_COMBINER_CONTIGUOUS:
 */
  __pyx_t_2 = (__pyx_v_combiner == ((int)MPI_COMBINER_DUP));
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":427
 *         # dispatch depending on the combiner value
 *         if combiner == <int>MPI_COMBINER_DUP:
 *             return (oldtype, ('DUP'), {})             # <<<<<<<<<<<<<<
 *         elif combiner == <int>MPI_COMBINER_CONTIGUOUS:
 *             return (oldtype, ('CONTIGUOUS'),
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __Pyx_INCREF(__pyx_v_oldtype);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_oldtype);
    __Pyx_GIVEREF(__pyx_v_oldtype);
    __Pyx_INCREF(((PyObject *)__pyx_n_s__DUP));
    PyTuple_SET_ITEM(__pyx_t_6, 1, ((PyObject *)__pyx_n_s__DUP));
    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__DUP));
    PyTuple_SET_ITEM(__pyx_t_6, 2, ((PyObject *)__pyx_t_3));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
    __pyx_t_3 = 0;
    __pyx_r = ((PyObject *)__pyx_t_6);
    __pyx_t_6 = 0;
    goto __pyx_L0;
    goto __pyx_L9;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":428
 *         if combiner == <int>MPI_COMBINER_DUP:
 *             return (oldtype, ('DUP'), {})
 *         elif combiner == <int>MPI_COMBINER_CONTIGUOUS:             # <<<<<<<<<<<<<<
 *             return (oldtype, ('CONTIGUOUS'),
 *                     {('count') : i[0]})
 */
  __pyx_t_2 = (__pyx_v_combiner == ((int)MPI_COMBINER_CONTIGUOUS));
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":429
 *             return (oldtype, ('DUP'), {})
 *         elif combiner == <int>MPI_COMBINER_CONTIGUOUS:
 *             return (oldtype, ('CONTIGUOUS'),             # <<<<<<<<<<<<<<
 *                     {('count') : i[0]})
 *         elif combiner == <int>MPI_COMBINER_VECTOR:
 */
    __Pyx_XDECREF(__pyx_r);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":430
 *         elif combiner == <int>MPI_COMBINER_CONTIGUOUS:
 *             return (oldtype, ('CONTIGUOUS'),
 *                     {('count') : i[0]})             # <<<<<<<<<<<<<<
 *         elif combiner == <int>MPI_COMBINER_VECTOR:
 *             return (oldtype, ('VECTOR'),
 */
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyInt_FromLong((__pyx_v_i[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__count), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __Pyx_INCREF(__pyx_v_oldtype);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_oldtype);
    __Pyx_GIVEREF(__pyx_v_oldtype);
    __Pyx_INCREF(((PyObject *)__pyx_n_s__CONTIGUOUS));
    PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_n_s__CONTIGUOUS));
    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__CONTIGUOUS));
    PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_r = ((PyObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L9;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":431
 *             return (oldtype, ('CONTIGUOUS'),
 *                     {('count') : i[0]})
 *         elif combiner == <int>MPI_COMBINER_VECTOR:             # <<<<<<<<<<<<<<
 *             return (oldtype, ('VECTOR'),
 *                     {('count')       : i[0],
 */
  __pyx_t_2 = (__pyx_v_combiner == ((int)MPI_COMBINER_VECTOR));
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":432
 *                     {('count') : i[0]})
 *         elif combiner == <int>MPI_COMBINER_VECTOR:
 *             return (oldtype, ('VECTOR'),             # <<<<<<<<<<<<<<
 *                     {('count')       : i[0],
 *                      ('blocklength') : i[1],
 */
    __Pyx_XDECREF(__pyx_r);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":433
 *         elif combiner == <int>MPI_COMBINER_VECTOR:
 *             return (oldtype, ('VECTOR'),
 *                     {('count')       : i[0],             # <<<<<<<<<<<<<<
 *                      ('blocklength') : i[1],
 *                      ('stride')      : i[2]})
 */
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_6 = PyInt_FromLong((__pyx_v_i[0])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__count), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":434
 *             return (oldtype, ('VECTOR'),
 *                     {('count')       : i[0],
 *                      ('blocklength') : i[1],             # <<<<<<<<<<<<<<
 *                      ('stride')      : i[2]})
 *         elif (combiner == <int>MPI_COMBINER_HVECTOR or
 */
    __pyx_t_6 = PyInt_FromLong((__pyx_v_i[1])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__blocklength), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":435
 *                     {('count')       : i[0],
 *                      ('blocklength') : i[1],
 *                      ('stride')      : i[2]})             # <<<<<<<<<<<<<<
 *         elif (combiner == <int>MPI_COMBINER_HVECTOR or
 *               combiner == <int>MPI_COMBINER_HVECTOR_INTEGER):
 */
    __pyx_t_6 = PyInt_FromLong((__pyx_v_i[2])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__stride), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __Pyx_INCREF(__pyx_v_oldtype);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_oldtype);
    __Pyx_GIVEREF(__pyx_v_oldtype);
    __Pyx_INCREF(((PyObject *)__pyx_n_s__VECTOR));
    PyTuple_SET_ITEM(__pyx_t_6, 1, ((PyObject *)__pyx_n_s__VECTOR));
    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__VECTOR));
    PyTuple_SET_ITEM(__pyx_t_6, 2, ((PyObject *)__pyx_t_3));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
    __pyx_t_3 = 0;
    __pyx_r = ((PyObject *)__pyx_t_6);
    __pyx_t_6 = 0;
    goto __pyx_L0;
    goto __pyx_L9;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":436
 *                      ('blocklength') : i[1],
 *                      ('stride')      : i[2]})
 *         elif (combiner == <int>MPI_COMBINER_HVECTOR or             # <<<<<<<<<<<<<<
 *               combiner == <int>MPI_COMBINER_HVECTOR_INTEGER):
 *             return (oldtype, ('HVECTOR'),
 */
  __pyx_t_2 = (__pyx_v_combiner == ((int)MPI_COMBINER_HVECTOR));
  if (!__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":437
 *                      ('stride')      : i[2]})
 *         elif (combiner == <int>MPI_COMBINER_HVECTOR or
 *               combiner == <int>MPI_COMBINER_HVECTOR_INTEGER):             # <<<<<<<<<<<<<<
 *             return (oldtype, ('HVECTOR'),
 *                     {('count')       : i[0],
 */
    __pyx_t_5 = (__pyx_v_combiner == ((int)MPI_COMBINER_HVECTOR_INTEGER));
    __pyx_t_7 = __pyx_t_5;
  } else {
    __pyx_t_7 = __pyx_t_2;
  }
  if (__pyx_t_7) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":438
 *         elif (combiner == <int>MPI_COMBINER_HVECTOR or
 *               combiner == <int>MPI_COMBINER_HVECTOR_INTEGER):
 *             return (oldtype, ('HVECTOR'),             # <<<<<<<<<<<<<<
 *                     {('count')       : i[0],
 *                      ('blocklength') : i[1],
 */
    __Pyx_XDECREF(__pyx_r);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":439
 *               combiner == <int>MPI_COMBINER_HVECTOR_INTEGER):
 *             return (oldtype, ('HVECTOR'),
 *                     {('count')       : i[0],             # <<<<<<<<<<<<<<
 *                      ('blocklength') : i[1],
 *                      ('stride')      : a[0]})
 */
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyInt_FromLong((__pyx_v_i[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__count), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":440
 *             return (oldtype, ('HVECTOR'),
 *                     {('count')       : i[0],
 *                      ('blocklength') : i[1],             # <<<<<<<<<<<<<<
 *                      ('stride')      : a[0]})
 *         elif combiner == <int>MPI_COMBINER_INDEXED:
 */
    __pyx_t_3 = PyInt_FromLong((__pyx_v_i[1])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__blocklength), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":441
 *                     {('count')       : i[0],
 *                      ('blocklength') : i[1],
 *                      ('stride')      : a[0]})             # <<<<<<<<<<<<<<
 *         elif combiner == <int>MPI_COMBINER_INDEXED:
 *             s1 =      1; e1 =   i[0]
 */
    __pyx_t_3 = __Pyx_PyInt_to_py_MPI_Aint((__pyx_v_a[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__stride), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __Pyx_INCREF(__pyx_v_oldtype);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_oldtype);
    __Pyx_GIVEREF(__pyx_v_oldtype);
    __Pyx_INCREF(((PyObject *)__pyx_n_s__HVECTOR));
    PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_n_s__HVECTOR));
    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__HVECTOR));
    PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_r = ((PyObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L9;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":442
 *                      ('blocklength') : i[1],
 *                      ('stride')      : a[0]})
 *         elif combiner == <int>MPI_COMBINER_INDEXED:             # <<<<<<<<<<<<<<
 *             s1 =      1; e1 =   i[0]
 *             s2 = i[0]+1; e2 = 2*i[0]
 */
  __pyx_t_7 = (__pyx_v_combiner == ((int)MPI_COMBINER_INDEXED));
  if (__pyx_t_7) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":443
 *                      ('stride')      : a[0]})
 *         elif combiner == <int>MPI_COMBINER_INDEXED:
 *             s1 =      1; e1 =   i[0]             # <<<<<<<<<<<<<<
 *             s2 = i[0]+1; e2 = 2*i[0]
 *             return (oldtype, ('INDEXED'),
 */
    __pyx_v_s1 = 1;
    __pyx_v_e1 = (__pyx_v_i[0]);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":444
 *         elif combiner == <int>MPI_COMBINER_INDEXED:
 *             s1 =      1; e1 =   i[0]
 *             s2 = i[0]+1; e2 = 2*i[0]             # <<<<<<<<<<<<<<
 *             return (oldtype, ('INDEXED'),
 *                     {('blocklengths')  : [i[k] for k from s1 <= k <= e1],
 */
    __pyx_v_s2 = ((__pyx_v_i[0]) + 1);
    __pyx_v_e2 = (2 * (__pyx_v_i[0]));

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":445
 *             s1 =      1; e1 =   i[0]
 *             s2 = i[0]+1; e2 = 2*i[0]
 *             return (oldtype, ('INDEXED'),             # <<<<<<<<<<<<<<
 *                     {('blocklengths')  : [i[k] for k from s1 <= k <= e1],
 *                      ('displacements') : [i[k] for k from s2 <= k <= e2]})
 */
    __Pyx_XDECREF(__pyx_r);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":446
 *             s2 = i[0]+1; e2 = 2*i[0]
 *             return (oldtype, ('INDEXED'),
 *                     {('blocklengths')  : [i[k] for k from s1 <= k <= e1],             # <<<<<<<<<<<<<<
 *                      ('displacements') : [i[k] for k from s2 <= k <= e2]})
 *         elif (combiner == <int>MPI_COMBINER_HINDEXED or
 */
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_1 = __pyx_v_e1;
    for (__pyx_v_k = __pyx_v_s1; __pyx_v_k <= __pyx_t_1; __pyx_v_k++) {
      __pyx_t_8 = PyInt_FromLong((__pyx_v_i[__pyx_v_k])); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      if (unlikely(PyList_Append(__pyx_t_6, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__blocklengths), ((PyObject *)__pyx_t_6)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":447
 *             return (oldtype, ('INDEXED'),
 *                     {('blocklengths')  : [i[k] for k from s1 <= k <= e1],
 *                      ('displacements') : [i[k] for k from s2 <= k <= e2]})             # <<<<<<<<<<<<<<
 *         elif (combiner == <int>MPI_COMBINER_HINDEXED or
 *               combiner == <int>MPI_COMBINER_HINDEXED_INTEGER):
 */
    __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_1 = __pyx_v_e2;
    for (__pyx_v_k = __pyx_v_s2; __pyx_v_k <= __pyx_t_1; __pyx_v_k++) {
      __pyx_t_8 = PyInt_FromLong((__pyx_v_i[__pyx_v_k])); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      if (unlikely(PyList_Append(__pyx_t_6, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__displacements), ((PyObject *)__pyx_t_6)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __Pyx_INCREF(__pyx_v_oldtype);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_oldtype);
    __Pyx_GIVEREF(__pyx_v_oldtype);
    __Pyx_INCREF(((PyObject *)__pyx_n_s__INDEXED));
    PyTuple_SET_ITEM(__pyx_t_6, 1, ((PyObject *)__pyx_n_s__INDEXED));
    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__INDEXED));
    PyTuple_SET_ITEM(__pyx_t_6, 2, ((PyObject *)__pyx_t_3));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
    __pyx_t_3 = 0;
    __pyx_r = ((PyObject *)__pyx_t_6);
    __pyx_t_6 = 0;
    goto __pyx_L0;
    goto __pyx_L9;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":448
 *                     {('blocklengths')  : [i[k] for k from s1 <= k <= e1],
 *                      ('displacements') : [i[k] for k from s2 <= k <= e2]})
 *         elif (combiner == <int>MPI_COMBINER_HINDEXED or             # <<<<<<<<<<<<<<
 *               combiner == <int>MPI_COMBINER_HINDEXED_INTEGER):
 *             s1 = 1; e1 = i[0]
 */
  __pyx_t_7 = (__pyx_v_combiner == ((int)MPI_COMBINER_HINDEXED));
  if (!__pyx_t_7) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":449
 *                      ('displacements') : [i[k] for k from s2 <= k <= e2]})
 *         elif (combiner == <int>MPI_COMBINER_HINDEXED or
 *               combiner == <int>MPI_COMBINER_HINDEXED_INTEGER):             # <<<<<<<<<<<<<<
 *             s1 = 1; e1 = i[0]
 *             s2 = 0; e2 = i[0]-1
 */
    __pyx_t_2 = (__pyx_v_combiner == ((int)MPI_COMBINER_HINDEXED_INTEGER));
    __pyx_t_5 = __pyx_t_2;
  } else {
    __pyx_t_5 = __pyx_t_7;
  }
  if (__pyx_t_5) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":450
 *         elif (combiner == <int>MPI_COMBINER_HINDEXED or
 *               combiner == <int>MPI_COMBINER_HINDEXED_INTEGER):
 *             s1 = 1; e1 = i[0]             # <<<<<<<<<<<<<<
 *             s2 = 0; e2 = i[0]-1
 *             return (oldtype, ('HINDEXED'),
 */
    __pyx_v_s1 = 1;
    __pyx_v_e1 = (__pyx_v_i[0]);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":451
 *               combiner == <int>MPI_COMBINER_HINDEXED_INTEGER):
 *             s1 = 1; e1 = i[0]
 *             s2 = 0; e2 = i[0]-1             # <<<<<<<<<<<<<<
 *             return (oldtype, ('HINDEXED'),
 *                     {('blocklengths')  : [i[k] for k from s1 <= k <= e1],
 */
    __pyx_v_s2 = 0;
    __pyx_v_e2 = ((__pyx_v_i[0]) - 1);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":452
 *             s1 = 1; e1 = i[0]
 *             s2 = 0; e2 = i[0]-1
 *             return (oldtype, ('HINDEXED'),             # <<<<<<<<<<<<<<
 *                     {('blocklengths')  : [i[k] for k from s1 <= k <= e1],
 *                      ('displacements') : [a[k] for k from s2 <= k <= e2]})
 */
    __Pyx_XDECREF(__pyx_r);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":453
 *             s2 = 0; e2 = i[0]-1
 *             return (oldtype, ('HINDEXED'),
 *                     {('blocklengths')  : [i[k] for k from s1 <= k <= e1],             # <<<<<<<<<<<<<<
 *                      ('displacements') : [a[k] for k from s2 <= k <= e2]})
 *         elif combiner == <int>MPI_COMBINER_INDEXED_BLOCK:
 */
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_1 = __pyx_v_e1;
    for (__pyx_v_k = __pyx_v_s1; __pyx_v_k <= __pyx_t_1; __pyx_v_k++) {
      __pyx_t_8 = PyInt_FromLong((__pyx_v_i[__pyx_v_k])); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      if (unlikely(PyList_Append(__pyx_t_3, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__blocklengths), ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":454
 *             return (oldtype, ('HINDEXED'),
 *                     {('blocklengths')  : [i[k] for k from s1 <= k <= e1],
 *                      ('displacements') : [a[k] for k from s2 <= k <= e2]})             # <<<<<<<<<<<<<<
 *         elif combiner == <int>MPI_COMBINER_INDEXED_BLOCK:
 *             s2 = 2; e2 = i[0]+1
 */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_1 = __pyx_v_e2;
    for (__pyx_v_k = __pyx_v_s2; __pyx_v_k <= __pyx_t_1; __pyx_v_k++) {
      __pyx_t_8 = __Pyx_PyInt_to_py_MPI_Aint((__pyx_v_a[__pyx_v_k])); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      if (unlikely(PyList_Append(__pyx_t_3, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__displacements), ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __Pyx_INCREF(__pyx_v_oldtype);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_oldtype);
    __Pyx_GIVEREF(__pyx_v_oldtype);
    __Pyx_INCREF(((PyObject *)__pyx_n_s__HINDEXED));
    PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_n_s__HINDEXED));
    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__HINDEXED));
    PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_r = ((PyObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L9;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":455
 *                     {('blocklengths')  : [i[k] for k from s1 <= k <= e1],
 *                      ('displacements') : [a[k] for k from s2 <= k <= e2]})
 *         elif combiner == <int>MPI_COMBINER_INDEXED_BLOCK:             # <<<<<<<<<<<<<<
 *             s2 = 2; e2 = i[0]+1
 *             return (oldtype, ('INDEXED_BLOCK'),
 */
  __pyx_t_5 = (__pyx_v_combiner == ((int)MPI_COMBINER_INDEXED_BLOCK));
  if (__pyx_t_5) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":456
 *                      ('displacements') : [a[k] for k from s2 <= k <= e2]})
 *         elif combiner == <int>MPI_COMBINER_INDEXED_BLOCK:
 *             s2 = 2; e2 = i[0]+1             # <<<<<<<<<<<<<<
 *             return (oldtype, ('INDEXED_BLOCK'),
 *                     {('blocklength')   : i[1],
 */
    __pyx_v_s2 = 2;
    __pyx_v_e2 = ((__pyx_v_i[0]) + 1);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":457
 *         elif combiner == <int>MPI_COMBINER_INDEXED_BLOCK:
 *             s2 = 2; e2 = i[0]+1
 *             return (oldtype, ('INDEXED_BLOCK'),             # <<<<<<<<<<<<<<
 *                     {('blocklength')   : i[1],
 *                      ('displacements') : [i[k] for k from s2 <= k <= e2]})
 */
    __Pyx_XDECREF(__pyx_r);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":458
 *             s2 = 2; e2 = i[0]+1
 *             return (oldtype, ('INDEXED_BLOCK'),
 *                     {('blocklength')   : i[1],             # <<<<<<<<<<<<<<
 *                      ('displacements') : [i[k] for k from s2 <= k <= e2]})
 *         elif (combiner == <int>MPI_COMBINER_STRUCT or
 */
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_6 = PyInt_FromLong((__pyx_v_i[1])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__blocklength), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":459
 *             return (oldtype, ('INDEXED_BLOCK'),
 *                     {('blocklength')   : i[1],
 *                      ('displacements') : [i[k] for k from s2 <= k <= e2]})             # <<<<<<<<<<<<<<
 *         elif (combiner == <int>MPI_COMBINER_STRUCT or
 *               combiner == <int>MPI_COMBINER_STRUCT_INTEGER):
 */
    __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_1 = __pyx_v_e2;
    for (__pyx_v_k = __pyx_v_s2; __pyx_v_k <= __pyx_t_1; __pyx_v_k++) {
      __pyx_t_8 = PyInt_FromLong((__pyx_v_i[__pyx_v_k])); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      if (unlikely(PyList_Append(__pyx_t_6, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__displacements), ((PyObject *)__pyx_t_6)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __Pyx_INCREF(__pyx_v_oldtype);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_oldtype);
    __Pyx_GIVEREF(__pyx_v_oldtype);
    __Pyx_INCREF(((PyObject *)__pyx_n_s__INDEXED_BLOCK));
    PyTuple_SET_ITEM(__pyx_t_6, 1, ((PyObject *)__pyx_n_s__INDEXED_BLOCK));
    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__INDEXED_BLOCK));
    PyTuple_SET_ITEM(__pyx_t_6, 2, ((PyObject *)__pyx_t_3));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
    __pyx_t_3 = 0;
    __pyx_r = ((PyObject *)__pyx_t_6);
    __pyx_t_6 = 0;
    goto __pyx_L0;
    goto __pyx_L9;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":460
 *                     {('blocklength')   : i[1],
 *                      ('displacements') : [i[k] for k from s2 <= k <= e2]})
 *         elif (combiner == <int>MPI_COMBINER_STRUCT or             # <<<<<<<<<<<<<<
 *               combiner == <int>MPI_COMBINER_STRUCT_INTEGER):
 *             s1 = 1; e1 = i[0]
 */
  __pyx_t_5 = (__pyx_v_combiner == ((int)MPI_COMBINER_STRUCT));
  if (!__pyx_t_5) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":461
 *                      ('displacements') : [i[k] for k from s2 <= k <= e2]})
 *         elif (combiner == <int>MPI_COMBINER_STRUCT or
 *               combiner == <int>MPI_COMBINER_STRUCT_INTEGER):             # <<<<<<<<<<<<<<
 *             s1 = 1; e1 = i[0]
 *             s2 = 0; e2 = i[0]-1
 */
    __pyx_t_7 = (__pyx_v_combiner == ((int)MPI_COMBINER_STRUCT_INTEGER));
    __pyx_t_2 = __pyx_t_7;
  } else {
    __pyx_t_2 = __pyx_t_5;
  }
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":462
 *         elif (combiner == <int>MPI_COMBINER_STRUCT or
 *               combiner == <int>MPI_COMBINER_STRUCT_INTEGER):
 *             s1 = 1; e1 = i[0]             # <<<<<<<<<<<<<<
 *             s2 = 0; e2 = i[0]-1
 *             return (Datatype, ('STRUCT'),
 */
    __pyx_v_s1 = 1;
    __pyx_v_e1 = (__pyx_v_i[0]);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":463
 *               combiner == <int>MPI_COMBINER_STRUCT_INTEGER):
 *             s1 = 1; e1 = i[0]
 *             s2 = 0; e2 = i[0]-1             # <<<<<<<<<<<<<<
 *             return (Datatype, ('STRUCT'),
 *                     {('blocklengths')  : [i[k] for k from s1 <= k <= e1],
 */
    __pyx_v_s2 = 0;
    __pyx_v_e2 = ((__pyx_v_i[0]) - 1);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":464
 *             s1 = 1; e1 = i[0]
 *             s2 = 0; e2 = i[0]-1
 *             return (Datatype, ('STRUCT'),             # <<<<<<<<<<<<<<
 *                     {('blocklengths')  : [i[k] for k from s1 <= k <= e1],
 *                      ('displacements') : [a[k] for k from s2 <= k <= e2],
 */
    __Pyx_XDECREF(__pyx_r);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":465
 *             s2 = 0; e2 = i[0]-1
 *             return (Datatype, ('STRUCT'),
 *                     {('blocklengths')  : [i[k] for k from s1 <= k <= e1],             # <<<<<<<<<<<<<<
 *                      ('displacements') : [a[k] for k from s2 <= k <= e2],
 *                      ('datatypes')     : oldtype})
 */
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_1 = __pyx_v_e1;
    for (__pyx_v_k = __pyx_v_s1; __pyx_v_k <= __pyx_t_1; __pyx_v_k++) {
      __pyx_t_8 = PyInt_FromLong((__pyx_v_i[__pyx_v_k])); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      if (unlikely(PyList_Append(__pyx_t_3, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__blocklengths), ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":466
 *             return (Datatype, ('STRUCT'),
 *                     {('blocklengths')  : [i[k] for k from s1 <= k <= e1],
 *                      ('displacements') : [a[k] for k from s2 <= k <= e2],             # <<<<<<<<<<<<<<
 *                      ('datatypes')     : oldtype})
 *         elif combiner == <int>MPI_COMBINER_SUBARRAY:
 */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_1 = __pyx_v_e2;
    for (__pyx_v_k = __pyx_v_s2; __pyx_v_k <= __pyx_t_1; __pyx_v_k++) {
      __pyx_t_8 = __Pyx_PyInt_to_py_MPI_Aint((__pyx_v_a[__pyx_v_k])); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      if (unlikely(PyList_Append(__pyx_t_3, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__displacements), ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":467
 *                     {('blocklengths')  : [i[k] for k from s1 <= k <= e1],
 *                      ('displacements') : [a[k] for k from s2 <= k <= e2],
 *                      ('datatypes')     : oldtype})             # <<<<<<<<<<<<<<
 *         elif combiner == <int>MPI_COMBINER_SUBARRAY:
 *             s1 =        1; e1 =   i[0]
 */
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__datatypes), __pyx_v_oldtype) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype)));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype)));
    __Pyx_GIVEREF(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype)));
    __Pyx_INCREF(((PyObject *)__pyx_n_s__STRUCT));
    PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_n_s__STRUCT));
    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__STRUCT));
    PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_r = ((PyObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L9;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":468
 *                      ('displacements') : [a[k] for k from s2 <= k <= e2],
 *                      ('datatypes')     : oldtype})
 *         elif combiner == <int>MPI_COMBINER_SUBARRAY:             # <<<<<<<<<<<<<<
 *             s1 =        1; e1 =   i[0]
 *             s2 =   i[0]+1; e2 = 2*i[0]
 */
  __pyx_t_2 = (__pyx_v_combiner == ((int)MPI_COMBINER_SUBARRAY));
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":469
 *                      ('datatypes')     : oldtype})
 *         elif combiner == <int>MPI_COMBINER_SUBARRAY:
 *             s1 =        1; e1 =   i[0]             # <<<<<<<<<<<<<<
 *             s2 =   i[0]+1; e2 = 2*i[0]
 *             s3 = 2*i[0]+1; e3 = 3*i[0]
 */
    __pyx_v_s1 = 1;
    __pyx_v_e1 = (__pyx_v_i[0]);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":470
 *         elif combiner == <int>MPI_COMBINER_SUBARRAY:
 *             s1 =        1; e1 =   i[0]
 *             s2 =   i[0]+1; e2 = 2*i[0]             # <<<<<<<<<<<<<<
 *             s3 = 2*i[0]+1; e3 = 3*i[0]
 *             return (oldtype, ('SUBARRAY'),
 */
    __pyx_v_s2 = ((__pyx_v_i[0]) + 1);
    __pyx_v_e2 = (2 * (__pyx_v_i[0]));

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":471
 *             s1 =        1; e1 =   i[0]
 *             s2 =   i[0]+1; e2 = 2*i[0]
 *             s3 = 2*i[0]+1; e3 = 3*i[0]             # <<<<<<<<<<<<<<
 *             return (oldtype, ('SUBARRAY'),
 *                     {('sizes')    : [i[k] for k from s1 <= k <= e1],
 */
    __pyx_v_s3 = ((2 * (__pyx_v_i[0])) + 1);
    __pyx_v_e3 = (3 * (__pyx_v_i[0]));

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":472
 *             s2 =   i[0]+1; e2 = 2*i[0]
 *             s3 = 2*i[0]+1; e3 = 3*i[0]
 *             return (oldtype, ('SUBARRAY'),             # <<<<<<<<<<<<<<
 *                     {('sizes')    : [i[k] for k from s1 <= k <= e1],
 *                      ('subsizes') : [i[k] for k from s2 <= k <= e2],
 */
    __Pyx_XDECREF(__pyx_r);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":473
 *             s3 = 2*i[0]+1; e3 = 3*i[0]
 *             return (oldtype, ('SUBARRAY'),
 *                     {('sizes')    : [i[k] for k from s1 <= k <= e1],             # <<<<<<<<<<<<<<
 *                      ('subsizes') : [i[k] for k from s2 <= k <= e2],
 *                      ('starts')   : [i[k] for k from s3 <= k <= e3],
 */
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_1 = __pyx_v_e1;
    for (__pyx_v_k = __pyx_v_s1; __pyx_v_k <= __pyx_t_1; __pyx_v_k++) {
      __pyx_t_8 = PyInt_FromLong((__pyx_v_i[__pyx_v_k])); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      if (unlikely(PyList_Append(__pyx_t_6, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__sizes), ((PyObject *)__pyx_t_6)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":474
 *             return (oldtype, ('SUBARRAY'),
 *                     {('sizes')    : [i[k] for k from s1 <= k <= e1],
 *                      ('subsizes') : [i[k] for k from s2 <= k <= e2],             # <<<<<<<<<<<<<<
 *                      ('starts')   : [i[k] for k from s3 <= k <= e3],
 *                      ('order')    : i[3*i[0]+1]})
 */
    __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_1 = __pyx_v_e2;
    for (__pyx_v_k = __pyx_v_s2; __pyx_v_k <= __pyx_t_1; __pyx_v_k++) {
      __pyx_t_8 = PyInt_FromLong((__pyx_v_i[__pyx_v_k])); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      if (unlikely(PyList_Append(__pyx_t_6, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__subsizes), ((PyObject *)__pyx_t_6)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":475
 *                     {('sizes')    : [i[k] for k from s1 <= k <= e1],
 *                      ('subsizes') : [i[k] for k from s2 <= k <= e2],
 *                      ('starts')   : [i[k] for k from s3 <= k <= e3],             # <<<<<<<<<<<<<<
 *                      ('order')    : i[3*i[0]+1]})
 *         elif combiner == <int>MPI_COMBINER_DARRAY:
 */
    __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_1 = __pyx_v_e3;
    for (__pyx_v_k = __pyx_v_s3; __pyx_v_k <= __pyx_t_1; __pyx_v_k++) {
      __pyx_t_8 = PyInt_FromLong((__pyx_v_i[__pyx_v_k])); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      if (unlikely(PyList_Append(__pyx_t_6, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__starts), ((PyObject *)__pyx_t_6)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":476
 *                      ('subsizes') : [i[k] for k from s2 <= k <= e2],
 *                      ('starts')   : [i[k] for k from s3 <= k <= e3],
 *                      ('order')    : i[3*i[0]+1]})             # <<<<<<<<<<<<<<
 *         elif combiner == <int>MPI_COMBINER_DARRAY:
 *             s1 =        3; e1 =   i[2]+2
 */
    __pyx_t_6 = PyInt_FromLong((__pyx_v_i[((3 * (__pyx_v_i[0])) + 1)])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__order), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __Pyx_INCREF(__pyx_v_oldtype);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_oldtype);
    __Pyx_GIVEREF(__pyx_v_oldtype);
    __Pyx_INCREF(((PyObject *)__pyx_n_s__SUBARRAY));
    PyTuple_SET_ITEM(__pyx_t_6, 1, ((PyObject *)__pyx_n_s__SUBARRAY));
    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__SUBARRAY));
    PyTuple_SET_ITEM(__pyx_t_6, 2, ((PyObject *)__pyx_t_3));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
    __pyx_t_3 = 0;
    __pyx_r = ((PyObject *)__pyx_t_6);
    __pyx_t_6 = 0;
    goto __pyx_L0;
    goto __pyx_L9;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":477
 *                      ('starts')   : [i[k] for k from s3 <= k <= e3],
 *                      ('order')    : i[3*i[0]+1]})
 *         elif combiner == <int>MPI_COMBINER_DARRAY:             # <<<<<<<<<<<<<<
 *             s1 =        3; e1 =   i[2]+2
 *             s2 =   i[2]+3; e2 = 2*i[2]+2
 */
  __pyx_t_2 = (__pyx_v_combiner == ((int)MPI_COMBINER_DARRAY));
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":478
 *                      ('order')    : i[3*i[0]+1]})
 *         elif combiner == <int>MPI_COMBINER_DARRAY:
 *             s1 =        3; e1 =   i[2]+2             # <<<<<<<<<<<<<<
 *             s2 =   i[2]+3; e2 = 2*i[2]+2
 *             s3 = 2*i[2]+3; e3 = 3*i[2]+2
 */
    __pyx_v_s1 = 3;
    __pyx_v_e1 = ((__pyx_v_i[2]) + 2);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":479
 *         elif combiner == <int>MPI_COMBINER_DARRAY:
 *             s1 =        3; e1 =   i[2]+2
 *             s2 =   i[2]+3; e2 = 2*i[2]+2             # <<<<<<<<<<<<<<
 *             s3 = 2*i[2]+3; e3 = 3*i[2]+2
 *             s4 = 3*i[2]+3; e4 = 4*i[2]+2
 */
    __pyx_v_s2 = ((__pyx_v_i[2]) + 3);
    __pyx_v_e2 = ((2 * (__pyx_v_i[2])) + 2);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":480
 *             s1 =        3; e1 =   i[2]+2
 *             s2 =   i[2]+3; e2 = 2*i[2]+2
 *             s3 = 2*i[2]+3; e3 = 3*i[2]+2             # <<<<<<<<<<<<<<
 *             s4 = 3*i[2]+3; e4 = 4*i[2]+2
 *             return (oldtype, ('DARRAY'),
 */
    __pyx_v_s3 = ((2 * (__pyx_v_i[2])) + 3);
    __pyx_v_e3 = ((3 * (__pyx_v_i[2])) + 2);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":481
 *             s2 =   i[2]+3; e2 = 2*i[2]+2
 *             s3 = 2*i[2]+3; e3 = 3*i[2]+2
 *             s4 = 3*i[2]+3; e4 = 4*i[2]+2             # <<<<<<<<<<<<<<
 *             return (oldtype, ('DARRAY'),
 *                     {('size')     : i[0],
 */
    __pyx_v_s4 = ((3 * (__pyx_v_i[2])) + 3);
    __pyx_v_e4 = ((4 * (__pyx_v_i[2])) + 2);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":482
 *             s3 = 2*i[2]+3; e3 = 3*i[2]+2
 *             s4 = 3*i[2]+3; e4 = 4*i[2]+2
 *             return (oldtype, ('DARRAY'),             # <<<<<<<<<<<<<<
 *                     {('size')     : i[0],
 *                      ('rank')     : i[1],
 */
    __Pyx_XDECREF(__pyx_r);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":483
 *             s4 = 3*i[2]+3; e4 = 4*i[2]+2
 *             return (oldtype, ('DARRAY'),
 *                     {('size')     : i[0],             # <<<<<<<<<<<<<<
 *                      ('rank')     : i[1],
 *                      ('gsizes')   : [i[k] for k from s1 <= k <= e1],
 */
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyInt_FromLong((__pyx_v_i[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__size), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":484
 *             return (oldtype, ('DARRAY'),
 *                     {('size')     : i[0],
 *                      ('rank')     : i[1],             # <<<<<<<<<<<<<<
 *                      ('gsizes')   : [i[k] for k from s1 <= k <= e1],
 *                      ('distribs') : [i[k] for k from s2 <= k <= e2],
 */
    __pyx_t_3 = PyInt_FromLong((__pyx_v_i[1])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__rank), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":485
 *                     {('size')     : i[0],
 *                      ('rank')     : i[1],
 *                      ('gsizes')   : [i[k] for k from s1 <= k <= e1],             # <<<<<<<<<<<<<<
 *                      ('distribs') : [i[k] for k from s2 <= k <= e2],
 *                      ('dargs')    : [i[k] for k from s3 <= k <= e3],
 */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_1 = __pyx_v_e1;
    for (__pyx_v_k = __pyx_v_s1; __pyx_v_k <= __pyx_t_1; __pyx_v_k++) {
      __pyx_t_8 = PyInt_FromLong((__pyx_v_i[__pyx_v_k])); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      if (unlikely(PyList_Append(__pyx_t_3, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__gsizes), ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":486
 *                      ('rank')     : i[1],
 *                      ('gsizes')   : [i[k] for k from s1 <= k <= e1],
 *                      ('distribs') : [i[k] for k from s2 <= k <= e2],             # <<<<<<<<<<<<<<
 *                      ('dargs')    : [i[k] for k from s3 <= k <= e3],
 *                      ('psizes')   : [i[k] for k from s4 <= k <= e4],
 */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_1 = __pyx_v_e2;
    for (__pyx_v_k = __pyx_v_s2; __pyx_v_k <= __pyx_t_1; __pyx_v_k++) {
      __pyx_t_8 = PyInt_FromLong((__pyx_v_i[__pyx_v_k])); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      if (unlikely(PyList_Append(__pyx_t_3, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__distribs), ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":487
 *                      ('gsizes')   : [i[k] for k from s1 <= k <= e1],
 *                      ('distribs') : [i[k] for k from s2 <= k <= e2],
 *                      ('dargs')    : [i[k] for k from s3 <= k <= e3],             # <<<<<<<<<<<<<<
 *                      ('psizes')   : [i[k] for k from s4 <= k <= e4],
 *                      ('order')    : i[4*i[2]+3]})
 */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_1 = __pyx_v_e3;
    for (__pyx_v_k = __pyx_v_s3; __pyx_v_k <= __pyx_t_1; __pyx_v_k++) {
      __pyx_t_8 = PyInt_FromLong((__pyx_v_i[__pyx_v_k])); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      if (unlikely(PyList_Append(__pyx_t_3, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dargs), ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":488
 *                      ('distribs') : [i[k] for k from s2 <= k <= e2],
 *                      ('dargs')    : [i[k] for k from s3 <= k <= e3],
 *                      ('psizes')   : [i[k] for k from s4 <= k <= e4],             # <<<<<<<<<<<<<<
 *                      ('order')    : i[4*i[2]+3]})
 *         elif combiner == <int>MPI_COMBINER_RESIZED:
 */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_1 = __pyx_v_e4;
    for (__pyx_v_k = __pyx_v_s4; __pyx_v_k <= __pyx_t_1; __pyx_v_k++) {
      __pyx_t_8 = PyInt_FromLong((__pyx_v_i[__pyx_v_k])); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      if (unlikely(PyList_Append(__pyx_t_3, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__psizes), ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":489
 *                      ('dargs')    : [i[k] for k from s3 <= k <= e3],
 *                      ('psizes')   : [i[k] for k from s4 <= k <= e4],
 *                      ('order')    : i[4*i[2]+3]})             # <<<<<<<<<<<<<<
 *         elif combiner == <int>MPI_COMBINER_RESIZED:
 *             return (oldtype, ('RESIZED'),
 */
    __pyx_t_3 = PyInt_FromLong((__pyx_v_i[((4 * (__pyx_v_i[2])) + 3)])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__order), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __Pyx_INCREF(__pyx_v_oldtype);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_oldtype);
    __Pyx_GIVEREF(__pyx_v_oldtype);
    __Pyx_INCREF(((PyObject *)__pyx_n_s__DARRAY));
    PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_n_s__DARRAY));
    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__DARRAY));
    PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_r = ((PyObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L9;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":490
 *                      ('psizes')   : [i[k] for k from s4 <= k <= e4],
 *                      ('order')    : i[4*i[2]+3]})
 *         elif combiner == <int>MPI_COMBINER_RESIZED:             # <<<<<<<<<<<<<<
 *             return (oldtype, ('RESIZED'),
 *                     {('lb')     : a[0],
 */
  __pyx_t_2 = (__pyx_v_combiner == ((int)MPI_COMBINER_RESIZED));
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":491
 *                      ('order')    : i[4*i[2]+3]})
 *         elif combiner == <int>MPI_COMBINER_RESIZED:
 *             return (oldtype, ('RESIZED'),             # <<<<<<<<<<<<<<
 *                     {('lb')     : a[0],
 *                      ('extent') : a[1]})
 */
    __Pyx_XDECREF(__pyx_r);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":492
 *         elif combiner == <int>MPI_COMBINER_RESIZED:
 *             return (oldtype, ('RESIZED'),
 *                     {('lb')     : a[0],             # <<<<<<<<<<<<<<
 *                      ('extent') : a[1]})
 *         elif combiner == <int>MPI_COMBINER_F90_INTEGER:
 */
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_6 = __Pyx_PyInt_to_py_MPI_Aint((__pyx_v_a[0])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__lb), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":493
 *             return (oldtype, ('RESIZED'),
 *                     {('lb')     : a[0],
 *                      ('extent') : a[1]})             # <<<<<<<<<<<<<<
 *         elif combiner == <int>MPI_COMBINER_F90_INTEGER:
 *             return (Datatype, ('F90_INTEGER'),
 */
    __pyx_t_6 = __Pyx_PyInt_to_py_MPI_Aint((__pyx_v_a[1])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__extent), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __Pyx_INCREF(__pyx_v_oldtype);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_oldtype);
    __Pyx_GIVEREF(__pyx_v_oldtype);
    __Pyx_INCREF(((PyObject *)__pyx_n_s__RESIZED));
    PyTuple_SET_ITEM(__pyx_t_6, 1, ((PyObject *)__pyx_n_s__RESIZED));
    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__RESIZED));
    PyTuple_SET_ITEM(__pyx_t_6, 2, ((PyObject *)__pyx_t_3));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
    __pyx_t_3 = 0;
    __pyx_r = ((PyObject *)__pyx_t_6);
    __pyx_t_6 = 0;
    goto __pyx_L0;
    goto __pyx_L9;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":494
 *                     {('lb')     : a[0],
 *                      ('extent') : a[1]})
 *         elif combiner == <int>MPI_COMBINER_F90_INTEGER:             # <<<<<<<<<<<<<<
 *             return (Datatype, ('F90_INTEGER'),
 *                     {('r') : i[0]})
 */
  __pyx_t_2 = (__pyx_v_combiner == ((int)MPI_COMBINER_F90_INTEGER));
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":495
 *                      ('extent') : a[1]})
 *         elif combiner == <int>MPI_COMBINER_F90_INTEGER:
 *             return (Datatype, ('F90_INTEGER'),             # <<<<<<<<<<<<<<
 *                     {('r') : i[0]})
 *         elif combiner == <int>MPI_COMBINER_F90_REAL:
 */
    __Pyx_XDECREF(__pyx_r);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":496
 *         elif combiner == <int>MPI_COMBINER_F90_INTEGER:
 *             return (Datatype, ('F90_INTEGER'),
 *                     {('r') : i[0]})             # <<<<<<<<<<<<<<
 *         elif combiner == <int>MPI_COMBINER_F90_REAL:
 *             return (Datatype, ('F90_REAL'),
 */
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyInt_FromLong((__pyx_v_i[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__r), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype)));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype)));
    __Pyx_GIVEREF(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype)));
    __Pyx_INCREF(((PyObject *)__pyx_n_s__F90_INTEGER));
    PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_n_s__F90_INTEGER));
    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__F90_INTEGER));
    PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_r = ((PyObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L9;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":497
 *             return (Datatype, ('F90_INTEGER'),
 *                     {('r') : i[0]})
 *         elif combiner == <int>MPI_COMBINER_F90_REAL:             # <<<<<<<<<<<<<<
 *             return (Datatype, ('F90_REAL'),
 *                     {('p') : i[0],
 */
  __pyx_t_2 = (__pyx_v_combiner == ((int)MPI_COMBINER_F90_REAL));
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":498
 *                     {('r') : i[0]})
 *         elif combiner == <int>MPI_COMBINER_F90_REAL:
 *             return (Datatype, ('F90_REAL'),             # <<<<<<<<<<<<<<
 *                     {('p') : i[0],
 *                      ('r') : i[1]})
 */
    __Pyx_XDECREF(__pyx_r);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":499
 *         elif combiner == <int>MPI_COMBINER_F90_REAL:
 *             return (Datatype, ('F90_REAL'),
 *                     {('p') : i[0],             # <<<<<<<<<<<<<<
 *                      ('r') : i[1]})
 *         elif combiner == <int>MPI_COMBINER_F90_COMPLEX:
 */
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_6 = PyInt_FromLong((__pyx_v_i[0])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__p), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":500
 *             return (Datatype, ('F90_REAL'),
 *                     {('p') : i[0],
 *                      ('r') : i[1]})             # <<<<<<<<<<<<<<
 *         elif combiner == <int>MPI_COMBINER_F90_COMPLEX:
 *             return (Datatype, ('F90_COMPLEX'),
 */
    __pyx_t_6 = PyInt_FromLong((__pyx_v_i[1])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__r), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype)));
    PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype)));
    __Pyx_GIVEREF(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype)));
    __Pyx_INCREF(((PyObject *)__pyx_n_s__F90_REAL));
    PyTuple_SET_ITEM(__pyx_t_6, 1, ((PyObject *)__pyx_n_s__F90_REAL));
    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__F90_REAL));
    PyTuple_SET_ITEM(__pyx_t_6, 2, ((PyObject *)__pyx_t_3));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
    __pyx_t_3 = 0;
    __pyx_r = ((PyObject *)__pyx_t_6);
    __pyx_t_6 = 0;
    goto __pyx_L0;
    goto __pyx_L9;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":501
 *                     {('p') : i[0],
 *                      ('r') : i[1]})
 *         elif combiner == <int>MPI_COMBINER_F90_COMPLEX:             # <<<<<<<<<<<<<<
 *             return (Datatype, ('F90_COMPLEX'),
 *                     {('p') : i[0],
 */
  __pyx_t_2 = (__pyx_v_combiner == ((int)MPI_COMBINER_F90_COMPLEX));
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":502
 *                      ('r') : i[1]})
 *         elif combiner == <int>MPI_COMBINER_F90_COMPLEX:
 *             return (Datatype, ('F90_COMPLEX'),             # <<<<<<<<<<<<<<
 *                     {('p') : i[0],
 *                      ('r') : i[1]})
 */
    __Pyx_XDECREF(__pyx_r);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":503
 *         elif combiner == <int>MPI_COMBINER_F90_COMPLEX:
 *             return (Datatype, ('F90_COMPLEX'),
 *                     {('p') : i[0],             # <<<<<<<<<<<<<<
 *                      ('r') : i[1]})
 * 
 */
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyInt_FromLong((__pyx_v_i[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__p), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":504
 *             return (Datatype, ('F90_COMPLEX'),
 *                     {('p') : i[0],
 *                      ('r') : i[1]})             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_3 = PyInt_FromLong((__pyx_v_i[1])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__r), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype)));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype)));
    __Pyx_GIVEREF(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype)));
    __Pyx_INCREF(((PyObject *)__pyx_n_s__F90_COMPLEX));
    PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_n_s__F90_COMPLEX));
    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__F90_COMPLEX));
    PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_r = ((PyObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L9;
  }
  __pyx_L9:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.decode", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_XDECREF(__pyx_v_tmp3);
  __Pyx_XDECREF(__pyx_v_oldtype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":510
 *     # ---------------
 * 
 *     def Pack(self, inbuf, outbuf, int position, Comm comm not None):             # <<<<<<<<<<<<<<
 *         """
 *         Pack into contiguous memory according to datatype.
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_27Pack(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_27Pack[] = "Datatype.Pack(self, inbuf, outbuf, int position, Comm comm)\n\n        Pack into contiguous memory according to datatype.\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_27Pack(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_inbuf = 0;
  PyObject *__pyx_v_outbuf = 0;
  int __pyx_v_position;
  struct PyMPICommObject *__pyx_v_comm = 0;
  MPI_Aint __pyx_v_lb;
  MPI_Aint __pyx_v_extent;
  void *__pyx_v_ibptr;
  void *__pyx_v_obptr;
  MPI_Aint __pyx_v_iblen;
  MPI_Aint __pyx_v_oblen;
  PyObject *__pyx_v_ob1 = 0;
  PyObject *__pyx_v_ob2 = 0;
  int __pyx_v_icount;
  int __pyx_v_osize;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__inbuf,&__pyx_n_s__outbuf,&__pyx_n_s__position,&__pyx_n_s__comm,0};
  __Pyx_RefNannySetupContext("Pack");
  {
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__inbuf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__outbuf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Pack", 1, 4, 4, 1); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__position);
        if (likely(values[2])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Pack", 1, 4, 4, 2); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__comm);
        if (likely(values[3])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Pack", 1, 4, 4, 3); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Pack") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_inbuf = values[0];
    __pyx_v_outbuf = values[1];
    __pyx_v_position = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_position == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_comm = ((struct PyMPICommObject *)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Pack", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Pack", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":514
 *         Pack into contiguous memory according to datatype.
 *         """
 *         cdef MPI_Aint lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )
 *         #
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":515
 *         """
 *         cdef MPI_Aint lb = 0, extent = 0
 *         CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )             # <<<<<<<<<<<<<<
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":517
 *         CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef ob1 = getbuffer_r(inbuf,  &ibptr, &iblen)
 */
  __pyx_v_ibptr = NULL;
  __pyx_v_obptr = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":518
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0             # <<<<<<<<<<<<<<
 *         cdef ob1 = getbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = getbuffer_w(outbuf, &obptr, &oblen)
 */
  __pyx_v_iblen = 0;
  __pyx_v_oblen = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":519
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef ob1 = getbuffer_r(inbuf,  &ibptr, &iblen)             # <<<<<<<<<<<<<<
 *         cdef ob2 = getbuffer_w(outbuf, &obptr, &oblen)
 *         cdef int icount = <int>(iblen/extent), osize = <int>oblen
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer_r(__pyx_v_inbuf, (&__pyx_v_ibptr), (&__pyx_v_iblen))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ob1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":520
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef ob1 = getbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = getbuffer_w(outbuf, &obptr, &oblen)             # <<<<<<<<<<<<<<
 *         cdef int icount = <int>(iblen/extent), osize = <int>oblen
 *         #
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer_w(__pyx_v_outbuf, (&__pyx_v_obptr), (&__pyx_v_oblen))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ob2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":521
 *         cdef ob1 = getbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = getbuffer_w(outbuf, &obptr, &oblen)
 *         cdef int icount = <int>(iblen/extent), osize = <int>oblen             # <<<<<<<<<<<<<<
 *         #
 *         CHKERR( MPI_Pack(ibptr, icount, self.ob_mpi, obptr, osize,
 */
  __pyx_v_icount = ((int)(__pyx_v_iblen / __pyx_v_extent));
  __pyx_v_osize = ((int)__pyx_v_oblen);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":524
 *         #
 *         CHKERR( MPI_Pack(ibptr, icount, self.ob_mpi, obptr, osize,
 *                          &position, comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return position
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Pack(__pyx_v_ibptr, __pyx_v_icount, ((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, __pyx_v_obptr, __pyx_v_osize, (&__pyx_v_position), __pyx_v_comm->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":525
 *         CHKERR( MPI_Pack(ibptr, icount, self.ob_mpi, obptr, osize,
 *                          &position, comm.ob_mpi) )
 *         return position             # <<<<<<<<<<<<<<
 * 
 *     def Unpack(self, inbuf, int position, outbuf, Comm comm not None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_position); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Pack", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob1);
  __Pyx_XDECREF(__pyx_v_ob2);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":527
 *         return position
 * 
 *     def Unpack(self, inbuf, int position, outbuf, Comm comm not None):             # <<<<<<<<<<<<<<
 *         """
 *         Unpack from contiguous memory according to datatype.
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_28Unpack(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_28Unpack[] = "Datatype.Unpack(self, inbuf, int position, outbuf, Comm comm)\n\n        Unpack from contiguous memory according to datatype.\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_28Unpack(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_inbuf = 0;
  int __pyx_v_position;
  PyObject *__pyx_v_outbuf = 0;
  struct PyMPICommObject *__pyx_v_comm = 0;
  MPI_Aint __pyx_v_lb;
  MPI_Aint __pyx_v_extent;
  void *__pyx_v_ibptr;
  void *__pyx_v_obptr;
  MPI_Aint __pyx_v_iblen;
  MPI_Aint __pyx_v_oblen;
  PyObject *__pyx_v_ob1 = 0;
  PyObject *__pyx_v_ob2 = 0;
  int __pyx_v_isize;
  int __pyx_v_ocount;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__inbuf,&__pyx_n_s__position,&__pyx_n_s__outbuf,&__pyx_n_s__comm,0};
  __Pyx_RefNannySetupContext("Unpack");
  {
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__inbuf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__position);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Unpack", 1, 4, 4, 1); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__outbuf);
        if (likely(values[2])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Unpack", 1, 4, 4, 2); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__comm);
        if (likely(values[3])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Unpack", 1, 4, 4, 3); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Unpack") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_inbuf = values[0];
    __pyx_v_position = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_position == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_outbuf = values[2];
    __pyx_v_comm = ((struct PyMPICommObject *)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Unpack", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Unpack", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":531
 *         Unpack from contiguous memory according to datatype.
 *         """
 *         cdef MPI_Aint lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )
 *         #
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":532
 *         """
 *         cdef MPI_Aint lb = 0, extent = 0
 *         CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )             # <<<<<<<<<<<<<<
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":534
 *         CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef ob1 = getbuffer_r(inbuf,  &ibptr, &iblen)
 */
  __pyx_v_ibptr = NULL;
  __pyx_v_obptr = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":535
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0             # <<<<<<<<<<<<<<
 *         cdef ob1 = getbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = getbuffer_w(outbuf, &obptr, &oblen)
 */
  __pyx_v_iblen = 0;
  __pyx_v_oblen = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":536
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef ob1 = getbuffer_r(inbuf,  &ibptr, &iblen)             # <<<<<<<<<<<<<<
 *         cdef ob2 = getbuffer_w(outbuf, &obptr, &oblen)
 *         cdef int isize = <int>iblen, ocount = <int>(oblen/extent)
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer_r(__pyx_v_inbuf, (&__pyx_v_ibptr), (&__pyx_v_iblen))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ob1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":537
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef ob1 = getbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = getbuffer_w(outbuf, &obptr, &oblen)             # <<<<<<<<<<<<<<
 *         cdef int isize = <int>iblen, ocount = <int>(oblen/extent)
 *         #
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer_w(__pyx_v_outbuf, (&__pyx_v_obptr), (&__pyx_v_oblen))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ob2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":538
 *         cdef ob1 = getbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = getbuffer_w(outbuf, &obptr, &oblen)
 *         cdef int isize = <int>iblen, ocount = <int>(oblen/extent)             # <<<<<<<<<<<<<<
 *         #
 *         CHKERR( MPI_Unpack(ibptr, isize, &position, obptr, ocount,
 */
  __pyx_v_isize = ((int)__pyx_v_iblen);
  __pyx_v_ocount = ((int)(__pyx_v_oblen / __pyx_v_extent));

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":541
 *         #
 *         CHKERR( MPI_Unpack(ibptr, isize, &position, obptr, ocount,
 *                            self.ob_mpi, comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return position
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Unpack(__pyx_v_ibptr, __pyx_v_isize, (&__pyx_v_position), __pyx_v_obptr, __pyx_v_ocount, ((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, __pyx_v_comm->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 540; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":542
 *         CHKERR( MPI_Unpack(ibptr, isize, &position, obptr, ocount,
 *                            self.ob_mpi, comm.ob_mpi) )
 *         return position             # <<<<<<<<<<<<<<
 * 
 *     def Pack_size(self, int count, Comm comm not None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_position); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Unpack", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob1);
  __Pyx_XDECREF(__pyx_v_ob2);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":544
 *         return position
 * 
 *     def Pack_size(self, int count, Comm comm not None):             # <<<<<<<<<<<<<<
 *         """
 *         Returns the upper bound on the amount of space (in bytes)
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_29Pack_size(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_29Pack_size[] = "Datatype.Pack_size(self, int count, Comm comm)\n\n        Returns the upper bound on the amount of space (in bytes)\n        needed to pack a message according to datatype.\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_29Pack_size(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_count;
  struct PyMPICommObject *__pyx_v_comm = 0;
  int __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__count,&__pyx_n_s__comm,0};
  __Pyx_RefNannySetupContext("Pack_size");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__count);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__comm);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Pack_size", 1, 2, 2, 1); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Pack_size") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_count = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_count == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_comm = ((struct PyMPICommObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Pack_size", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Pack_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":549
 *         needed to pack a message according to datatype.
 *         """
 *         cdef int size = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Pack_size(count, self.ob_mpi,
 *                               comm.ob_mpi, &size) )
 */
  __pyx_v_size = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":551
 *         cdef int size = 0
 *         CHKERR( MPI_Pack_size(count, self.ob_mpi,
 *                               comm.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *         return size
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Pack_size(__pyx_v_count, ((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, __pyx_v_comm->ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":552
 *         CHKERR( MPI_Pack_size(count, self.ob_mpi,
 *                               comm.ob_mpi, &size) )
 *         return size             # <<<<<<<<<<<<<<
 * 
 *     # Canonical Pack and Unpack
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Pack_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":557
 *     # -------------------------
 * 
 *     def Pack_external(self, datarep, inbuf, outbuf, Aint position):             # <<<<<<<<<<<<<<
 *         """
 *         Pack into contiguous memory according to datatype,
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_30Pack_external(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_30Pack_external[] = "Datatype.Pack_external(self, datarep, inbuf, outbuf, Aint position)\n\n        Pack into contiguous memory according to datatype,\n        using a portable data representation (**external32**).\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_30Pack_external(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_datarep = 0;
  PyObject *__pyx_v_inbuf = 0;
  PyObject *__pyx_v_outbuf = 0;
  MPI_Aint __pyx_v_position;
  char *__pyx_v_cdatarep;
  MPI_Aint __pyx_v_lb;
  MPI_Aint __pyx_v_extent;
  void *__pyx_v_ibptr;
  void *__pyx_v_obptr;
  MPI_Aint __pyx_v_iblen;
  MPI_Aint __pyx_v_oblen;
  PyObject *__pyx_v_ob1 = 0;
  PyObject *__pyx_v_ob2 = 0;
  int __pyx_v_icount;
  MPI_Aint __pyx_v_osize;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__datarep,&__pyx_n_s__inbuf,&__pyx_n_s__outbuf,&__pyx_n_s__position,0};
  __Pyx_RefNannySetupContext("Pack_external");
  {
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__datarep);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__inbuf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Pack_external", 1, 4, 4, 1); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__outbuf);
        if (likely(values[2])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Pack_external", 1, 4, 4, 2); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__position);
        if (likely(values[3])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Pack_external", 1, 4, 4, 3); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Pack_external") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_datarep = values[0];
    __pyx_v_inbuf = values[1];
    __pyx_v_outbuf = values[2];
    __pyx_v_position = __Pyx_PyInt_from_py_MPI_Aint(values[3]); if (unlikely((__pyx_v_position == (MPI_Aint)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Pack_external", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Pack_external", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_datarep);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":562
 *         using a portable data representation (**external32**).
 *         """
 *         cdef char *cdatarep = NULL             # <<<<<<<<<<<<<<
 *         datarep = asmpistr(datarep, &cdatarep, NULL)
 *         cdef MPI_Aint lb = 0, extent = 0
 */
  __pyx_v_cdatarep = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":563
 *         """
 *         cdef char *cdatarep = NULL
 *         datarep = asmpistr(datarep, &cdatarep, NULL)             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint lb = 0, extent = 0
 *         CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_datarep, (&__pyx_v_cdatarep), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_datarep);
  __pyx_v_datarep = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":564
 *         cdef char *cdatarep = NULL
 *         datarep = asmpistr(datarep, &cdatarep, NULL)
 *         cdef MPI_Aint lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )
 *         #
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":565
 *         datarep = asmpistr(datarep, &cdatarep, NULL)
 *         cdef MPI_Aint lb = 0, extent = 0
 *         CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )             # <<<<<<<<<<<<<<
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":567
 *         CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef ob1 = getbuffer_r(inbuf,  &ibptr, &iblen)
 */
  __pyx_v_ibptr = NULL;
  __pyx_v_obptr = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":568
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0             # <<<<<<<<<<<<<<
 *         cdef ob1 = getbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = getbuffer_w(outbuf, &obptr, &oblen)
 */
  __pyx_v_iblen = 0;
  __pyx_v_oblen = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":569
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef ob1 = getbuffer_r(inbuf,  &ibptr, &iblen)             # <<<<<<<<<<<<<<
 *         cdef ob2 = getbuffer_w(outbuf, &obptr, &oblen)
 *         cdef int icount = <int>(iblen/extent) # XXX overflow?
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer_r(__pyx_v_inbuf, (&__pyx_v_ibptr), (&__pyx_v_iblen))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_ob1 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":570
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef ob1 = getbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = getbuffer_w(outbuf, &obptr, &oblen)             # <<<<<<<<<<<<<<
 *         cdef int icount = <int>(iblen/extent) # XXX overflow?
 *         cdef MPI_Aint osize = oblen
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer_w(__pyx_v_outbuf, (&__pyx_v_obptr), (&__pyx_v_oblen))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_ob2 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":571
 *         cdef ob1 = getbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = getbuffer_w(outbuf, &obptr, &oblen)
 *         cdef int icount = <int>(iblen/extent) # XXX overflow?             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint osize = oblen
 *         #
 */
  __pyx_v_icount = ((int)(__pyx_v_iblen / __pyx_v_extent));

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":572
 *         cdef ob2 = getbuffer_w(outbuf, &obptr, &oblen)
 *         cdef int icount = <int>(iblen/extent) # XXX overflow?
 *         cdef MPI_Aint osize = oblen             # <<<<<<<<<<<<<<
 *         #
 *         CHKERR( MPI_Pack_external(cdatarep, ibptr, icount,
 */
  __pyx_v_osize = __pyx_v_oblen;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":576
 *         CHKERR( MPI_Pack_external(cdatarep, ibptr, icount,
 *                                   self.ob_mpi,
 *                                   obptr, osize, &position) )             # <<<<<<<<<<<<<<
 *         return position
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Pack_external(__pyx_v_cdatarep, __pyx_v_ibptr, __pyx_v_icount, ((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, __pyx_v_obptr, __pyx_v_osize, (&__pyx_v_position))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":577
 *                                   self.ob_mpi,
 *                                   obptr, osize, &position) )
 *         return position             # <<<<<<<<<<<<<<
 * 
 *     def Unpack_external(self, datarep, inbuf, Aint position, outbuf):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_position); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Pack_external", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob1);
  __Pyx_XDECREF(__pyx_v_ob2);
  __Pyx_XDECREF(__pyx_v_datarep);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":579
 *         return position
 * 
 *     def Unpack_external(self, datarep, inbuf, Aint position, outbuf):             # <<<<<<<<<<<<<<
 *         """
 *         Unpack from contiguous memory according to datatype,
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_31Unpack_external(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_31Unpack_external[] = "Datatype.Unpack_external(self, datarep, inbuf, Aint position, outbuf)\n\n        Unpack from contiguous memory according to datatype,\n        using a portable data representation (**external32**).\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_31Unpack_external(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_datarep = 0;
  PyObject *__pyx_v_inbuf = 0;
  MPI_Aint __pyx_v_position;
  PyObject *__pyx_v_outbuf = 0;
  char *__pyx_v_cdatarep;
  MPI_Aint __pyx_v_lb;
  MPI_Aint __pyx_v_extent;
  void *__pyx_v_ibptr;
  void *__pyx_v_obptr;
  MPI_Aint __pyx_v_iblen;
  MPI_Aint __pyx_v_oblen;
  PyObject *__pyx_v_ob1 = 0;
  PyObject *__pyx_v_ob2 = 0;
  MPI_Aint __pyx_v_isize;
  int __pyx_v_ocount;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__datarep,&__pyx_n_s__inbuf,&__pyx_n_s__position,&__pyx_n_s__outbuf,0};
  __Pyx_RefNannySetupContext("Unpack_external");
  {
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__datarep);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__inbuf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Unpack_external", 1, 4, 4, 1); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 579; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__position);
        if (likely(values[2])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Unpack_external", 1, 4, 4, 2); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 579; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__outbuf);
        if (likely(values[3])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Unpack_external", 1, 4, 4, 3); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 579; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Unpack_external") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 579; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_datarep = values[0];
    __pyx_v_inbuf = values[1];
    __pyx_v_position = __Pyx_PyInt_from_py_MPI_Aint(values[2]); if (unlikely((__pyx_v_position == (MPI_Aint)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 579; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_outbuf = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Unpack_external", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 579; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Unpack_external", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_datarep);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":584
 *         using a portable data representation (**external32**).
 *         """
 *         cdef char *cdatarep = NULL             # <<<<<<<<<<<<<<
 *         datarep = asmpistr(datarep, &cdatarep, NULL)
 *         cdef MPI_Aint lb = 0, extent = 0
 */
  __pyx_v_cdatarep = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":585
 *         """
 *         cdef char *cdatarep = NULL
 *         datarep = asmpistr(datarep, &cdatarep, NULL)             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint lb = 0, extent = 0
 *         CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_datarep, (&__pyx_v_cdatarep), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_datarep);
  __pyx_v_datarep = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":586
 *         cdef char *cdatarep = NULL
 *         datarep = asmpistr(datarep, &cdatarep, NULL)
 *         cdef MPI_Aint lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )
 *         #
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":587
 *         datarep = asmpistr(datarep, &cdatarep, NULL)
 *         cdef MPI_Aint lb = 0, extent = 0
 *         CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )             # <<<<<<<<<<<<<<
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":589
 *         CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef ob1 = getbuffer_r(inbuf,  &ibptr, &iblen)
 */
  __pyx_v_ibptr = NULL;
  __pyx_v_obptr = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":590
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0             # <<<<<<<<<<<<<<
 *         cdef ob1 = getbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = getbuffer_w(outbuf, &obptr, &oblen)
 */
  __pyx_v_iblen = 0;
  __pyx_v_oblen = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":591
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef ob1 = getbuffer_r(inbuf,  &ibptr, &iblen)             # <<<<<<<<<<<<<<
 *         cdef ob2 = getbuffer_w(outbuf, &obptr, &oblen)
 *         cdef MPI_Aint isize = iblen,
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer_r(__pyx_v_inbuf, (&__pyx_v_ibptr), (&__pyx_v_iblen))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_ob1 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":592
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef ob1 = getbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = getbuffer_w(outbuf, &obptr, &oblen)             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint isize = iblen,
 *         cdef int ocount = <int>(oblen/extent) # XXX overflow?
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer_w(__pyx_v_outbuf, (&__pyx_v_obptr), (&__pyx_v_oblen))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_ob2 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":593
 *         cdef ob1 = getbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = getbuffer_w(outbuf, &obptr, &oblen)
 *         cdef MPI_Aint isize = iblen,             # <<<<<<<<<<<<<<
 *         cdef int ocount = <int>(oblen/extent) # XXX overflow?
 *         #
 */
  __pyx_v_isize = __pyx_v_iblen;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":594
 *         cdef ob2 = getbuffer_w(outbuf, &obptr, &oblen)
 *         cdef MPI_Aint isize = iblen,
 *         cdef int ocount = <int>(oblen/extent) # XXX overflow?             # <<<<<<<<<<<<<<
 *         #
 *         CHKERR( MPI_Unpack_external(cdatarep, ibptr, isize, &position,
 */
  __pyx_v_ocount = ((int)(__pyx_v_oblen / __pyx_v_extent));

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":597
 *         #
 *         CHKERR( MPI_Unpack_external(cdatarep, ibptr, isize, &position,
 *                                     obptr, ocount, self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return position
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Unpack_external(__pyx_v_cdatarep, __pyx_v_ibptr, __pyx_v_isize, (&__pyx_v_position), __pyx_v_obptr, __pyx_v_ocount, ((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":598
 *         CHKERR( MPI_Unpack_external(cdatarep, ibptr, isize, &position,
 *                                     obptr, ocount, self.ob_mpi) )
 *         return position             # <<<<<<<<<<<<<<
 * 
 *     def Pack_external_size(self, datarep, int count):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_position); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Unpack_external", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob1);
  __Pyx_XDECREF(__pyx_v_ob2);
  __Pyx_XDECREF(__pyx_v_datarep);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":600
 *         return position
 * 
 *     def Pack_external_size(self, datarep, int count):             # <<<<<<<<<<<<<<
 *         """
 *         Returns the upper bound on the amount of space (in bytes)
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_32Pack_external_size(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_32Pack_external_size[] = "Datatype.Pack_external_size(self, datarep, int count)\n\n        Returns the upper bound on the amount of space (in bytes)\n        needed to pack a message according to datatype,\n        using a portable data representation (**external32**).\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_32Pack_external_size(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_datarep = 0;
  int __pyx_v_count;
  char *__pyx_v_cdatarep;
  MPI_Aint __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__datarep,&__pyx_n_s__count,0};
  __Pyx_RefNannySetupContext("Pack_external_size");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__datarep);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__count);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Pack_external_size", 1, 2, 2, 1); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Pack_external_size") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_datarep = values[0];
    __pyx_v_count = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_count == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Pack_external_size", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Pack_external_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_datarep);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":606
 *         using a portable data representation (**external32**).
 *         """
 *         cdef char *cdatarep = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint size = 0
 *         datarep = asmpistr(datarep, &cdatarep, NULL)
 */
  __pyx_v_cdatarep = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":607
 *         """
 *         cdef char *cdatarep = NULL
 *         cdef MPI_Aint size = 0             # <<<<<<<<<<<<<<
 *         datarep = asmpistr(datarep, &cdatarep, NULL)
 *         CHKERR( MPI_Pack_external_size(cdatarep, count,
 */
  __pyx_v_size = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":608
 *         cdef char *cdatarep = NULL
 *         cdef MPI_Aint size = 0
 *         datarep = asmpistr(datarep, &cdatarep, NULL)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Pack_external_size(cdatarep, count,
 *                                        self.ob_mpi, &size) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_datarep, (&__pyx_v_cdatarep), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_datarep);
  __pyx_v_datarep = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":610
 *         datarep = asmpistr(datarep, &cdatarep, NULL)
 *         CHKERR( MPI_Pack_external_size(cdatarep, count,
 *                                        self.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *         return size
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Pack_external_size(__pyx_v_cdatarep, __pyx_v_count, ((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":611
 *         CHKERR( MPI_Pack_external_size(cdatarep, count,
 *                                        self.ob_mpi, &size) )
 *         return size             # <<<<<<<<<<<<<<
 * 
 *     # Attributes
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Pack_external_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_datarep);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":616
 *     # ----------
 * 
 *     def Get_attr(self, int keyval):             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve attribute value by key
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_33Get_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_33Get_attr[] = "Datatype.Get_attr(self, int keyval)\n\n        Retrieve attribute value by key\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_33Get_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_keyval;
  void *__pyx_v_attrval;
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__keyval,0};
  __Pyx_RefNannySetupContext("Get_attr");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__keyval);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Get_attr") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_keyval = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_attr", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Get_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":620
 *         Retrieve attribute value by key
 *         """
 *         cdef void *attrval = NULL             # <<<<<<<<<<<<<<
 *         cdef int flag = 0
 *         CHKERR( MPI_Type_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 */
  __pyx_v_attrval = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":621
 *         """
 *         cdef void *attrval = NULL
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 *         if not flag: return None
 */
  __pyx_v_flag = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":622
 *         cdef void *attrval = NULL
 *         cdef int flag = 0
 *         CHKERR( MPI_Type_get_attr(self.ob_mpi, keyval, &attrval, &flag) )             # <<<<<<<<<<<<<<
 *         if not flag: return None
 *         if not attrval: return 0
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_attr(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, __pyx_v_keyval, (&__pyx_v_attrval), (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":623
 *         cdef int flag = 0
 *         CHKERR( MPI_Type_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 *         if not flag: return None             # <<<<<<<<<<<<<<
 *         if not attrval: return 0
 *         # handle predefined keyvals
 */
  __pyx_t_2 = (!__pyx_v_flag);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":624
 *         CHKERR( MPI_Type_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 *         if not flag: return None
 *         if not attrval: return 0             # <<<<<<<<<<<<<<
 *         # handle predefined keyvals
 *         if 0: pass
 */
  __pyx_t_2 = (!(__pyx_v_attrval != 0));
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_int_0);
    __pyx_r = __pyx_int_0;
    goto __pyx_L0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":628
 *         if 0: pass
 *         # likely be a user-defined keyval
 *         elif keyval in type_keyval:             # <<<<<<<<<<<<<<
 *             return <object>attrval
 *         else:
 */
  __pyx_t_3 = PyInt_FromLong(__pyx_v_keyval); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (unlikely(((PyObject *)__pyx_v_6mpi4py_3MPI_type_keyval) == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 628; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_2 = ((PyDict_Contains(((PyObject *)__pyx_v_6mpi4py_3MPI_type_keyval), __pyx_t_3))); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":629
 *         # likely be a user-defined keyval
 *         elif keyval in type_keyval:
 *             return <object>attrval             # <<<<<<<<<<<<<<
 *         else:
 *             return PyLong_FromVoidPtr(attrval)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_attrval));
    __pyx_r = ((PyObject *)__pyx_v_attrval);
    goto __pyx_L0;
    goto __pyx_L8;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":631
 *             return <object>attrval
 *         else:
 *             return PyLong_FromVoidPtr(attrval)             # <<<<<<<<<<<<<<
 * 
 *     def Set_attr(self, int keyval, object attrval):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = PyLong_FromVoidPtr(__pyx_v_attrval); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }
  __pyx_L8:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Get_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":633
 *             return PyLong_FromVoidPtr(attrval)
 * 
 *     def Set_attr(self, int keyval, object attrval):             # <<<<<<<<<<<<<<
 *         """
 *         Store attribute value associated with a key
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_34Set_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_34Set_attr[] = "Datatype.Set_attr(self, int keyval, attrval)\n\n        Store attribute value associated with a key\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_34Set_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_keyval;
  PyObject *__pyx_v_attrval = 0;
  void *__pyx_v_ptrval;
  int __pyx_v_incref;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__keyval,&__pyx_n_s__attrval,0};
  __Pyx_RefNannySetupContext("Set_attr");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__keyval);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__attrval);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Set_attr", 1, 2, 2, 1); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Set_attr") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_keyval = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_attrval = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_attr", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Set_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":637
 *         Store attribute value associated with a key
 *         """
 *         cdef void *ptrval = NULL             # <<<<<<<<<<<<<<
 *         cdef int incref = 0
 *         if keyval in type_keyval:
 */
  __pyx_v_ptrval = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":638
 *         """
 *         cdef void *ptrval = NULL
 *         cdef int incref = 0             # <<<<<<<<<<<<<<
 *         if keyval in type_keyval:
 *             ptrval = <void*>attrval
 */
  __pyx_v_incref = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":639
 *         cdef void *ptrval = NULL
 *         cdef int incref = 0
 *         if keyval in type_keyval:             # <<<<<<<<<<<<<<
 *             ptrval = <void*>attrval
 *             incref = 1
 */
  __pyx_t_1 = PyInt_FromLong(__pyx_v_keyval); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely(((PyObject *)__pyx_v_6mpi4py_3MPI_type_keyval) == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 639; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_2 = ((PyDict_Contains(((PyObject *)__pyx_v_6mpi4py_3MPI_type_keyval), __pyx_t_1))); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":640
 *         cdef int incref = 0
 *         if keyval in type_keyval:
 *             ptrval = <void*>attrval             # <<<<<<<<<<<<<<
 *             incref = 1
 *         else:
 */
    __pyx_v_ptrval = ((void *)__pyx_v_attrval);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":641
 *         if keyval in type_keyval:
 *             ptrval = <void*>attrval
 *             incref = 1             # <<<<<<<<<<<<<<
 *         else:
 *             ptrval = PyLong_AsVoidPtr(attrval)
 */
    __pyx_v_incref = 1;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":643
 *             incref = 1
 *         else:
 *             ptrval = PyLong_AsVoidPtr(attrval)             # <<<<<<<<<<<<<<
 *             incref = 0
 *         CHKERR(MPI_Type_set_attr(self.ob_mpi, keyval, ptrval) )
 */
    __pyx_v_ptrval = PyLong_AsVoidPtr(__pyx_v_attrval);

    /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":644
 *         else:
 *             ptrval = PyLong_AsVoidPtr(attrval)
 *             incref = 0             # <<<<<<<<<<<<<<
 *         CHKERR(MPI_Type_set_attr(self.ob_mpi, keyval, ptrval) )
 *         if incref: Py_INCREF(attrval)
 */
    __pyx_v_incref = 0;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":645
 *             ptrval = PyLong_AsVoidPtr(attrval)
 *             incref = 0
 *         CHKERR(MPI_Type_set_attr(self.ob_mpi, keyval, ptrval) )             # <<<<<<<<<<<<<<
 *         if incref: Py_INCREF(attrval)
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_set_attr(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, __pyx_v_keyval, __pyx_v_ptrval)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":646
 *             incref = 0
 *         CHKERR(MPI_Type_set_attr(self.ob_mpi, keyval, ptrval) )
 *         if incref: Py_INCREF(attrval)             # <<<<<<<<<<<<<<
 * 
 *     def Delete_attr(self, int keyval):
 */
  if (__pyx_v_incref) {
    Py_INCREF(__pyx_v_attrval);
    goto __pyx_L7;
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Set_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":648
 *         if incref: Py_INCREF(attrval)
 * 
 *     def Delete_attr(self, int keyval):             # <<<<<<<<<<<<<<
 *         """
 *         Delete attribute value associated with a key
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_35Delete_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_35Delete_attr[] = "Datatype.Delete_attr(self, int keyval)\n\n        Delete attribute value associated with a key\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_35Delete_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_keyval;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__keyval,0};
  __Pyx_RefNannySetupContext("Delete_attr");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__keyval);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Delete_attr") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 648; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_keyval = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 648; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Delete_attr", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 648; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Delete_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":652
 *         Delete attribute value associated with a key
 *         """
 *         CHKERR(MPI_Type_delete_attr(self.ob_mpi, keyval) )             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_delete_attr(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, __pyx_v_keyval)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 652; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Delete_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":655
 * 
 *     @classmethod
 *     def Create_keyval(cls, copy_fn=None, delete_fn=None):             # <<<<<<<<<<<<<<
 *         """
 *         Create a new attribute key for datatypes
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_36Create_keyval(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_36Create_keyval[] = "Datatype.Create_keyval(type cls, copy_fn=None, delete_fn=None)\n\n        Create a new attribute key for datatypes\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_36Create_keyval(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_copy_fn = 0;
  PyObject *__pyx_v_delete_fn = 0;
  int __pyx_v_keyval;
  MPI_Type_copy_attr_function *__pyx_v__copy;
  MPI_Type_delete_attr_function *__pyx_v__del;
  void *__pyx_v_extra_state;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__copy_fn,&__pyx_n_s__delete_fn,0};
  __Pyx_RefNannySetupContext("Create_keyval");
  {
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__copy_fn);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__delete_fn);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create_keyval") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 655; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_copy_fn = values[0];
    __pyx_v_delete_fn = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_keyval", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 655; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":659
 *         Create a new attribute key for datatypes
 *         """
 *         cdef int keyval = MPI_KEYVAL_INVALID             # <<<<<<<<<<<<<<
 *         cdef MPI_Type_copy_attr_function *_copy = type_attr_copy_fn
 *         cdef MPI_Type_delete_attr_function *_del = type_attr_delete_fn
 */
  __pyx_v_keyval = MPI_KEYVAL_INVALID;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":660
 *         """
 *         cdef int keyval = MPI_KEYVAL_INVALID
 *         cdef MPI_Type_copy_attr_function *_copy = type_attr_copy_fn             # <<<<<<<<<<<<<<
 *         cdef MPI_Type_delete_attr_function *_del = type_attr_delete_fn
 *         cdef void *extra_state = NULL
 */
  __pyx_v__copy = __pyx_f_6mpi4py_3MPI_type_attr_copy_fn;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":661
 *         cdef int keyval = MPI_KEYVAL_INVALID
 *         cdef MPI_Type_copy_attr_function *_copy = type_attr_copy_fn
 *         cdef MPI_Type_delete_attr_function *_del = type_attr_delete_fn             # <<<<<<<<<<<<<<
 *         cdef void *extra_state = NULL
 *         CHKERR( MPI_Type_create_keyval(_copy, _del, &keyval, extra_state) )
 */
  __pyx_v__del = __pyx_f_6mpi4py_3MPI_type_attr_delete_fn;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":662
 *         cdef MPI_Type_copy_attr_function *_copy = type_attr_copy_fn
 *         cdef MPI_Type_delete_attr_function *_del = type_attr_delete_fn
 *         cdef void *extra_state = NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_keyval(_copy, _del, &keyval, extra_state) )
 *         type_keyval_new(keyval, copy_fn, delete_fn)
 */
  __pyx_v_extra_state = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":663
 *         cdef MPI_Type_delete_attr_function *_del = type_attr_delete_fn
 *         cdef void *extra_state = NULL
 *         CHKERR( MPI_Type_create_keyval(_copy, _del, &keyval, extra_state) )             # <<<<<<<<<<<<<<
 *         type_keyval_new(keyval, copy_fn, delete_fn)
 *         return keyval
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_keyval(__pyx_v__copy, __pyx_v__del, (&__pyx_v_keyval), __pyx_v_extra_state)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":664
 *         cdef void *extra_state = NULL
 *         CHKERR( MPI_Type_create_keyval(_copy, _del, &keyval, extra_state) )
 *         type_keyval_new(keyval, copy_fn, delete_fn)             # <<<<<<<<<<<<<<
 *         return keyval
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_type_keyval_new(__pyx_v_keyval, __pyx_v_copy_fn, __pyx_v_delete_fn); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":665
 *         CHKERR( MPI_Type_create_keyval(_copy, _del, &keyval, extra_state) )
 *         type_keyval_new(keyval, copy_fn, delete_fn)
 *         return keyval             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":668
 * 
 *     @classmethod
 *     def Free_keyval(cls, int keyval):             # <<<<<<<<<<<<<<
 *         """
 *         Free and attribute key for datatypes
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_37Free_keyval(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_37Free_keyval[] = "Datatype.Free_keyval(type cls, int keyval)\n\n        Free and attribute key for datatypes\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_37Free_keyval(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_keyval;
  int __pyx_v_keyval_save;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__keyval,0};
  __Pyx_RefNannySetupContext("Free_keyval");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__keyval);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Free_keyval") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_keyval = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Free_keyval", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Free_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":672
 *         Free and attribute key for datatypes
 *         """
 *         cdef int keyval_save = keyval             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_free_keyval (&keyval) )
 *         type_keyval_del(keyval_save)
 */
  __pyx_v_keyval_save = __pyx_v_keyval;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":673
 *         """
 *         cdef int keyval_save = keyval
 *         CHKERR( MPI_Type_free_keyval (&keyval) )             # <<<<<<<<<<<<<<
 *         type_keyval_del(keyval_save)
 *         return keyval
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_free_keyval((&__pyx_v_keyval))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":674
 *         cdef int keyval_save = keyval
 *         CHKERR( MPI_Type_free_keyval (&keyval) )
 *         type_keyval_del(keyval_save)             # <<<<<<<<<<<<<<
 *         return keyval
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_type_keyval_del(__pyx_v_keyval_save); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":675
 *         CHKERR( MPI_Type_free_keyval (&keyval) )
 *         type_keyval_del(keyval_save)
 *         return keyval             # <<<<<<<<<<<<<<
 * 
 *     # Naming Objects
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Free_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":680
 *     # --------------
 * 
 *     def Get_name(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get the print name for this datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_38Get_name(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_38Get_name[] = "Datatype.Get_name(self)\n\n        Get the print name for this datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_38Get_name(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  char __pyx_v_name[(MPI_MAX_OBJECT_NAME + 1)];
  int __pyx_v_nlen;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_name");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_name", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_name", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":685
 *         """
 *         cdef char name[MPI_MAX_OBJECT_NAME+1]
 *         cdef int nlen = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_name(self.ob_mpi, name, &nlen) )
 *         return tompistr(name, nlen)
 */
  __pyx_v_nlen = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":686
 *         cdef char name[MPI_MAX_OBJECT_NAME+1]
 *         cdef int nlen = 0
 *         CHKERR( MPI_Type_get_name(self.ob_mpi, name, &nlen) )             # <<<<<<<<<<<<<<
 *         return tompistr(name, nlen)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_name(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, __pyx_v_name, (&__pyx_v_nlen))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":687
 *         cdef int nlen = 0
 *         CHKERR( MPI_Type_get_name(self.ob_mpi, name, &nlen) )
 *         return tompistr(name, nlen)             # <<<<<<<<<<<<<<
 * 
 *     def Set_name(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_tompistr(__pyx_v_name, __pyx_v_nlen); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Get_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":689
 *         return tompistr(name, nlen)
 * 
 *     def Set_name(self, name):             # <<<<<<<<<<<<<<
 *         """
 *         Set the print name for this datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_39Set_name(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_39Set_name[] = "Datatype.Set_name(self, name)\n\n        Set the print name for this datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_39Set_name(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  char *__pyx_v_cname;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__name,0};
  __Pyx_RefNannySetupContext("Set_name");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Set_name") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_name = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_name", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Set_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_name);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":693
 *         Set the print name for this datatype
 *         """
 *         cdef char *cname = NULL             # <<<<<<<<<<<<<<
 *         name = asmpistr(name, &cname, NULL)
 *         CHKERR( MPI_Type_set_name(self.ob_mpi, cname) )
 */
  __pyx_v_cname = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":694
 *         """
 *         cdef char *cname = NULL
 *         name = asmpistr(name, &cname, NULL)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_set_name(self.ob_mpi, cname) )
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_name, (&__pyx_v_cname), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_name);
  __pyx_v_name = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":695
 *         cdef char *cname = NULL
 *         name = asmpistr(name, &cname, NULL)
 *         CHKERR( MPI_Type_set_name(self.ob_mpi, cname) )             # <<<<<<<<<<<<<<
 * 
 *     property name:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_set_name(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, __pyx_v_cname)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Set_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":699
 *     property name:
 *         """datatype name"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_name()
 *         def __set__(self, value):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_4name___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_4name___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":700
 *         """datatype name"""
 *         def __get__(self):
 *             return self.Get_name()             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self.Set_name(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":701
 *         def __get__(self):
 *             return self.Get_name()
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self.Set_name(value)
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_8Datatype_4name_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_8Datatype_4name_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":702
 *             return self.Get_name()
 *         def __set__(self, value):
 *             self.Set_name(value)             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Set_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_value);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.name.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":707
 *     # --------------
 * 
 *     def py2f(self):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_40py2f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_40py2f[] = "Datatype.py2f(self)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_40py2f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("py2f");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("py2f", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "py2f", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":710
 *         """
 *         """
 *         return MPI_Type_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_to_py_MPI_Fint(MPI_Type_c2f(((struct PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.py2f", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":713
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_41f2py(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_41f2py[] = "Datatype.f2py(type cls, arg)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_41f2py(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_arg = 0;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Fint __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__arg,0};
  __Pyx_RefNannySetupContext("f2py");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__arg);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "f2py") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":716
 *         """
 *         """
 *         cdef Datatype datatype = <Datatype>cls()             # <<<<<<<<<<<<<<
 *         datatype.ob_mpi = MPI_Type_f2c(arg)
 *         return datatype
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_1)));
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":717
 *         """
 *         cdef Datatype datatype = <Datatype>cls()
 *         datatype.ob_mpi = MPI_Type_f2c(arg)             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  __pyx_t_2 = __Pyx_PyInt_from_py_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_2 == (MPI_Fint)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_datatype->ob_mpi = MPI_Type_f2c(__pyx_t_2);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":718
 *         cdef Datatype datatype = <Datatype>cls()
 *         datatype.ob_mpi = MPI_Type_f2c(arg)
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_datatype));
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":725
 * # ----------------
 * 
 * def Get_address(location):             # <<<<<<<<<<<<<<
 *     """
 *     Get the address of a location in memory
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Get_address(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Get_address[] = "Get_address(location)\n\n    Get the address of a location in memory\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Get_address = {__Pyx_NAMESTR("Get_address"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Get_address, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Get_address)};
static PyObject *__pyx_pf_6mpi4py_3MPI_5Get_address(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_location = 0;
  void *__pyx_v_baseptr;
  PyObject *__pyx_v_tmp = 0;
  MPI_Aint __pyx_v_address;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__location,0};
  __Pyx_RefNannySetupContext("Get_address");
  __pyx_self = __pyx_self;
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__location);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Get_address") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_location = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_address", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Get_address", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":729
 *     Get the address of a location in memory
 *     """
 *     cdef void *baseptr = NULL             # <<<<<<<<<<<<<<
 *     cdef tmp = getbuffer_r(location, &baseptr, NULL)
 *     cdef MPI_Aint address = 0
 */
  __pyx_v_baseptr = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":730
 *     """
 *     cdef void *baseptr = NULL
 *     cdef tmp = getbuffer_r(location, &baseptr, NULL)             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint address = 0
 *     CHKERR( MPI_Get_address(baseptr, &address) )
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer_r(__pyx_v_location, (&__pyx_v_baseptr), NULL)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_tmp = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":731
 *     cdef void *baseptr = NULL
 *     cdef tmp = getbuffer_r(location, &baseptr, NULL)
 *     cdef MPI_Aint address = 0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Get_address(baseptr, &address) )
 *     return address
 */
  __pyx_v_address = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":732
 *     cdef tmp = getbuffer_r(location, &baseptr, NULL)
 *     cdef MPI_Aint address = 0
 *     CHKERR( MPI_Get_address(baseptr, &address) )             # <<<<<<<<<<<<<<
 *     return address
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_address(__pyx_v_baseptr, (&__pyx_v_address))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":733
 *     cdef MPI_Aint address = 0
 *     CHKERR( MPI_Get_address(baseptr, &address) )
 *     return address             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_address); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Get_address", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":3
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int AddTypeMap(dict TD, object key, Datatype dataype) except -1:             # <<<<<<<<<<<<<<
 *     global TypeDict
 *     if dataype.ob_mpi != MPI_DATATYPE_NULL:
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_AddTypeMap(PyObject *__pyx_v_TD, PyObject *__pyx_v_key, struct PyMPIDatatypeObject *__pyx_v_dataype) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("AddTypeMap");

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":5
 * cdef inline int AddTypeMap(dict TD, object key, Datatype dataype) except -1:
 *     global TypeDict
 *     if dataype.ob_mpi != MPI_DATATYPE_NULL:             # <<<<<<<<<<<<<<
 *         TD[key] = dataype
 *         return 1
 */
  __pyx_t_1 = (__pyx_v_dataype->ob_mpi != MPI_DATATYPE_NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":6
 *     global TypeDict
 *     if dataype.ob_mpi != MPI_DATATYPE_NULL:
 *         TD[key] = dataype             # <<<<<<<<<<<<<<
 *         return 1
 *     return 0
 */
    if (PyDict_SetItem(((PyObject *)__pyx_v_TD), __pyx_v_key, ((PyObject *)__pyx_v_dataype)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":7
 *     if dataype.ob_mpi != MPI_DATATYPE_NULL:
 *         TD[key] = dataype
 *         return 1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_r = 1;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":8
 *         TD[key] = dataype
 *         return 1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.AddTypeMap", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":7
 *     """
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ob_mpi.MPI_SOURCE = MPI_ANY_SOURCE
 *         self.ob_mpi.MPI_TAG    = MPI_ANY_TAG
 */

static int __pyx_pf_6mpi4py_3MPI_6Status___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_6Status___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":8
 * 
 *     def __cinit__(self):
 *         self.ob_mpi.MPI_SOURCE = MPI_ANY_SOURCE             # <<<<<<<<<<<<<<
 *         self.ob_mpi.MPI_TAG    = MPI_ANY_TAG
 *         self.ob_mpi.MPI_ERROR  = MPI_SUCCESS
 */
  ((struct PyMPIStatusObject *)__pyx_v_self)->ob_mpi.MPI_SOURCE = MPI_ANY_SOURCE;

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":9
 *     def __cinit__(self):
 *         self.ob_mpi.MPI_SOURCE = MPI_ANY_SOURCE
 *         self.ob_mpi.MPI_TAG    = MPI_ANY_TAG             # <<<<<<<<<<<<<<
 *         self.ob_mpi.MPI_ERROR  = MPI_SUCCESS
 * 
 */
  ((struct PyMPIStatusObject *)__pyx_v_self)->ob_mpi.MPI_TAG = MPI_ANY_TAG;

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":10
 *         self.ob_mpi.MPI_SOURCE = MPI_ANY_SOURCE
 *         self.ob_mpi.MPI_TAG    = MPI_ANY_TAG
 *         self.ob_mpi.MPI_ERROR  = MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  ((struct PyMPIStatusObject *)__pyx_v_self)->ob_mpi.MPI_ERROR = MPI_SUCCESS;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":12
 *         self.ob_mpi.MPI_ERROR  = MPI_SUCCESS
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(self,  Status): return NotImplemented
 *         if not isinstance(other, Status): return NotImplemented
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_1__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_1__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  struct PyMPIStatusObject *__pyx_v_s = 0;
  struct PyMPIStatusObject *__pyx_v_o = 0;
  int __pyx_v_r;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":13
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Status): return NotImplemented             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Status): return NotImplemented
 *         cdef Status s = <Status>self, o = <Status>other
 */
  __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Status));
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_self, __pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":14
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Status): return NotImplemented
 *         if not isinstance(other, Status): return NotImplemented             # <<<<<<<<<<<<<<
 *         cdef Status s = <Status>self, o = <Status>other
 *         cdef int r = equal_Status(&s.ob_mpi, &o.ob_mpi)
 */
  __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Status));
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_other, __pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = (!__pyx_t_3);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":15
 *         if not isinstance(self,  Status): return NotImplemented
 *         if not isinstance(other, Status): return NotImplemented
 *         cdef Status s = <Status>self, o = <Status>other             # <<<<<<<<<<<<<<
 *         cdef int r = equal_Status(&s.ob_mpi, &o.ob_mpi)
 *         if   op == Py_EQ: return  r == 0
 */
  __Pyx_INCREF(((PyObject *)((struct PyMPIStatusObject *)__pyx_v_self)));
  __pyx_v_s = ((struct PyMPIStatusObject *)__pyx_v_self);
  __Pyx_INCREF(((PyObject *)((struct PyMPIStatusObject *)__pyx_v_other)));
  __pyx_v_o = ((struct PyMPIStatusObject *)__pyx_v_other);

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":16
 *         if not isinstance(other, Status): return NotImplemented
 *         cdef Status s = <Status>self, o = <Status>other
 *         cdef int r = equal_Status(&s.ob_mpi, &o.ob_mpi)             # <<<<<<<<<<<<<<
 *         if   op == Py_EQ: return  r == 0
 *         elif op == Py_NE: return  r != 0
 */
  __pyx_v_r = __pyx_f_6mpi4py_3MPI_equal_Status((&__pyx_v_s->ob_mpi), (&__pyx_v_o->ob_mpi));

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":18
 *         cdef int r = equal_Status(&s.ob_mpi, &o.ob_mpi)
 *         if   op == Py_EQ: return  r == 0
 *         elif op == Py_NE: return  r != 0             # <<<<<<<<<<<<<<
 *         else: raise TypeError("only '==' and '!='")
 * 
 */
  switch (__pyx_v_op) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":17
 *         cdef Status s = <Status>self, o = <Status>other
 *         cdef int r = equal_Status(&s.ob_mpi, &o.ob_mpi)
 *         if   op == Py_EQ: return  r == 0             # <<<<<<<<<<<<<<
 *         elif op == Py_NE: return  r != 0
 *         else: raise TypeError("only '==' and '!='")
 */
    case Py_EQ:
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_r == 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":18
 *         cdef int r = equal_Status(&s.ob_mpi, &o.ob_mpi)
 *         if   op == Py_EQ: return  r == 0
 *         elif op == Py_NE: return  r != 0             # <<<<<<<<<<<<<<
 *         else: raise TypeError("only '==' and '!='")
 * 
 */
    case Py_NE:
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_r != 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    break;
    default:

    /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":19
 *         if   op == Py_EQ: return  r == 0
 *         elif op == Py_NE: return  r != 0
 *         else: raise TypeError("only '==' and '!='")             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_1 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_60), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[20]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    break;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Status.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_s);
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":22
 * 
 * 
 *     def Get_source(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get message source
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_2Get_source(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_2Get_source[] = "Status.Get_source(self)\n\n        Get message source\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_2Get_source(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_source");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_source", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_source", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":26
 *         Get message source
 *         """
 *         return self.ob_mpi.MPI_SOURCE             # <<<<<<<<<<<<<<
 * 
 *     def Set_source(self, int source):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyInt_FromLong(((struct PyMPIStatusObject *)__pyx_v_self)->ob_mpi.MPI_SOURCE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Status.Get_source", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":28
 *         return self.ob_mpi.MPI_SOURCE
 * 
 *     def Set_source(self, int source):             # <<<<<<<<<<<<<<
 *         """
 *         Set message source
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_3Set_source(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_3Set_source[] = "Status.Set_source(self, int source)\n\n        Set message source\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_3Set_source(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_source;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__source,0};
  __Pyx_RefNannySetupContext("Set_source");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__source);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Set_source") < 0)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_source = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_source", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[20]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_source", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":32
 *         Set message source
 *         """
 *         self.ob_mpi.MPI_SOURCE = source             # <<<<<<<<<<<<<<
 * 
 *     property source:
 */
  ((struct PyMPIStatusObject *)__pyx_v_self)->ob_mpi.MPI_SOURCE = __pyx_v_source;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":36
 *     property source:
 *         """source"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_source()
 *         def __set__(self, value):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_6source___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_6source___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":37
 *         """source"""
 *         def __get__(self):
 *             return self.Get_source()             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self.Set_source(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_source); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Status.source.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":38
 *         def __get__(self):
 *             return self.Get_source()
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self.Set_source(value)
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_6Status_6source_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_6Status_6source_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":39
 *             return self.Get_source()
 *         def __set__(self, value):
 *             self.Set_source(value)             # <<<<<<<<<<<<<<
 * 
 *     def Get_tag(self):
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Set_source); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_value);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Status.source.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":41
 *             self.Set_source(value)
 * 
 *     def Get_tag(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get message tag
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_4Get_tag(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_4Get_tag[] = "Status.Get_tag(self)\n\n        Get message tag\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_4Get_tag(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_tag");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_tag", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_tag", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":45
 *         Get message tag
 *         """
 *         return self.ob_mpi.MPI_TAG             # <<<<<<<<<<<<<<
 * 
 *     def Set_tag(self, int tag):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyInt_FromLong(((struct PyMPIStatusObject *)__pyx_v_self)->ob_mpi.MPI_TAG); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Status.Get_tag", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":47
 *         return self.ob_mpi.MPI_TAG
 * 
 *     def Set_tag(self, int tag):             # <<<<<<<<<<<<<<
 *         """
 *         Set message tag
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_5Set_tag(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_5Set_tag[] = "Status.Set_tag(self, int tag)\n\n        Set message tag\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_5Set_tag(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_tag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("Set_tag");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Set_tag") < 0)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_tag = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_tag", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[20]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_tag", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":51
 *         Set message tag
 *         """
 *         self.ob_mpi.MPI_TAG = tag             # <<<<<<<<<<<<<<
 * 
 *     property tag:
 */
  ((struct PyMPIStatusObject *)__pyx_v_self)->ob_mpi.MPI_TAG = __pyx_v_tag;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":55
 *     property tag:
 *         """tag"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_tag()
 *         def __set__(self, value):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_3tag___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_3tag___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":56
 *         """tag"""
 *         def __get__(self):
 *             return self.Get_tag()             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self.Set_tag(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_tag); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Status.tag.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":57
 *         def __get__(self):
 *             return self.Get_tag()
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self.Set_tag(value)
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_6Status_3tag_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_6Status_3tag_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":58
 *             return self.Get_tag()
 *         def __set__(self, value):
 *             self.Set_tag(value)             # <<<<<<<<<<<<<<
 * 
 *     def Get_error(self):
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Set_tag); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_value);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Status.tag.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":60
 *             self.Set_tag(value)
 * 
 *     def Get_error(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get message error
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_6Get_error(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_6Get_error[] = "Status.Get_error(self)\n\n        Get message error\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_6Get_error(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_error");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_error", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_error", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":64
 *         Get message error
 *         """
 *         return self.ob_mpi.MPI_ERROR             # <<<<<<<<<<<<<<
 * 
 *     def Set_error(self, int error):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyInt_FromLong(((struct PyMPIStatusObject *)__pyx_v_self)->ob_mpi.MPI_ERROR); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Status.Get_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":66
 *         return self.ob_mpi.MPI_ERROR
 * 
 *     def Set_error(self, int error):             # <<<<<<<<<<<<<<
 *         """
 *         Set message error
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_7Set_error(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_7Set_error[] = "Status.Set_error(self, int error)\n\n        Set message error\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_7Set_error(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_error;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__error,0};
  __Pyx_RefNannySetupContext("Set_error");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__error);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Set_error") < 0)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_error = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_error == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_error", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[20]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":70
 *         Set message error
 *         """
 *         self.ob_mpi.MPI_ERROR = error             # <<<<<<<<<<<<<<
 * 
 *     property error:
 */
  ((struct PyMPIStatusObject *)__pyx_v_self)->ob_mpi.MPI_ERROR = __pyx_v_error;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":74
 *     property error:
 *         """error"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_error()
 *         def __set__(self, value):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_5error___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_5error___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":75
 *         """error"""
 *         def __get__(self):
 *             return self.Get_error()             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self.Set_error(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_error); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Status.error.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":76
 *         def __get__(self):
 *             return self.Get_error()
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self.Set_error(value)
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_6Status_5error_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_6Status_5error_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":77
 *             return self.Get_error()
 *         def __set__(self, value):
 *             self.Set_error(value)             # <<<<<<<<<<<<<<
 * 
 *     def Get_count(self, Datatype datatype not None=BYTE):
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Set_error); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_value);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Status.error.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":79
 *             self.Set_error(value)
 * 
 *     def Get_count(self, Datatype datatype not None=BYTE):             # <<<<<<<<<<<<<<
 *         """
 *         Get the number of *top level* elements
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_8Get_count(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_8Get_count[] = "Status.Get_count(self, Datatype datatype=BYTE)\n\n        Get the number of *top level* elements\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_8Get_count(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  int __pyx_v_count;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__datatype,0};
  __Pyx_RefNannySetupContext("Get_count");
  {
    PyObject* values[1] = {0};
    values[0] = (PyObject *)__pyx_k_61;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__datatype);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Get_count") < 0)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_datatype = ((struct PyMPIDatatypeObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_count", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[20]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.Get_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_datatype), __pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":83
 *         Get the number of *top level* elements
 *         """
 *         cdef int count = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Get_count(&self.ob_mpi, datatype.ob_mpi, &count) )
 *         return count
 */
  __pyx_v_count = MPI_UNDEFINED;

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":84
 *         """
 *         cdef int count = MPI_UNDEFINED
 *         CHKERR( MPI_Get_count(&self.ob_mpi, datatype.ob_mpi, &count) )             # <<<<<<<<<<<<<<
 *         return count
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_count((&((struct PyMPIStatusObject *)__pyx_v_self)->ob_mpi), __pyx_v_datatype->ob_mpi, (&__pyx_v_count))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":85
 *         cdef int count = MPI_UNDEFINED
 *         CHKERR( MPI_Get_count(&self.ob_mpi, datatype.ob_mpi, &count) )
 *         return count             # <<<<<<<<<<<<<<
 * 
 *     property count:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Status.Get_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":89
 *     property count:
 *         """byte count"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_count(__BYTE__)
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_5count___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_5count___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":90
 *         """byte count"""
 *         def __get__(self):
 *             return self.Get_count(__BYTE__)             # <<<<<<<<<<<<<<
 * 
 *     def Get_elements(self, Datatype datatype not None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_count); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__));
  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Status.count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":92
 *             return self.Get_count(__BYTE__)
 * 
 *     def Get_elements(self, Datatype datatype not None):             # <<<<<<<<<<<<<<
 *         """
 *         Get the number of basic elements in a datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_9Get_elements(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_9Get_elements[] = "Status.Get_elements(self, Datatype datatype)\n\n        Get the number of basic elements in a datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_9Get_elements(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  int __pyx_v_elements;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__datatype,0};
  __Pyx_RefNannySetupContext("Get_elements");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__datatype);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Get_elements") < 0)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_datatype = ((struct PyMPIDatatypeObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_elements", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[20]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.Get_elements", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_datatype), __pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":96
 *         Get the number of basic elements in a datatype
 *         """
 *         cdef int elements = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Get_elements(&self.ob_mpi, datatype.ob_mpi, &elements) )
 *         return elements
 */
  __pyx_v_elements = MPI_UNDEFINED;

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":97
 *         """
 *         cdef int elements = MPI_UNDEFINED
 *         CHKERR( MPI_Get_elements(&self.ob_mpi, datatype.ob_mpi, &elements) )             # <<<<<<<<<<<<<<
 *         return elements
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_elements((&((struct PyMPIStatusObject *)__pyx_v_self)->ob_mpi), __pyx_v_datatype->ob_mpi, (&__pyx_v_elements))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":98
 *         cdef int elements = MPI_UNDEFINED
 *         CHKERR( MPI_Get_elements(&self.ob_mpi, datatype.ob_mpi, &elements) )
 *         return elements             # <<<<<<<<<<<<<<
 * 
 *     def Set_elements(self, Datatype datatype not None, int count):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_elements); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Status.Get_elements", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":100
 *         return elements
 * 
 *     def Set_elements(self, Datatype datatype not None, int count):             # <<<<<<<<<<<<<<
 *         """
 *         Set the number of elements in a status
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_10Set_elements(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_10Set_elements[] = "Status.Set_elements(self, Datatype datatype, int count)\n\n        Set the number of elements in a status\n\n        .. note:: This should be only used when implementing\n           query callback functions for generalized requests\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_10Set_elements(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  int __pyx_v_count;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__datatype,&__pyx_n_s__count,0};
  __Pyx_RefNannySetupContext("Set_elements");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__datatype);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__count);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Set_elements", 1, 2, 2, 1); {__pyx_filename = __pyx_f[20]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Set_elements") < 0)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_datatype = ((struct PyMPIDatatypeObject *)values[0]);
    __pyx_v_count = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_count == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_elements", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[20]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_elements", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_datatype), __pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":107
 *            query callback functions for generalized requests
 *         """
 *         CHKERR( MPI_Status_set_elements(&self.ob_mpi, datatype.ob_mpi, count) )             # <<<<<<<<<<<<<<
 * 
 *     def Is_cancelled(self):
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Status_set_elements((&((struct PyMPIStatusObject *)__pyx_v_self)->ob_mpi), __pyx_v_datatype->ob_mpi, __pyx_v_count)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_elements", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":109
 *         CHKERR( MPI_Status_set_elements(&self.ob_mpi, datatype.ob_mpi, count) )
 * 
 *     def Is_cancelled(self):             # <<<<<<<<<<<<<<
 *         """
 *         Test to see if a request was cancelled
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_11Is_cancelled(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_11Is_cancelled[] = "Status.Is_cancelled(self)\n\n        Test to see if a request was cancelled\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_11Is_cancelled(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Is_cancelled");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Is_cancelled", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Is_cancelled", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":113
 *         Test to see if a request was cancelled
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Test_cancelled(&self.ob_mpi, &flag) )
 *         return <bint>flag
 */
  __pyx_v_flag = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":114
 *         """
 *         cdef int flag = 0
 *         CHKERR( MPI_Test_cancelled(&self.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Test_cancelled((&((struct PyMPIStatusObject *)__pyx_v_self)->ob_mpi), (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":115
 *         cdef int flag = 0
 *         CHKERR( MPI_Test_cancelled(&self.ob_mpi, &flag) )
 *         return <bint>flag             # <<<<<<<<<<<<<<
 * 
 *     def Set_cancelled(self, bint flag):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_v_flag)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Status.Is_cancelled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":117
 *         return <bint>flag
 * 
 *     def Set_cancelled(self, bint flag):             # <<<<<<<<<<<<<<
 *         """
 *         Set the cancelled state associated with a status
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_12Set_cancelled(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_12Set_cancelled[] = "Status.Set_cancelled(self, int flag)\n\n        Set the cancelled state associated with a status\n\n        .. note:: This should be only used when implementing\n           query callback functions for generalized requests\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_12Set_cancelled(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__flag,0};
  __Pyx_RefNannySetupContext("Set_cancelled");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__flag);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Set_cancelled") < 0)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_flag = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_flag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_cancelled", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[20]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_cancelled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":124
 *            query callback functions for generalized requests
 *         """
 *         CHKERR( MPI_Status_set_cancelled(&self.ob_mpi, flag) )             # <<<<<<<<<<<<<<
 * 
 *     property cancelled:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Status_set_cancelled((&((struct PyMPIStatusObject *)__pyx_v_self)->ob_mpi), __pyx_v_flag)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_cancelled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":130
 *         cancelled state
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Is_cancelled()
 *         def __set__(self, value):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_9cancelled___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_9cancelled___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":131
 *         """
 *         def __get__(self):
 *             return self.Is_cancelled()             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self.Set_cancelled(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Is_cancelled); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Status.cancelled.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":132
 *         def __get__(self):
 *             return self.Is_cancelled()
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self.Set_cancelled(value)
 */

static int __pyx_pf_6mpi4py_3MPI_6Status_9cancelled_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_6Status_9cancelled_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":133
 *             return self.Is_cancelled()
 *         def __set__(self, value):
 *             self.Set_cancelled(value)             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Set_cancelled); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_value);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Status.cancelled.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":7
 *     """
 * 
 *     def __cinit__(self, Request request=None):             # <<<<<<<<<<<<<<
 *         self.ob_mpi = MPI_REQUEST_NULL
 *         if request is not None:
 */

static int __pyx_pf_6mpi4py_3MPI_7Request___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_7Request___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIRequestObject *__pyx_v_request = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__request,0};
  __Pyx_RefNannySetupContext("__cinit__");
  {
    PyObject* values[1] = {0};
    values[0] = (PyObject *)((struct PyMPIRequestObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__request);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_request = ((struct PyMPIRequestObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_request), __pyx_ptype_6mpi4py_3MPI_Request, 1, "request", 0))) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":8
 * 
 *     def __cinit__(self, Request request=None):
 *         self.ob_mpi = MPI_REQUEST_NULL             # <<<<<<<<<<<<<<
 *         if request is not None:
 *             self.ob_mpi = request.ob_mpi
 */
  ((struct PyMPIRequestObject *)__pyx_v_self)->ob_mpi = MPI_REQUEST_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":9
 *     def __cinit__(self, Request request=None):
 *         self.ob_mpi = MPI_REQUEST_NULL
 *         if request is not None:             # <<<<<<<<<<<<<<
 *             self.ob_mpi = request.ob_mpi
 *             self.ob_buf = request.ob_buf
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_request) != Py_None);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":10
 *         self.ob_mpi = MPI_REQUEST_NULL
 *         if request is not None:
 *             self.ob_mpi = request.ob_mpi             # <<<<<<<<<<<<<<
 *             self.ob_buf = request.ob_buf
 * 
 */
    ((struct PyMPIRequestObject *)__pyx_v_self)->ob_mpi = __pyx_v_request->ob_mpi;

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":11
 *         if request is not None:
 *             self.ob_mpi = request.ob_mpi
 *             self.ob_buf = request.ob_buf             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
    __Pyx_INCREF(__pyx_v_request->ob_buf);
    __Pyx_GIVEREF(__pyx_v_request->ob_buf);
    __Pyx_GOTREF(((struct PyMPIRequestObject *)__pyx_v_self)->ob_buf);
    __Pyx_DECREF(((struct PyMPIRequestObject *)__pyx_v_self)->ob_buf);
    ((struct PyMPIRequestObject *)__pyx_v_self)->ob_buf = __pyx_v_request->ob_buf;
    goto __pyx_L6;
  }
  __pyx_L6:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":13
 *             self.ob_buf = request.ob_buf
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( del_Request(&self.ob_mpi) )
 */

static void __pyx_pf_6mpi4py_3MPI_7Request_1__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_6mpi4py_3MPI_7Request_1__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":14
 * 
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return             # <<<<<<<<<<<<<<
 *         CHKERR( del_Request(&self.ob_mpi) )
 * 
 */
  __pyx_t_1 = (!(((struct PyMPIRequestObject *)__pyx_v_self)->flags & __pyx_e_6mpi4py_3MPI_PyMPI_OWNED));
  if (__pyx_t_1) {
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":15
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( del_Request(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_f_6mpi4py_3MPI_del_Request((&((struct PyMPIRequestObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":17
 *         CHKERR( del_Request(&self.ob_mpi) )
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(self,  Request): return NotImplemented
 *         if not isinstance(other, Request): return NotImplemented
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  struct PyMPIRequestObject *__pyx_v_s = 0;
  struct PyMPIRequestObject *__pyx_v_o = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":18
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Request): return NotImplemented             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Request): return NotImplemented
 *         cdef Request s = <Request>self, o = <Request>other
 */
  __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request));
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_self, __pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":19
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Request): return NotImplemented
 *         if not isinstance(other, Request): return NotImplemented             # <<<<<<<<<<<<<<
 *         cdef Request s = <Request>self, o = <Request>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 */
  __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request));
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_other, __pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = (!__pyx_t_3);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":20
 *         if not isinstance(self,  Request): return NotImplemented
 *         if not isinstance(other, Request): return NotImplemented
 *         cdef Request s = <Request>self, o = <Request>other             # <<<<<<<<<<<<<<
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 */
  __Pyx_INCREF(((PyObject *)((struct PyMPIRequestObject *)__pyx_v_self)));
  __pyx_v_s = ((struct PyMPIRequestObject *)__pyx_v_self);
  __Pyx_INCREF(((PyObject *)((struct PyMPIRequestObject *)__pyx_v_other)));
  __pyx_v_o = ((struct PyMPIRequestObject *)__pyx_v_other);

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":22
 *         cdef Request s = <Request>self, o = <Request>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError("only '==' and '!='")
 * 
 */
  switch (__pyx_v_op) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":21
 *         if not isinstance(other, Request): return NotImplemented
 *         cdef Request s = <Request>self, o = <Request>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)             # <<<<<<<<<<<<<<
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")
 */
    case Py_EQ:
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi == __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":22
 *         cdef Request s = <Request>self, o = <Request>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError("only '==' and '!='")
 * 
 */
    case Py_NE:
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi != __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    break;
    default:

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":23
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
    __pyx_t_1 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_62), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[21]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    break;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Request.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_s);
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":25
 *         else: raise TypeError("only '==' and '!='")
 * 
 *     def __bool__(self):             # <<<<<<<<<<<<<<
 *         return self.ob_mpi != MPI_REQUEST_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_7Request_3__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_7Request_3__bool__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":26
 * 
 *     def __bool__(self):
 *         return self.ob_mpi != MPI_REQUEST_NULL             # <<<<<<<<<<<<<<
 * 
 *     # Completion Operations
 */
  __pyx_r = (((struct PyMPIRequestObject *)__pyx_v_self)->ob_mpi != MPI_REQUEST_NULL);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":31
 *     # ---------------------
 * 
 *     def Wait(self, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Wait for a send or receive to complete
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_4Wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_4Wait[] = "Request.Wait(self, Status status=None)\n\n        Wait for a send or receive to complete\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_4Wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIStatusObject *__pyx_v_status = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Wait");
  {
    PyObject* values[1] = {0};
    values[0] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Wait") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Wait", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Wait", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":35
 *         Wait for a send or receive to complete
 *         """
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Wait(
 *             &self.ob_mpi, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":36
 *         """
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Wait(             # <<<<<<<<<<<<<<
 *             &self.ob_mpi, statusp) )
 *         if self.ob_mpi == MPI_REQUEST_NULL:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":37
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Wait(
 *             &self.ob_mpi, statusp) )             # <<<<<<<<<<<<<<
 *         if self.ob_mpi == MPI_REQUEST_NULL:
 *             self.ob_buf = None
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Wait((&((struct PyMPIRequestObject *)__pyx_v_self)->ob_mpi), __pyx_v_statusp)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":36
 *         """
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Wait(             # <<<<<<<<<<<<<<
 *             &self.ob_mpi, statusp) )
 *         if self.ob_mpi == MPI_REQUEST_NULL:
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":38
 *         with nogil: CHKERR( MPI_Wait(
 *             &self.ob_mpi, statusp) )
 *         if self.ob_mpi == MPI_REQUEST_NULL:             # <<<<<<<<<<<<<<
 *             self.ob_buf = None
 * 
 */
  __pyx_t_2 = (((struct PyMPIRequestObject *)__pyx_v_self)->ob_mpi == MPI_REQUEST_NULL);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":39
 *             &self.ob_mpi, statusp) )
 *         if self.ob_mpi == MPI_REQUEST_NULL:
 *             self.ob_buf = None             # <<<<<<<<<<<<<<
 * 
 *     def Test(self, Status status=None):
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(((struct PyMPIRequestObject *)__pyx_v_self)->ob_buf);
    __Pyx_DECREF(((struct PyMPIRequestObject *)__pyx_v_self)->ob_buf);
    ((struct PyMPIRequestObject *)__pyx_v_self)->ob_buf = Py_None;
    goto __pyx_L10;
  }
  __pyx_L10:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Wait", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":41
 *             self.ob_buf = None
 * 
 *     def Test(self, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Test for the completion of a send or receive
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_5Test(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_5Test[] = "Request.Test(self, Status status=None)\n\n        Test for the completion of a send or receive\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_5Test(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIStatusObject *__pyx_v_status = 0;
  int __pyx_v_flag;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Test");
  {
    PyObject* values[1] = {0};
    values[0] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Test") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Test", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Test", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":45
 *         Test for the completion of a send or receive
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Test(
 */
  __pyx_v_flag = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":46
 *         """
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Test(
 *             &self.ob_mpi, &flag, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":47
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Test(             # <<<<<<<<<<<<<<
 *             &self.ob_mpi, &flag, statusp) )
 *         if self.ob_mpi == MPI_REQUEST_NULL:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":48
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Test(
 *             &self.ob_mpi, &flag, statusp) )             # <<<<<<<<<<<<<<
 *         if self.ob_mpi == MPI_REQUEST_NULL:
 *             self.ob_buf = None
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Test((&((struct PyMPIRequestObject *)__pyx_v_self)->ob_mpi), (&__pyx_v_flag), __pyx_v_statusp)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":47
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Test(             # <<<<<<<<<<<<<<
 *             &self.ob_mpi, &flag, statusp) )
 *         if self.ob_mpi == MPI_REQUEST_NULL:
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":49
 *         with nogil: CHKERR( MPI_Test(
 *             &self.ob_mpi, &flag, statusp) )
 *         if self.ob_mpi == MPI_REQUEST_NULL:             # <<<<<<<<<<<<<<
 *             self.ob_buf = None
 *         return <bint>flag
 */
  __pyx_t_2 = (((struct PyMPIRequestObject *)__pyx_v_self)->ob_mpi == MPI_REQUEST_NULL);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":50
 *             &self.ob_mpi, &flag, statusp) )
 *         if self.ob_mpi == MPI_REQUEST_NULL:
 *             self.ob_buf = None             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(((struct PyMPIRequestObject *)__pyx_v_self)->ob_buf);
    __Pyx_DECREF(((struct PyMPIRequestObject *)__pyx_v_self)->ob_buf);
    ((struct PyMPIRequestObject *)__pyx_v_self)->ob_buf = Py_None;
    goto __pyx_L10;
  }
  __pyx_L10:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":51
 *         if self.ob_mpi == MPI_REQUEST_NULL:
 *             self.ob_buf = None
 *         return <bint>flag             # <<<<<<<<<<<<<<
 * 
 *     def Free(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyBool_FromLong(((int)__pyx_v_flag)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Request.Test", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":53
 *         return <bint>flag
 * 
 *     def Free(self):             # <<<<<<<<<<<<<<
 *         """
 *         Free a communication request
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_6Free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_6Free[] = "Request.Free(self)\n\n        Free a communication request\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_6Free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Free");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Free", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Free", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":57
 *         Free a communication request
 *         """
 *         with nogil: CHKERR( MPI_Request_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_status(self, Status status=None):
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Request_free((&((struct PyMPIRequestObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":59
 *         with nogil: CHKERR( MPI_Request_free(&self.ob_mpi) )
 * 
 *     def Get_status(self, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Non-destructive test for the completion of a request
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_7Get_status(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_7Get_status[] = "Request.Get_status(self, Status status=None)\n\n        Non-destructive test for the completion of a request\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_7Get_status(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIStatusObject *__pyx_v_status = 0;
  int __pyx_v_flag;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Get_status");
  {
    PyObject* values[1] = {0};
    values[0] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Get_status") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_status", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Get_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":63
 *         Non-destructive test for the completion of a request
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Request_get_status(
 */
  __pyx_v_flag = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":64
 *         """
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Request_get_status(
 *             self.ob_mpi, &flag, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":65
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Request_get_status(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &flag, statusp) )
 *         return <bint>flag
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":66
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Request_get_status(
 *             self.ob_mpi, &flag, statusp) )             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Request_get_status(((struct PyMPIRequestObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_flag), __pyx_v_statusp)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":65
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Request_get_status(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &flag, statusp) )
 *         return <bint>flag
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":67
 *         with nogil: CHKERR( MPI_Request_get_status(
 *             self.ob_mpi, &flag, statusp) )
 *         return <bint>flag             # <<<<<<<<<<<<<<
 * 
 *     # Multiple Completions
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_v_flag)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Request.Get_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":73
 * 
 *     @classmethod
 *     def Waitany(cls, requests, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Wait for any previously initiated request to complete
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_8Waitany(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_8Waitany[] = "Request.Waitany(type cls, requests, Status status=None)\n\n        Wait for any previously initiated request to complete\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_8Waitany(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_requests = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  int __pyx_v_count;
  MPI_Request *__pyx_v_irequests;
  int __pyx_v_index;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_v_tmp = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__requests,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Waitany");
  {
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__requests);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Waitany") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Waitany", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Waitany", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":77
 *         Wait for any previously initiated request to complete
 *         """
 *         cdef int count = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Request *irequests = NULL
 *         cdef int index = MPI_UNDEFINED
 */
  __pyx_v_count = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":78
 *         """
 *         cdef int count = 0
 *         cdef MPI_Request *irequests = NULL             # <<<<<<<<<<<<<<
 *         cdef int index = MPI_UNDEFINED
 *         cdef MPI_Status *statusp = arg_Status(status)
 */
  __pyx_v_irequests = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":79
 *         cdef int count = 0
 *         cdef MPI_Request *irequests = NULL
 *         cdef int index = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         #
 */
  __pyx_v_index = MPI_UNDEFINED;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":80
 *         cdef MPI_Request *irequests = NULL
 *         cdef int index = MPI_UNDEFINED
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         #
 *         cdef tmp = acquire_rs(requests, None, &count, &irequests, NULL)
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":82
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         #
 *         cdef tmp = acquire_rs(requests, None, &count, &irequests, NULL)             # <<<<<<<<<<<<<<
 *         try:
 *             with nogil: CHKERR( MPI_Waitany(
 */
  __pyx_t_1 = Py_None;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_acquire_rs(__pyx_v_requests, __pyx_t_1, (&__pyx_v_count), (&__pyx_v_irequests), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_tmp = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":83
 *         #
 *         cdef tmp = acquire_rs(requests, None, &count, &irequests, NULL)
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Waitany(
 *                 count, irequests, &index, statusp) )
 */
  /*try:*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":84
 *         cdef tmp = acquire_rs(requests, None, &count, &irequests, NULL)
 *         try:
 *             with nogil: CHKERR( MPI_Waitany(             # <<<<<<<<<<<<<<
 *                 count, irequests, &index, statusp) )
 *         finally:
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save = NULL;
        #endif
        Py_UNBLOCK_THREADS
        /*try:*/ {

          /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":85
 *         try:
 *             with nogil: CHKERR( MPI_Waitany(
 *                 count, irequests, &index, statusp) )             # <<<<<<<<<<<<<<
 *         finally:
 *             release_rs(requests, None, count, irequests, NULL)
 */
          __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Waitany(__pyx_v_count, __pyx_v_irequests, (&__pyx_v_index), __pyx_v_statusp)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L10;}
        }

        /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":84
 *         cdef tmp = acquire_rs(requests, None, &count, &irequests, NULL)
 *         try:
 *             with nogil: CHKERR( MPI_Waitany(             # <<<<<<<<<<<<<<
 *                 count, irequests, &index, statusp) )
 *         finally:
 */
        /*finally:*/ {
          int __pyx_why;
          __pyx_why = 0; goto __pyx_L11;
          __pyx_L10: __pyx_why = 4; goto __pyx_L11;
          __pyx_L11:;
          Py_BLOCK_THREADS
          switch (__pyx_why) {
            case 4: goto __pyx_L7;
          }
        }
    }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":87
 *                 count, irequests, &index, statusp) )
 *         finally:
 *             release_rs(requests, None, count, irequests, NULL)             # <<<<<<<<<<<<<<
 *         return index
 * 
 */
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L8;
    __pyx_L7: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L8;
    }
    __pyx_L8:;
    __pyx_t_2 = Py_None;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_release_rs(__pyx_v_requests, __pyx_t_2, __pyx_v_count, __pyx_v_irequests, NULL); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L14;
    __pyx_L13_error:;
    if (__pyx_why == 4) {
      Py_XDECREF(__pyx_exc_type);
      Py_XDECREF(__pyx_exc_value);
      Py_XDECREF(__pyx_exc_tb);
    }
    goto __pyx_L1_error;
    __pyx_L14:;
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":88
 *         finally:
 *             release_rs(requests, None, count, irequests, NULL)
 *         return index             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_index); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Request.Waitany", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":91
 * 
 *     @classmethod
 *     def Testany(cls, requests, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Test for completion of any previously initiated request
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_9Testany(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_9Testany[] = "Request.Testany(type cls, requests, Status status=None)\n\n        Test for completion of any previously initiated request\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_9Testany(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_requests = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  int __pyx_v_count;
  MPI_Request *__pyx_v_irequests;
  int __pyx_v_index;
  int __pyx_v_flag;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_v_tmp = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__requests,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Testany");
  {
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__requests);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Testany") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Testany", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Testany", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":95
 *         Test for completion of any previously initiated request
 *         """
 *         cdef int count = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Request *irequests = NULL
 *         cdef int index = MPI_UNDEFINED
 */
  __pyx_v_count = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":96
 *         """
 *         cdef int count = 0
 *         cdef MPI_Request *irequests = NULL             # <<<<<<<<<<<<<<
 *         cdef int index = MPI_UNDEFINED
 *         cdef int flag = 0
 */
  __pyx_v_irequests = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":97
 *         cdef int count = 0
 *         cdef MPI_Request *irequests = NULL
 *         cdef int index = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)
 */
  __pyx_v_index = MPI_UNDEFINED;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":98
 *         cdef MPI_Request *irequests = NULL
 *         cdef int index = MPI_UNDEFINED
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         #
 */
  __pyx_v_flag = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":99
 *         cdef int index = MPI_UNDEFINED
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         #
 *         cdef tmp = acquire_rs(requests, None, &count, &irequests, NULL)
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":101
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         #
 *         cdef tmp = acquire_rs(requests, None, &count, &irequests, NULL)             # <<<<<<<<<<<<<<
 *         try:
 *             with nogil: CHKERR( MPI_Testany(
 */
  __pyx_t_1 = Py_None;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_acquire_rs(__pyx_v_requests, __pyx_t_1, (&__pyx_v_count), (&__pyx_v_irequests), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_tmp = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":102
 *         #
 *         cdef tmp = acquire_rs(requests, None, &count, &irequests, NULL)
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Testany(
 *                 count, irequests, &index, &flag, statusp) )
 */
  /*try:*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":103
 *         cdef tmp = acquire_rs(requests, None, &count, &irequests, NULL)
 *         try:
 *             with nogil: CHKERR( MPI_Testany(             # <<<<<<<<<<<<<<
 *                 count, irequests, &index, &flag, statusp) )
 *         finally:
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save = NULL;
        #endif
        Py_UNBLOCK_THREADS
        /*try:*/ {

          /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":104
 *         try:
 *             with nogil: CHKERR( MPI_Testany(
 *                 count, irequests, &index, &flag, statusp) )             # <<<<<<<<<<<<<<
 *         finally:
 *             release_rs(requests, None, count, irequests, NULL)
 */
          __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Testany(__pyx_v_count, __pyx_v_irequests, (&__pyx_v_index), (&__pyx_v_flag), __pyx_v_statusp)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L10;}
        }

        /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":103
 *         cdef tmp = acquire_rs(requests, None, &count, &irequests, NULL)
 *         try:
 *             with nogil: CHKERR( MPI_Testany(             # <<<<<<<<<<<<<<
 *                 count, irequests, &index, &flag, statusp) )
 *         finally:
 */
        /*finally:*/ {
          int __pyx_why;
          __pyx_why = 0; goto __pyx_L11;
          __pyx_L10: __pyx_why = 4; goto __pyx_L11;
          __pyx_L11:;
          Py_BLOCK_THREADS
          switch (__pyx_why) {
            case 4: goto __pyx_L7;
          }
        }
    }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":106
 *                 count, irequests, &index, &flag, statusp) )
 *         finally:
 *             release_rs(requests, None, count, irequests, NULL)             # <<<<<<<<<<<<<<
 *         #
 *         return (index, <bint>flag)
 */
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L8;
    __pyx_L7: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L8;
    }
    __pyx_L8:;
    __pyx_t_2 = Py_None;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_release_rs(__pyx_v_requests, __pyx_t_2, __pyx_v_count, __pyx_v_irequests, NULL); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L14;
    __pyx_L13_error:;
    if (__pyx_why == 4) {
      Py_XDECREF(__pyx_exc_type);
      Py_XDECREF(__pyx_exc_value);
      Py_XDECREF(__pyx_exc_tb);
    }
    goto __pyx_L1_error;
    __pyx_L14:;
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":108
 *             release_rs(requests, None, count, irequests, NULL)
 *         #
 *         return (index, <bint>flag)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_index); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)__pyx_v_flag)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_r = ((PyObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Request.Testany", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":111
 * 
 *     @classmethod
 *     def Waitall(cls, requests, statuses=None):             # <<<<<<<<<<<<<<
 *         """
 *         Wait for all previously initiated requests to complete
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_10Waitall(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_10Waitall[] = "Request.Waitall(type cls, requests, statuses=None)\n\n        Wait for all previously initiated requests to complete\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_10Waitall(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_requests = 0;
  PyObject *__pyx_v_statuses = 0;
  int __pyx_v_count;
  MPI_Request *__pyx_v_irequests;
  MPI_Status *__pyx_v_istatuses;
  PyObject *__pyx_v_tmp = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__requests,&__pyx_n_s__statuses,0};
  __Pyx_RefNannySetupContext("Waitall");
  {
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__requests);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__statuses);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Waitall") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Waitall", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Waitall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":115
 *         Wait for all previously initiated requests to complete
 *         """
 *         cdef int count = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Request *irequests = NULL
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 */
  __pyx_v_count = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":116
 *         """
 *         cdef int count = 0
 *         cdef MPI_Request *irequests = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 *         #
 */
  __pyx_v_irequests = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":117
 *         cdef int count = 0
 *         cdef MPI_Request *irequests = NULL
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE             # <<<<<<<<<<<<<<
 *         #
 *         cdef tmp = acquire_rs(requests, statuses,
 */
  __pyx_v_istatuses = MPI_STATUSES_IGNORE;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":120
 *         #
 *         cdef tmp = acquire_rs(requests, statuses,
 *                               &count, &irequests, &istatuses)             # <<<<<<<<<<<<<<
 *         try:
 *             with nogil: CHKERR( MPI_Waitall(
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_acquire_rs(__pyx_v_requests, __pyx_v_statuses, (&__pyx_v_count), (&__pyx_v_irequests), (&__pyx_v_istatuses)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_tmp = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":121
 *         cdef tmp = acquire_rs(requests, statuses,
 *                               &count, &irequests, &istatuses)
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Waitall(
 *                 count, irequests, istatuses) )
 */
  /*try:*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":122
 *                               &count, &irequests, &istatuses)
 *         try:
 *             with nogil: CHKERR( MPI_Waitall(             # <<<<<<<<<<<<<<
 *                 count, irequests, istatuses) )
 *         finally:
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save = NULL;
        #endif
        Py_UNBLOCK_THREADS
        /*try:*/ {

          /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":123
 *         try:
 *             with nogil: CHKERR( MPI_Waitall(
 *                 count, irequests, istatuses) )             # <<<<<<<<<<<<<<
 *         finally:
 *             release_rs(requests, statuses, count, irequests, istatuses)
 */
          __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Waitall(__pyx_v_count, __pyx_v_irequests, __pyx_v_istatuses)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L10;}
        }

        /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":122
 *                               &count, &irequests, &istatuses)
 *         try:
 *             with nogil: CHKERR( MPI_Waitall(             # <<<<<<<<<<<<<<
 *                 count, irequests, istatuses) )
 *         finally:
 */
        /*finally:*/ {
          int __pyx_why;
          __pyx_why = 0; goto __pyx_L11;
          __pyx_L10: __pyx_why = 4; goto __pyx_L11;
          __pyx_L11:;
          Py_BLOCK_THREADS
          switch (__pyx_why) {
            case 4: goto __pyx_L7;
          }
        }
    }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":125
 *                 count, irequests, istatuses) )
 *         finally:
 *             release_rs(requests, statuses, count, irequests, istatuses)             # <<<<<<<<<<<<<<
 *         return None
 * 
 */
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L8;
    __pyx_L7: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L8;
    }
    __pyx_L8:;
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_release_rs(__pyx_v_requests, __pyx_v_statuses, __pyx_v_count, __pyx_v_irequests, __pyx_v_istatuses); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
    goto __pyx_L14;
    __pyx_L13_error:;
    if (__pyx_why == 4) {
      Py_XDECREF(__pyx_exc_type);
      Py_XDECREF(__pyx_exc_value);
      Py_XDECREF(__pyx_exc_tb);
    }
    goto __pyx_L1_error;
    __pyx_L14:;
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":126
 *         finally:
 *             release_rs(requests, statuses, count, irequests, istatuses)
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_None);
  __pyx_r = Py_None;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Request.Waitall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":129
 * 
 *     @classmethod
 *     def Testall(cls, requests, statuses=None):             # <<<<<<<<<<<<<<
 *         """
 *         Test for completion of all previously initiated requests
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_11Testall(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_11Testall[] = "Request.Testall(type cls, requests, statuses=None)\n\n        Test for completion of all previously initiated requests\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_11Testall(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_requests = 0;
  PyObject *__pyx_v_statuses = 0;
  int __pyx_v_count;
  MPI_Request *__pyx_v_irequests;
  int __pyx_v_flag;
  MPI_Status *__pyx_v_istatuses;
  PyObject *__pyx_v_tmp = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__requests,&__pyx_n_s__statuses,0};
  __Pyx_RefNannySetupContext("Testall");
  {
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__requests);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__statuses);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Testall") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Testall", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Testall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":133
 *         Test for completion of all previously initiated requests
 *         """
 *         cdef int count = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Request *irequests = NULL
 *         cdef int flag = 0
 */
  __pyx_v_count = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":134
 *         """
 *         cdef int count = 0
 *         cdef MPI_Request *irequests = NULL             # <<<<<<<<<<<<<<
 *         cdef int flag = 0
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 */
  __pyx_v_irequests = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":135
 *         cdef int count = 0
 *         cdef MPI_Request *irequests = NULL
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 *         #
 */
  __pyx_v_flag = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":136
 *         cdef MPI_Request *irequests = NULL
 *         cdef int flag = 0
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE             # <<<<<<<<<<<<<<
 *         #
 *         cdef tmp = acquire_rs(requests, statuses,
 */
  __pyx_v_istatuses = MPI_STATUSES_IGNORE;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":139
 *         #
 *         cdef tmp = acquire_rs(requests, statuses,
 *                               &count, &irequests, &istatuses)             # <<<<<<<<<<<<<<
 *         try:
 *             with nogil: CHKERR( MPI_Testall(
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_acquire_rs(__pyx_v_requests, __pyx_v_statuses, (&__pyx_v_count), (&__pyx_v_irequests), (&__pyx_v_istatuses)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_tmp = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":140
 *         cdef tmp = acquire_rs(requests, statuses,
 *                               &count, &irequests, &istatuses)
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Testall(
 *                 count, irequests, &flag, istatuses) )
 */
  /*try:*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":141
 *                               &count, &irequests, &istatuses)
 *         try:
 *             with nogil: CHKERR( MPI_Testall(             # <<<<<<<<<<<<<<
 *                 count, irequests, &flag, istatuses) )
 *         finally:
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save = NULL;
        #endif
        Py_UNBLOCK_THREADS
        /*try:*/ {

          /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":142
 *         try:
 *             with nogil: CHKERR( MPI_Testall(
 *                 count, irequests, &flag, istatuses) )             # <<<<<<<<<<<<<<
 *         finally:
 *             release_rs(requests, statuses, count, irequests, istatuses)
 */
          __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Testall(__pyx_v_count, __pyx_v_irequests, (&__pyx_v_flag), __pyx_v_istatuses)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L10;}
        }

        /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":141
 *                               &count, &irequests, &istatuses)
 *         try:
 *             with nogil: CHKERR( MPI_Testall(             # <<<<<<<<<<<<<<
 *                 count, irequests, &flag, istatuses) )
 *         finally:
 */
        /*finally:*/ {
          int __pyx_why;
          __pyx_why = 0; goto __pyx_L11;
          __pyx_L10: __pyx_why = 4; goto __pyx_L11;
          __pyx_L11:;
          Py_BLOCK_THREADS
          switch (__pyx_why) {
            case 4: goto __pyx_L7;
          }
        }
    }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":144
 *                 count, irequests, &flag, istatuses) )
 *         finally:
 *             release_rs(requests, statuses, count, irequests, istatuses)             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
 */
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L8;
    __pyx_L7: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L8;
    }
    __pyx_L8:;
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_release_rs(__pyx_v_requests, __pyx_v_statuses, __pyx_v_count, __pyx_v_irequests, __pyx_v_istatuses); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
    goto __pyx_L14;
    __pyx_L13_error:;
    if (__pyx_why == 4) {
      Py_XDECREF(__pyx_exc_type);
      Py_XDECREF(__pyx_exc_value);
      Py_XDECREF(__pyx_exc_tb);
    }
    goto __pyx_L1_error;
    __pyx_L14:;
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":145
 *         finally:
 *             release_rs(requests, statuses, count, irequests, istatuses)
 *         return <bint>flag             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)__pyx_v_flag)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Request.Testall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":148
 * 
 *     @classmethod
 *     def Waitsome(cls, requests, statuses=None):             # <<<<<<<<<<<<<<
 *         """
 *         Wait for some previously initiated requests to complete
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_12Waitsome(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_12Waitsome[] = "Request.Waitsome(type cls, requests, statuses=None)\n\n        Wait for some previously initiated requests to complete\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_12Waitsome(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_requests = 0;
  PyObject *__pyx_v_statuses = 0;
  int __pyx_v_incount;
  MPI_Request *__pyx_v_irequests;
  int __pyx_v_outcount;
  int *__pyx_v_iindices;
  MPI_Status *__pyx_v_istatuses;
  PyObject *__pyx_v_tmp = 0;
  PyObject *__pyx_v_indices = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__requests,&__pyx_n_s__statuses,0};
  __Pyx_RefNannySetupContext("Waitsome");
  {
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__requests);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__statuses);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Waitsome") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Waitsome", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Waitsome", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":152
 *         Wait for some previously initiated requests to complete
 *         """
 *         cdef int incount = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Request *irequests = NULL
 *         cdef int outcount = MPI_UNDEFINED, *iindices = NULL
 */
  __pyx_v_incount = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":153
 *         """
 *         cdef int incount = 0
 *         cdef MPI_Request *irequests = NULL             # <<<<<<<<<<<<<<
 *         cdef int outcount = MPI_UNDEFINED, *iindices = NULL
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 */
  __pyx_v_irequests = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":154
 *         cdef int incount = 0
 *         cdef MPI_Request *irequests = NULL
 *         cdef int outcount = MPI_UNDEFINED, *iindices = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 *         #
 */
  __pyx_v_outcount = MPI_UNDEFINED;
  __pyx_v_iindices = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":155
 *         cdef MPI_Request *irequests = NULL
 *         cdef int outcount = MPI_UNDEFINED, *iindices = NULL
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE             # <<<<<<<<<<<<<<
 *         #
 *         cdef tmp = acquire_rs(requests, statuses,
 */
  __pyx_v_istatuses = MPI_STATUSES_IGNORE;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":158
 *         #
 *         cdef tmp = acquire_rs(requests, statuses,
 *                               &incount, &irequests, &istatuses)             # <<<<<<<<<<<<<<
 *         cdef object indices = newarray_int(incount, &iindices)
 *         try:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_acquire_rs(__pyx_v_requests, __pyx_v_statuses, (&__pyx_v_incount), (&__pyx_v_irequests), (&__pyx_v_istatuses)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_tmp = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":159
 *         cdef tmp = acquire_rs(requests, statuses,
 *                               &incount, &irequests, &istatuses)
 *         cdef object indices = newarray_int(incount, &iindices)             # <<<<<<<<<<<<<<
 *         try:
 *             with nogil: CHKERR( MPI_Waitsome(
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_incount, (&__pyx_v_iindices)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_indices = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":160
 *                               &incount, &irequests, &istatuses)
 *         cdef object indices = newarray_int(incount, &iindices)
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Waitsome(
 *                 incount, irequests, &outcount, iindices, istatuses) )
 */
  /*try:*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":161
 *         cdef object indices = newarray_int(incount, &iindices)
 *         try:
 *             with nogil: CHKERR( MPI_Waitsome(             # <<<<<<<<<<<<<<
 *                 incount, irequests, &outcount, iindices, istatuses) )
 *         finally:
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save = NULL;
        #endif
        Py_UNBLOCK_THREADS
        /*try:*/ {

          /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":162
 *         try:
 *             with nogil: CHKERR( MPI_Waitsome(
 *                 incount, irequests, &outcount, iindices, istatuses) )             # <<<<<<<<<<<<<<
 *         finally:
 *             release_rs(requests, statuses, incount, irequests, istatuses)
 */
          __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Waitsome(__pyx_v_incount, __pyx_v_irequests, (&__pyx_v_outcount), __pyx_v_iindices, __pyx_v_istatuses)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L10;}
        }

        /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":161
 *         cdef object indices = newarray_int(incount, &iindices)
 *         try:
 *             with nogil: CHKERR( MPI_Waitsome(             # <<<<<<<<<<<<<<
 *                 incount, irequests, &outcount, iindices, istatuses) )
 *         finally:
 */
        /*finally:*/ {
          int __pyx_why;
          __pyx_why = 0; goto __pyx_L11;
          __pyx_L10: __pyx_why = 4; goto __pyx_L11;
          __pyx_L11:;
          Py_BLOCK_THREADS
          switch (__pyx_why) {
            case 4: goto __pyx_L7;
          }
        }
    }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":164
 *                 incount, irequests, &outcount, iindices, istatuses) )
 *         finally:
 *             release_rs(requests, statuses, incount, irequests, istatuses)             # <<<<<<<<<<<<<<
 *         #
 *         if outcount == MPI_UNDEFINED:
 */
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L8;
    __pyx_L7: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L8;
    }
    __pyx_L8:;
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_release_rs(__pyx_v_requests, __pyx_v_statuses, __pyx_v_incount, __pyx_v_irequests, __pyx_v_istatuses); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
    goto __pyx_L14;
    __pyx_L13_error:;
    if (__pyx_why == 4) {
      Py_XDECREF(__pyx_exc_type);
      Py_XDECREF(__pyx_exc_value);
      Py_XDECREF(__pyx_exc_tb);
    }
    goto __pyx_L1_error;
    __pyx_L14:;
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":166
 *             release_rs(requests, statuses, incount, irequests, istatuses)
 *         #
 *         if outcount == MPI_UNDEFINED:             # <<<<<<<<<<<<<<
 *             del indices[:]
 *         else:
 */
  __pyx_t_3 = (__pyx_v_outcount == MPI_UNDEFINED);
  if (__pyx_t_3) {
    if (unlikely(!__pyx_v_indices)) { __Pyx_RaiseUnboundLocalError("indices"); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }if (__Pyx_PySequence_DelSlice(__pyx_v_indices, 0, PY_SSIZE_T_MAX) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":167
 *         #
 *         if outcount == MPI_UNDEFINED:
 *             del indices[:]             # <<<<<<<<<<<<<<
 *         else:
 *             del indices[outcount:]
 */
    goto __pyx_L15;
  }
  /*else*/ {
    if (unlikely(!__pyx_v_indices)) { __Pyx_RaiseUnboundLocalError("indices"); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }if (__Pyx_PySequence_DelSlice(__pyx_v_indices, __pyx_v_outcount, PY_SSIZE_T_MAX) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":169
 *             del indices[:]
 *         else:
 *             del indices[outcount:]             # <<<<<<<<<<<<<<
 *         return (outcount, indices)
 * 
 */
  }
  __pyx_L15:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":170
 *         else:
 *             del indices[outcount:]
 *         return (outcount, indices)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyInt_FromLong(__pyx_v_outcount); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_indices);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_indices);
  __Pyx_GIVEREF(__pyx_v_indices);
  __pyx_t_1 = 0;
  __pyx_r = ((PyObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Request.Waitsome", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_XDECREF(__pyx_v_indices);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":173
 * 
 *     @classmethod
 *     def Testsome(cls, requests, statuses=None):             # <<<<<<<<<<<<<<
 *         """
 *         Test for completion of some previously initiated requests
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_13Testsome(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_13Testsome[] = "Request.Testsome(type cls, requests, statuses=None)\n\n        Test for completion of some previously initiated requests\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_13Testsome(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_requests = 0;
  PyObject *__pyx_v_statuses = 0;
  int __pyx_v_incount;
  MPI_Request *__pyx_v_irequests;
  int __pyx_v_outcount;
  int *__pyx_v_iindices;
  MPI_Status *__pyx_v_istatuses;
  PyObject *__pyx_v_tmp = 0;
  PyObject *__pyx_v_indices = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__requests,&__pyx_n_s__statuses,0};
  __Pyx_RefNannySetupContext("Testsome");
  {
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__requests);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__statuses);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Testsome") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Testsome", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Testsome", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":177
 *         Test for completion of some previously initiated requests
 *         """
 *         cdef int incount = <int>len(requests)             # <<<<<<<<<<<<<<
 *         cdef MPI_Request *irequests = NULL
 *         cdef int outcount = MPI_UNDEFINED, *iindices = NULL
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_requests); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_incount = ((int)__pyx_t_1);

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":178
 *         """
 *         cdef int incount = <int>len(requests)
 *         cdef MPI_Request *irequests = NULL             # <<<<<<<<<<<<<<
 *         cdef int outcount = MPI_UNDEFINED, *iindices = NULL
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 */
  __pyx_v_irequests = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":179
 *         cdef int incount = <int>len(requests)
 *         cdef MPI_Request *irequests = NULL
 *         cdef int outcount = MPI_UNDEFINED, *iindices = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 *         #
 */
  __pyx_v_outcount = MPI_UNDEFINED;
  __pyx_v_iindices = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":180
 *         cdef MPI_Request *irequests = NULL
 *         cdef int outcount = MPI_UNDEFINED, *iindices = NULL
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE             # <<<<<<<<<<<<<<
 *         #
 *         cdef tmp = acquire_rs(requests, statuses,
 */
  __pyx_v_istatuses = MPI_STATUSES_IGNORE;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":183
 *         #
 *         cdef tmp = acquire_rs(requests, statuses,
 *                               &incount, &irequests, &istatuses)             # <<<<<<<<<<<<<<
 *         cdef object indices = newarray_int(incount, &iindices)
 *         try:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_acquire_rs(__pyx_v_requests, __pyx_v_statuses, (&__pyx_v_incount), (&__pyx_v_irequests), (&__pyx_v_istatuses)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":184
 *         cdef tmp = acquire_rs(requests, statuses,
 *                               &incount, &irequests, &istatuses)
 *         cdef object indices = newarray_int(incount, &iindices)             # <<<<<<<<<<<<<<
 *         try:
 *             with nogil: CHKERR( MPI_Testsome(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_incount, (&__pyx_v_iindices)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_indices = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":185
 *                               &incount, &irequests, &istatuses)
 *         cdef object indices = newarray_int(incount, &iindices)
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Testsome(
 *                 incount, irequests, &outcount, iindices, istatuses) )
 */
  /*try:*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":186
 *         cdef object indices = newarray_int(incount, &iindices)
 *         try:
 *             with nogil: CHKERR( MPI_Testsome(             # <<<<<<<<<<<<<<
 *                 incount, irequests, &outcount, iindices, istatuses) )
 *         finally:
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save = NULL;
        #endif
        Py_UNBLOCK_THREADS
        /*try:*/ {

          /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":187
 *         try:
 *             with nogil: CHKERR( MPI_Testsome(
 *                 incount, irequests, &outcount, iindices, istatuses) )             # <<<<<<<<<<<<<<
 *         finally:
 *             release_rs(requests, statuses, incount, irequests, istatuses)
 */
          __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Testsome(__pyx_v_incount, __pyx_v_irequests, (&__pyx_v_outcount), __pyx_v_iindices, __pyx_v_istatuses)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L10;}
        }

        /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":186
 *         cdef object indices = newarray_int(incount, &iindices)
 *         try:
 *             with nogil: CHKERR( MPI_Testsome(             # <<<<<<<<<<<<<<
 *                 incount, irequests, &outcount, iindices, istatuses) )
 *         finally:
 */
        /*finally:*/ {
          int __pyx_why;
          __pyx_why = 0; goto __pyx_L11;
          __pyx_L10: __pyx_why = 4; goto __pyx_L11;
          __pyx_L11:;
          Py_BLOCK_THREADS
          switch (__pyx_why) {
            case 4: goto __pyx_L7;
          }
        }
    }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":189
 *                 incount, irequests, &outcount, iindices, istatuses) )
 *         finally:
 *             release_rs(requests, statuses, incount, irequests, istatuses)             # <<<<<<<<<<<<<<
 *         #
 *         if outcount == MPI_UNDEFINED:
 */
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L8;
    __pyx_L7: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L8;
    }
    __pyx_L8:;
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_release_rs(__pyx_v_requests, __pyx_v_statuses, __pyx_v_incount, __pyx_v_irequests, __pyx_v_istatuses); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
    goto __pyx_L14;
    __pyx_L13_error:;
    if (__pyx_why == 4) {
      Py_XDECREF(__pyx_exc_type);
      Py_XDECREF(__pyx_exc_value);
      Py_XDECREF(__pyx_exc_tb);
    }
    goto __pyx_L1_error;
    __pyx_L14:;
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":191
 *             release_rs(requests, statuses, incount, irequests, istatuses)
 *         #
 *         if outcount == MPI_UNDEFINED:             # <<<<<<<<<<<<<<
 *             del indices[:]
 *         else:
 */
  __pyx_t_4 = (__pyx_v_outcount == MPI_UNDEFINED);
  if (__pyx_t_4) {
    if (unlikely(!__pyx_v_indices)) { __Pyx_RaiseUnboundLocalError("indices"); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }if (__Pyx_PySequence_DelSlice(__pyx_v_indices, 0, PY_SSIZE_T_MAX) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":192
 *         #
 *         if outcount == MPI_UNDEFINED:
 *             del indices[:]             # <<<<<<<<<<<<<<
 *         else:
 *             del indices[outcount:]
 */
    goto __pyx_L15;
  }
  /*else*/ {
    if (unlikely(!__pyx_v_indices)) { __Pyx_RaiseUnboundLocalError("indices"); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }if (__Pyx_PySequence_DelSlice(__pyx_v_indices, __pyx_v_outcount, PY_SSIZE_T_MAX) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":194
 *             del indices[:]
 *         else:
 *             del indices[outcount:]             # <<<<<<<<<<<<<<
 *         return (outcount, indices)
 * 
 */
  }
  __pyx_L15:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":195
 *         else:
 *             del indices[outcount:]
 *         return (outcount, indices)             # <<<<<<<<<<<<<<
 * 
 *     # Cancel
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_outcount); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_indices);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_indices);
  __Pyx_GIVEREF(__pyx_v_indices);
  __pyx_t_2 = 0;
  __pyx_r = ((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Request.Testsome", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_XDECREF(__pyx_v_indices);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":200
 *     # ------
 * 
 *     def Cancel(self):             # <<<<<<<<<<<<<<
 *         """
 *         Cancel a communication request
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_14Cancel(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_14Cancel[] = "Request.Cancel(self)\n\n        Cancel a communication request\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_14Cancel(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Cancel");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Cancel", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Cancel", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":204
 *         Cancel a communication request
 *         """
 *         with nogil: CHKERR( MPI_Cancel(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cancel((&((struct PyMPIRequestObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":209
 *     # --------------
 * 
 *     def py2f(self):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_15py2f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_15py2f[] = "Request.py2f(self)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_15py2f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("py2f");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("py2f", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "py2f", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":212
 *         """
 *         """
 *         return MPI_Request_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_to_py_MPI_Fint(MPI_Request_c2f(((struct PyMPIRequestObject *)__pyx_v_self)->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Request.py2f", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":215
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_16f2py(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_16f2py[] = "Request.f2py(type cls, arg)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_16f2py(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_arg = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Fint __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__arg,0};
  __Pyx_RefNannySetupContext("f2py");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__arg);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "f2py") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":218
 *         """
 *         """
 *         cdef Request request = <Request>cls()             # <<<<<<<<<<<<<<
 *         request.ob_mpi = MPI_Request_f2c(arg)
 *         return request
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIRequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":219
 *         """
 *         cdef Request request = <Request>cls()
 *         request.ob_mpi = MPI_Request_f2c(arg)             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __pyx_t_2 = __Pyx_PyInt_from_py_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_2 == (MPI_Fint)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_request->ob_mpi = MPI_Request_f2c(__pyx_t_2);

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":220
 *         cdef Request request = <Request>cls()
 *         request.ob_mpi = MPI_Request_f2c(arg)
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     # Python Communication
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Request.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":225
 *     # --------------------
 *     #
 *     def wait(self, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Wait for a send or receive to complete
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_17wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_17wait[] = "Request.wait(self, Status status=None)\n\n        Wait for a send or receive to complete\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_17wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIStatusObject *__pyx_v_status = 0;
  PyObject *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("wait");
  {
    PyObject* values[1] = {0};
    values[0] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "wait") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("wait", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.wait", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":229
 *         Wait for a send or receive to complete
 *         """
 *         cdef msg = PyMPI_wait(self, status)             # <<<<<<<<<<<<<<
 *         return msg
 *     #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_wait(((struct PyMPIRequestObject *)__pyx_v_self), __pyx_v_status); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":230
 *         """
 *         cdef msg = PyMPI_wait(self, status)
 *         return msg             # <<<<<<<<<<<<<<
 *     #
 *     def test(self, Status status=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_msg);
  __pyx_r = __pyx_v_msg;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Request.wait", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":232
 *         return msg
 *     #
 *     def test(self, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Test for the completion of a send or receive
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_18test(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_18test[] = "Request.test(self, Status status=None)\n\n        Test for the completion of a send or receive\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_18test(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIStatusObject *__pyx_v_status = 0;
  int __pyx_v_flag;
  PyObject *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("test");
  {
    PyObject* values[1] = {0};
    values[0] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "test") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("test", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.test", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":236
 *         Test for the completion of a send or receive
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         cdef msg = PyMPI_test(self, &flag, status)
 *         return (<bint>flag, msg)
 */
  __pyx_v_flag = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":237
 *         """
 *         cdef int flag = 0
 *         cdef msg = PyMPI_test(self, &flag, status)             # <<<<<<<<<<<<<<
 *         return (<bint>flag, msg)
 *     #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_test(((struct PyMPIRequestObject *)__pyx_v_self), (&__pyx_v_flag), __pyx_v_status); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":238
 *         cdef int flag = 0
 *         cdef msg = PyMPI_test(self, &flag, status)
 *         return (<bint>flag, msg)             # <<<<<<<<<<<<<<
 *     #
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)__pyx_v_flag)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_msg);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_msg);
  __Pyx_GIVEREF(__pyx_v_msg);
  __pyx_t_1 = 0;
  __pyx_r = ((PyObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Request.test", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":241
 *     #
 *     @classmethod
 *     def waitany(cls, requests, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Wait for any previously initiated request to complete
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_19waitany(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_19waitany[] = "Request.waitany(type cls, requests, Status status=None)\n\n        Wait for any previously initiated request to complete\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_19waitany(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_requests = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  int __pyx_v_index;
  PyObject *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__requests,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("waitany");
  {
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__requests);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "waitany") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("waitany", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.waitany", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":245
 *         Wait for any previously initiated request to complete
 *         """
 *         cdef int index = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         cdef msg = PyMPI_waitany(requests, &index, status)
 *         return (index, msg)
 */
  __pyx_v_index = MPI_UNDEFINED;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":246
 *         """
 *         cdef int index = MPI_UNDEFINED
 *         cdef msg = PyMPI_waitany(requests, &index, status)             # <<<<<<<<<<<<<<
 *         return (index, msg)
 *     #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_waitany(__pyx_v_requests, (&__pyx_v_index), __pyx_v_status); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":247
 *         cdef int index = MPI_UNDEFINED
 *         cdef msg = PyMPI_waitany(requests, &index, status)
 *         return (index, msg)             # <<<<<<<<<<<<<<
 *     #
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyInt_FromLong(__pyx_v_index); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_msg);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_msg);
  __Pyx_GIVEREF(__pyx_v_msg);
  __pyx_t_1 = 0;
  __pyx_r = ((PyObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Request.waitany", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":250
 *     #
 *     @classmethod
 *     def testany(cls, requests, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Test for completion of any previously initiated request
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_20testany(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_20testany[] = "Request.testany(type cls, requests, Status status=None)\n\n        Test for completion of any previously initiated request\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_20testany(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_requests = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  int __pyx_v_index;
  int __pyx_v_flag;
  PyObject *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__requests,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("testany");
  {
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__requests);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "testany") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("testany", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.testany", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":254
 *         Test for completion of any previously initiated request
 *         """
 *         cdef int index = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         cdef int flag  = 0
 *         cdef msg = PyMPI_testany(requests, &index, &flag, status)
 */
  __pyx_v_index = MPI_UNDEFINED;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":255
 *         """
 *         cdef int index = MPI_UNDEFINED
 *         cdef int flag  = 0             # <<<<<<<<<<<<<<
 *         cdef msg = PyMPI_testany(requests, &index, &flag, status)
 *         return (index, <bint>flag, msg)
 */
  __pyx_v_flag = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":256
 *         cdef int index = MPI_UNDEFINED
 *         cdef int flag  = 0
 *         cdef msg = PyMPI_testany(requests, &index, &flag, status)             # <<<<<<<<<<<<<<
 *         return (index, <bint>flag, msg)
 *     #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_testany(__pyx_v_requests, (&__pyx_v_index), (&__pyx_v_flag), __pyx_v_status); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":257
 *         cdef int flag  = 0
 *         cdef msg = PyMPI_testany(requests, &index, &flag, status)
 *         return (index, <bint>flag, msg)             # <<<<<<<<<<<<<<
 *     #
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyInt_FromLong(__pyx_v_index); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_v_flag)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_msg);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_msg);
  __Pyx_GIVEREF(__pyx_v_msg);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_r = ((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Request.testany", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":260
 *     #
 *     @classmethod
 *     def waitall(cls, requests, statuses=None):             # <<<<<<<<<<<<<<
 *         """
 *         Wait for all previously initiated requests to complete
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_21waitall(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_21waitall[] = "Request.waitall(type cls, requests, statuses=None)\n\n        Wait for all previously initiated requests to complete\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_21waitall(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_requests = 0;
  PyObject *__pyx_v_statuses = 0;
  PyObject *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__requests,&__pyx_n_s__statuses,0};
  __Pyx_RefNannySetupContext("waitall");
  {
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__requests);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__statuses);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "waitall") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("waitall", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.waitall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":264
 *         Wait for all previously initiated requests to complete
 *         """
 *         cdef msg = PyMPI_waitall(requests, statuses)             # <<<<<<<<<<<<<<
 *         return msg
 *     #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_waitall(__pyx_v_requests, __pyx_v_statuses); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":265
 *         """
 *         cdef msg = PyMPI_waitall(requests, statuses)
 *         return msg             # <<<<<<<<<<<<<<
 *     #
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_msg);
  __pyx_r = __pyx_v_msg;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Request.waitall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":268
 *     #
 *     @classmethod
 *     def testall(cls, requests, statuses=None):             # <<<<<<<<<<<<<<
 *         """
 *         Test for completion of all previously initiated requests
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_22testall(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_22testall[] = "Request.testall(type cls, requests, statuses=None)\n\n        Test for completion of all previously initiated requests\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_22testall(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_requests = 0;
  PyObject *__pyx_v_statuses = 0;
  int __pyx_v_flag;
  PyObject *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__requests,&__pyx_n_s__statuses,0};
  __Pyx_RefNannySetupContext("testall");
  {
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__requests);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__statuses);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "testall") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("testall", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.testall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":272
 *         Test for completion of all previously initiated requests
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         cdef msg = PyMPI_testall(requests, &flag, statuses)
 *         return (<bint>flag, msg)
 */
  __pyx_v_flag = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":273
 *         """
 *         cdef int flag = 0
 *         cdef msg = PyMPI_testall(requests, &flag, statuses)             # <<<<<<<<<<<<<<
 *         return (<bint>flag, msg)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_testall(__pyx_v_requests, (&__pyx_v_flag), __pyx_v_statuses); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":274
 *         cdef int flag = 0
 *         cdef msg = PyMPI_testall(requests, &flag, statuses)
 *         return (<bint>flag, msg)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)__pyx_v_flag)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_msg);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_msg);
  __Pyx_GIVEREF(__pyx_v_msg);
  __pyx_t_1 = 0;
  __pyx_r = ((PyObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Request.testall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":283
 *     """
 * 
 *     def __cinit__(self, Request request=None):             # <<<<<<<<<<<<<<
 *         if self.ob_mpi != MPI_REQUEST_NULL:
 *             <void>(<Prequest?>request)
 */

static int __pyx_pf_6mpi4py_3MPI_8Prequest___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_8Prequest___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIRequestObject *__pyx_v_request = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__request,0};
  __Pyx_RefNannySetupContext("__cinit__");
  {
    PyObject* values[1] = {0};
    values[0] = (PyObject *)((struct PyMPIRequestObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__request);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_request = ((struct PyMPIRequestObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Prequest.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_request), __pyx_ptype_6mpi4py_3MPI_Request, 1, "request", 0))) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":284
 * 
 *     def __cinit__(self, Request request=None):
 *         if self.ob_mpi != MPI_REQUEST_NULL:             # <<<<<<<<<<<<<<
 *             <void>(<Prequest?>request)
 * 
 */
  __pyx_t_1 = (((struct PyMPIPrequestObject *)__pyx_v_self)->__pyx_base.ob_mpi != MPI_REQUEST_NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":285
 *     def __cinit__(self, Request request=None):
 *         if self.ob_mpi != MPI_REQUEST_NULL:
 *             <void>(<Prequest?>request)             # <<<<<<<<<<<<<<
 * 
 *     def Start(self):
 */
    if (!(likely(__Pyx_TypeTest(((PyObject *)__pyx_v_request), __pyx_ptype_6mpi4py_3MPI_Prequest)))) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    ((void)((struct PyMPIPrequestObject *)__pyx_v_request));
    goto __pyx_L6;
  }
  __pyx_L6:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Prequest.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":287
 *             <void>(<Prequest?>request)
 * 
 *     def Start(self):             # <<<<<<<<<<<<<<
 *         """
 *         Initiate a communication with a persistent request
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Prequest_1Start(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Prequest_1Start[] = "Prequest.Start(self)\n\n        Initiate a communication with a persistent request\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Prequest_1Start(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Start");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Start", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Start", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":291
 *         Initiate a communication with a persistent request
 *         """
 *         with nogil: CHKERR( MPI_Start(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Start((&((struct PyMPIPrequestObject *)__pyx_v_self)->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Prequest.Start", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":294
 * 
 *     @classmethod
 *     def Startall(cls, requests):             # <<<<<<<<<<<<<<
 *         """
 *         Start a collection of persistent requests
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Prequest_2Startall(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Prequest_2Startall[] = "Prequest.Startall(type cls, requests)\n\n        Start a collection of persistent requests\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Prequest_2Startall(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_requests = 0;
  int __pyx_v_count;
  MPI_Request *__pyx_v_irequests;
  PyObject *__pyx_v_tmp = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__requests,0};
  __Pyx_RefNannySetupContext("Startall");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__requests);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Startall") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_requests = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Startall", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Prequest.Startall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":298
 *         Start a collection of persistent requests
 *         """
 *         cdef int count = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp = acquire_rs(requests, None, &count, &irequests, NULL)
 */
  __pyx_v_count = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":299
 *         """
 *         cdef int count = 0
 *         cdef MPI_Request *irequests = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp = acquire_rs(requests, None, &count, &irequests, NULL)
 *         #
 */
  __pyx_v_irequests = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":300
 *         cdef int count = 0
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp = acquire_rs(requests, None, &count, &irequests, NULL)             # <<<<<<<<<<<<<<
 *         #
 *         try:
 */
  __pyx_t_1 = Py_None;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_acquire_rs(__pyx_v_requests, __pyx_t_1, (&__pyx_v_count), (&__pyx_v_irequests), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_tmp = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":302
 *         cdef tmp = acquire_rs(requests, None, &count, &irequests, NULL)
 *         #
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Startall(count, irequests) )
 *         finally:
 */
  /*try:*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":303
 *         #
 *         try:
 *             with nogil: CHKERR( MPI_Startall(count, irequests) )             # <<<<<<<<<<<<<<
 *         finally:
 *             release_rs(requests, None, count, irequests, NULL)
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save = NULL;
        #endif
        Py_UNBLOCK_THREADS
        /*try:*/ {
          __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Startall(__pyx_v_count, __pyx_v_irequests)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L10;}
        }
        /*finally:*/ {
          int __pyx_why;
          __pyx_why = 0; goto __pyx_L11;
          __pyx_L10: __pyx_why = 4; goto __pyx_L11;
          __pyx_L11:;
          Py_BLOCK_THREADS
          switch (__pyx_why) {
            case 4: goto __pyx_L7;
          }
        }
    }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":305
 *             with nogil: CHKERR( MPI_Startall(count, irequests) )
 *         finally:
 *             release_rs(requests, None, count, irequests, NULL)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L8;
    __pyx_L7: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L8;
    }
    __pyx_L8:;
    __pyx_t_2 = Py_None;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_release_rs(__pyx_v_requests, __pyx_t_2, __pyx_v_count, __pyx_v_irequests, NULL); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L14;
    __pyx_L13_error:;
    if (__pyx_why == 4) {
      Py_XDECREF(__pyx_exc_type);
      Py_XDECREF(__pyx_exc_value);
      Py_XDECREF(__pyx_exc_tb);
    }
    goto __pyx_L1_error;
    __pyx_L14:;
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Prequest.Startall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":315
 *     """
 * 
 *     def __cinit__(self, Request request=None):             # <<<<<<<<<<<<<<
 *         self.ob_grequest = self.ob_mpi
 *         if self.ob_mpi != MPI_REQUEST_NULL:
 */

static int __pyx_pf_6mpi4py_3MPI_8Grequest___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_8Grequest___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIRequestObject *__pyx_v_request = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__request,0};
  __Pyx_RefNannySetupContext("__cinit__");
  {
    PyObject* values[1] = {0};
    values[0] = (PyObject *)((struct PyMPIRequestObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__request);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_request = ((struct PyMPIRequestObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Grequest.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_request), __pyx_ptype_6mpi4py_3MPI_Request, 1, "request", 0))) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":316
 * 
 *     def __cinit__(self, Request request=None):
 *         self.ob_grequest = self.ob_mpi             # <<<<<<<<<<<<<<
 *         if self.ob_mpi != MPI_REQUEST_NULL:
 *             <void>(<Grequest?>request)
 */
  ((struct PyMPIGrequestObject *)__pyx_v_self)->ob_grequest = ((struct PyMPIGrequestObject *)__pyx_v_self)->__pyx_base.ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":317
 *     def __cinit__(self, Request request=None):
 *         self.ob_grequest = self.ob_mpi
 *         if self.ob_mpi != MPI_REQUEST_NULL:             # <<<<<<<<<<<<<<
 *             <void>(<Grequest?>request)
 * 
 */
  __pyx_t_1 = (((struct PyMPIGrequestObject *)__pyx_v_self)->__pyx_base.ob_mpi != MPI_REQUEST_NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":318
 *         self.ob_grequest = self.ob_mpi
 *         if self.ob_mpi != MPI_REQUEST_NULL:
 *             <void>(<Grequest?>request)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
    if (!(likely(__Pyx_TypeTest(((PyObject *)__pyx_v_request), __pyx_ptype_6mpi4py_3MPI_Grequest)))) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    ((void)((struct PyMPIGrequestObject *)__pyx_v_request));
    goto __pyx_L6;
  }
  __pyx_L6:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Grequest.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":321
 * 
 *     @classmethod
 *     def Start(cls, query_fn, free_fn, cancel_fn,             # <<<<<<<<<<<<<<
 *               args=None, kargs=None):
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Grequest_1Start(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Grequest_1Start[] = "Grequest.Start(type cls, query_fn, free_fn, cancel_fn, args=None, kargs=None)\n\n        Create and return a user-defined request\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Grequest_1Start(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_query_fn = 0;
  PyObject *__pyx_v_free_fn = 0;
  PyObject *__pyx_v_cancel_fn = 0;
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kargs = 0;
  struct PyMPIGrequestObject *__pyx_v_request = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_state = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__query_fn,&__pyx_n_s__free_fn,&__pyx_n_s__cancel_fn,&__pyx_n_s__args,&__pyx_n_s__kargs,0};
  __Pyx_RefNannySetupContext("Start");
  {
    PyObject* values[5] = {0,0,0,0,0};

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":322
 *     @classmethod
 *     def Start(cls, query_fn, free_fn, cancel_fn,
 *               args=None, kargs=None):             # <<<<<<<<<<<<<<
 *         """
 *         Create and return a user-defined request
 */
    values[3] = ((PyObject *)Py_None);
    values[4] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__query_fn);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__free_fn);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Start", 0, 3, 5, 1); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__cancel_fn);
        if (likely(values[2])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Start", 0, 3, 5, 2); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__args);
          if (value) { values[3] = value; kw_args--; }
        }
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__kargs);
          if (value) { values[4] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Start") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_query_fn = values[0];
    __pyx_v_free_fn = values[1];
    __pyx_v_cancel_fn = values[2];
    __pyx_v_args = values[3];
    __pyx_v_kargs = values[4];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Start", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Grequest.Start", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":326
 *         Create and return a user-defined request
 *         """
 *         cdef Grequest request = <Grequest>cls()             # <<<<<<<<<<<<<<
 *         cdef _p_greq state = \
 *              _p_greq(query_fn, free_fn, cancel_fn, args, kargs)
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIGrequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIGrequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":328
 *         cdef Grequest request = <Grequest>cls()
 *         cdef _p_greq state = \
 *              _p_greq(query_fn, free_fn, cancel_fn, args, kargs)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Grequest_start(
 *             greq_query_fn, greq_free_fn, greq_cancel_fn,
 */
  __pyx_t_1 = PyTuple_New(5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_query_fn);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_query_fn);
  __Pyx_GIVEREF(__pyx_v_query_fn);
  __Pyx_INCREF(__pyx_v_free_fn);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_free_fn);
  __Pyx_GIVEREF(__pyx_v_free_fn);
  __Pyx_INCREF(__pyx_v_cancel_fn);
  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_cancel_fn);
  __Pyx_GIVEREF(__pyx_v_cancel_fn);
  __Pyx_INCREF(__pyx_v_args);
  PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_args);
  __Pyx_GIVEREF(__pyx_v_args);
  __Pyx_INCREF(__pyx_v_kargs);
  PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_v_kargs);
  __Pyx_GIVEREF(__pyx_v_kargs);
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_greq)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":329
 *         cdef _p_greq state = \
 *              _p_greq(query_fn, free_fn, cancel_fn, args, kargs)
 *         with nogil: CHKERR( MPI_Grequest_start(             # <<<<<<<<<<<<<<
 *             greq_query_fn, greq_free_fn, greq_cancel_fn,
 *             <void*>state, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":331
 *         with nogil: CHKERR( MPI_Grequest_start(
 *             greq_query_fn, greq_free_fn, greq_cancel_fn,
 *             <void*>state, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         Py_INCREF(state)
 *         request.ob_grequest = request.ob_mpi
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Grequest_start(__pyx_f_6mpi4py_3MPI_greq_query_fn, __pyx_f_6mpi4py_3MPI_greq_free_fn, __pyx_f_6mpi4py_3MPI_greq_cancel_fn, ((void *)__pyx_v_state), (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":329
 *         cdef _p_greq state = \
 *              _p_greq(query_fn, free_fn, cancel_fn, args, kargs)
 *         with nogil: CHKERR( MPI_Grequest_start(             # <<<<<<<<<<<<<<
 *             greq_query_fn, greq_free_fn, greq_cancel_fn,
 *             <void*>state, &request.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":332
 *             greq_query_fn, greq_free_fn, greq_cancel_fn,
 *             <void*>state, &request.ob_mpi) )
 *         Py_INCREF(state)             # <<<<<<<<<<<<<<
 *         request.ob_grequest = request.ob_mpi
 *         return request
 */
  Py_INCREF(((PyObject *)__pyx_v_state));

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":333
 *             <void*>state, &request.ob_mpi) )
 *         Py_INCREF(state)
 *         request.ob_grequest = request.ob_mpi             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __pyx_v_request->ob_grequest = __pyx_v_request->__pyx_base.ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":334
 *         Py_INCREF(state)
 *         request.ob_grequest = request.ob_mpi
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Complete(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Grequest.Start", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":336
 *         return request
 * 
 *     def Complete(self):             # <<<<<<<<<<<<<<
 *         """
 *         Notify that a user-defined request is complete
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Grequest_2Complete(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Grequest_2Complete[] = "Grequest.Complete(self)\n\n        Notify that a user-defined request is complete\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Grequest_2Complete(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Request __pyx_v_grequest;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Complete");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Complete", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Complete", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":340
 *         Notify that a user-defined request is complete
 *         """
 *         if self.ob_mpi != MPI_REQUEST_NULL:             # <<<<<<<<<<<<<<
 *             if self.ob_mpi != self.ob_grequest:
 *                 raise MPIException(MPI_ERR_REQUEST)
 */
  __pyx_t_1 = (((struct PyMPIGrequestObject *)__pyx_v_self)->__pyx_base.ob_mpi != MPI_REQUEST_NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":341
 *         """
 *         if self.ob_mpi != MPI_REQUEST_NULL:
 *             if self.ob_mpi != self.ob_grequest:             # <<<<<<<<<<<<<<
 *                 raise MPIException(MPI_ERR_REQUEST)
 *         cdef MPI_Request grequest = self.ob_grequest
 */
    __pyx_t_1 = (((struct PyMPIGrequestObject *)__pyx_v_self)->__pyx_base.ob_mpi != ((struct PyMPIGrequestObject *)__pyx_v_self)->ob_grequest);
    if (__pyx_t_1) {

      /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":342
 *         if self.ob_mpi != MPI_REQUEST_NULL:
 *             if self.ob_mpi != self.ob_grequest:
 *                 raise MPIException(MPI_ERR_REQUEST)             # <<<<<<<<<<<<<<
 *         cdef MPI_Request grequest = self.ob_grequest
 *         self.ob_grequest = self.ob_mpi ## or MPI_REQUEST_NULL ??
 */
      __pyx_t_2 = PyInt_FromLong(MPI_ERR_REQUEST); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_t_2 = 0;
      __pyx_t_2 = PyObject_Call(__pyx_v_6mpi4py_3MPI_MPIException, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      {__pyx_filename = __pyx_f[21]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L6;
    }
    __pyx_L6:;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":343
 *             if self.ob_mpi != self.ob_grequest:
 *                 raise MPIException(MPI_ERR_REQUEST)
 *         cdef MPI_Request grequest = self.ob_grequest             # <<<<<<<<<<<<<<
 *         self.ob_grequest = self.ob_mpi ## or MPI_REQUEST_NULL ??
 *         with nogil: CHKERR( MPI_Grequest_complete(grequest) )
 */
  __pyx_v_grequest = ((struct PyMPIGrequestObject *)__pyx_v_self)->ob_grequest;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":344
 *                 raise MPIException(MPI_ERR_REQUEST)
 *         cdef MPI_Request grequest = self.ob_grequest
 *         self.ob_grequest = self.ob_mpi ## or MPI_REQUEST_NULL ??             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Grequest_complete(grequest) )
 *         self.ob_grequest = self.ob_mpi ## or MPI_REQUEST_NULL ??
 */
  ((struct PyMPIGrequestObject *)__pyx_v_self)->ob_grequest = ((struct PyMPIGrequestObject *)__pyx_v_self)->__pyx_base.ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":345
 *         cdef MPI_Request grequest = self.ob_grequest
 *         self.ob_grequest = self.ob_mpi ## or MPI_REQUEST_NULL ??
 *         with nogil: CHKERR( MPI_Grequest_complete(grequest) )             # <<<<<<<<<<<<<<
 *         self.ob_grequest = self.ob_mpi ## or MPI_REQUEST_NULL ??
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Grequest_complete(__pyx_v_grequest)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L8;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L9;
        __pyx_L8: __pyx_why = 4; goto __pyx_L9;
        __pyx_L9:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":346
 *         self.ob_grequest = self.ob_mpi ## or MPI_REQUEST_NULL ??
 *         with nogil: CHKERR( MPI_Grequest_complete(grequest) )
 *         self.ob_grequest = self.ob_mpi ## or MPI_REQUEST_NULL ??             # <<<<<<<<<<<<<<
 * 
 * 
 */
  ((struct PyMPIGrequestObject *)__pyx_v_self)->ob_grequest = ((struct PyMPIGrequestObject *)__pyx_v_self)->__pyx_base.ob_mpi;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Grequest.Complete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":7
 *     """
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ob_mpi = MPI_INFO_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_4Info___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_4Info___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":8
 * 
 *     def __cinit__(self):
 *         self.ob_mpi = MPI_INFO_NULL             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  ((struct PyMPIInfoObject *)__pyx_v_self)->ob_mpi = MPI_INFO_NULL;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":10
 *         self.ob_mpi = MPI_INFO_NULL
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( del_Info(&self.ob_mpi) )
 */

static void __pyx_pf_6mpi4py_3MPI_4Info_1__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_6mpi4py_3MPI_4Info_1__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":11
 * 
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return             # <<<<<<<<<<<<<<
 *         CHKERR( del_Info(&self.ob_mpi) )
 * 
 */
  __pyx_t_1 = (!(((struct PyMPIInfoObject *)__pyx_v_self)->flags & __pyx_e_6mpi4py_3MPI_PyMPI_OWNED));
  if (__pyx_t_1) {
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":12
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( del_Info(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_f_6mpi4py_3MPI_del_Info((&((struct PyMPIInfoObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Info.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":14
 *         CHKERR( del_Info(&self.ob_mpi) )
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(self,  Info): return NotImplemented
 *         if not isinstance(other, Info): return NotImplemented
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  struct PyMPIInfoObject *__pyx_v_s = 0;
  struct PyMPIInfoObject *__pyx_v_o = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":15
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Info): return NotImplemented             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Info): return NotImplemented
 *         cdef Info s = <Info>self, o = <Info>other
 */
  __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Info));
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_self, __pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":16
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Info): return NotImplemented
 *         if not isinstance(other, Info): return NotImplemented             # <<<<<<<<<<<<<<
 *         cdef Info s = <Info>self, o = <Info>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 */
  __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Info));
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_other, __pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = (!__pyx_t_3);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":17
 *         if not isinstance(self,  Info): return NotImplemented
 *         if not isinstance(other, Info): return NotImplemented
 *         cdef Info s = <Info>self, o = <Info>other             # <<<<<<<<<<<<<<
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 */
  __Pyx_INCREF(((PyObject *)((struct PyMPIInfoObject *)__pyx_v_self)));
  __pyx_v_s = ((struct PyMPIInfoObject *)__pyx_v_self);
  __Pyx_INCREF(((PyObject *)((struct PyMPIInfoObject *)__pyx_v_other)));
  __pyx_v_o = ((struct PyMPIInfoObject *)__pyx_v_other);

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":19
 *         cdef Info s = <Info>self, o = <Info>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError("only '==' and '!='")
 * 
 */
  switch (__pyx_v_op) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":18
 *         if not isinstance(other, Info): return NotImplemented
 *         cdef Info s = <Info>self, o = <Info>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)             # <<<<<<<<<<<<<<
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")
 */
    case Py_EQ:
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi == __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":19
 *         cdef Info s = <Info>self, o = <Info>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError("only '==' and '!='")
 * 
 */
    case Py_NE:
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi != __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    break;
    default:

    /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":20
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
    __pyx_t_1 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_63), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[22]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    break;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Info.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_s);
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":22
 *         else: raise TypeError("only '==' and '!='")
 * 
 *     def __bool__(self):             # <<<<<<<<<<<<<<
 *         return self.ob_mpi != MPI_INFO_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_4Info_3__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_4Info_3__bool__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":23
 * 
 *     def __bool__(self):
 *         return self.ob_mpi != MPI_INFO_NULL             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __pyx_r = (((struct PyMPIInfoObject *)__pyx_v_self)->ob_mpi != MPI_INFO_NULL);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":26
 * 
 *     @classmethod
 *     def Create(cls):             # <<<<<<<<<<<<<<
 *         """
 *         Create a new, empty info object
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_4Create(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_4Create[] = "Info.Create(type cls)\n\n        Create a new, empty info object\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_4Create(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Create", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Create", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":30
 *         Create a new, empty info object
 *         """
 *         cdef Info info = <Info>cls()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Info_create(&info.ob_mpi) )
 *         return info
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIInfoObject *)__pyx_t_1)));
  __pyx_v_info = ((struct PyMPIInfoObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":31
 *         """
 *         cdef Info info = <Info>cls()
 *         CHKERR( MPI_Info_create(&info.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return info
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_create((&__pyx_v_info->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":32
 *         cdef Info info = <Info>cls()
 *         CHKERR( MPI_Info_create(&info.ob_mpi) )
 *         return info             # <<<<<<<<<<<<<<
 * 
 *     def Free(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_info));
  __pyx_r = ((PyObject *)__pyx_v_info);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Info.Create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_info);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":34
 *         return info
 * 
 *     def Free(self):             # <<<<<<<<<<<<<<
 *         """
 *         Free a info object
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_5Free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_5Free[] = "Info.Free(self)\n\n        Free a info object\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_5Free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Free");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Free", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Free", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":38
 *         Free a info object
 *         """
 *         CHKERR( MPI_Info_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Dup(self):
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_free((&((struct PyMPIInfoObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Info.Free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":40
 *         CHKERR( MPI_Info_free(&self.ob_mpi) )
 * 
 *     def Dup(self):             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate an existing info object, creating a new object, with
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_6Dup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_6Dup[] = "Info.Dup(self)\n\n        Duplicate an existing info object, creating a new object, with\n        the same (key, value) pairs and the same ordering of keys\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_6Dup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Dup");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Dup", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Dup", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":45
 *         the same (key, value) pairs and the same ordering of keys
 *         """
 *         cdef Info info = <Info>type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Info_dup(self.ob_mpi, &info.ob_mpi) )
 *         return info
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIInfoObject *)__pyx_t_1)));
  __pyx_v_info = ((struct PyMPIInfoObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":46
 *         """
 *         cdef Info info = <Info>type(self)()
 *         CHKERR( MPI_Info_dup(self.ob_mpi, &info.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return info
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_dup(((struct PyMPIInfoObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_info->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":47
 *         cdef Info info = <Info>type(self)()
 *         CHKERR( MPI_Info_dup(self.ob_mpi, &info.ob_mpi) )
 *         return info             # <<<<<<<<<<<<<<
 * 
 *     def Get(self, object key, int maxlen=-1):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_info));
  __pyx_r = ((PyObject *)__pyx_v_info);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Info.Dup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_info);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":49
 *         return info
 * 
 *     def Get(self, object key, int maxlen=-1):             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve the value associated with a key
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_7Get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_7Get[] = "Info.Get(self, key, int maxlen=-1)\n\n        Retrieve the value associated with a key\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_7Get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_key = 0;
  int __pyx_v_maxlen;
  char *__pyx_v_ckey;
  char *__pyx_v_cvalue;
  int __pyx_v_flag;
  PyObject *__pyx_v_tmp = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__key,&__pyx_n_s__maxlen,0};
  __Pyx_RefNannySetupContext("Get");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__key);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__maxlen);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Get") < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_key = values[0];
    if (values[1]) {
      __pyx_v_maxlen = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_maxlen == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_maxlen = ((int)-1);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[22]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Info.Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_key);

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":53
 *         Retrieve the value associated with a key
 *         """
 *         if maxlen < 0: maxlen = MPI_MAX_INFO_VAL             # <<<<<<<<<<<<<<
 *         if maxlen > MPI_MAX_INFO_VAL: maxlen = MPI_MAX_INFO_VAL
 *         cdef char *ckey = NULL
 */
  __pyx_t_1 = (__pyx_v_maxlen < 0);
  if (__pyx_t_1) {
    __pyx_v_maxlen = MPI_MAX_INFO_VAL;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":54
 *         """
 *         if maxlen < 0: maxlen = MPI_MAX_INFO_VAL
 *         if maxlen > MPI_MAX_INFO_VAL: maxlen = MPI_MAX_INFO_VAL             # <<<<<<<<<<<<<<
 *         cdef char *ckey = NULL
 *         cdef char *cvalue = NULL
 */
  __pyx_t_1 = (__pyx_v_maxlen > MPI_MAX_INFO_VAL);
  if (__pyx_t_1) {
    __pyx_v_maxlen = MPI_MAX_INFO_VAL;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":55
 *         if maxlen < 0: maxlen = MPI_MAX_INFO_VAL
 *         if maxlen > MPI_MAX_INFO_VAL: maxlen = MPI_MAX_INFO_VAL
 *         cdef char *ckey = NULL             # <<<<<<<<<<<<<<
 *         cdef char *cvalue = NULL
 *         cdef int flag = 0
 */
  __pyx_v_ckey = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":56
 *         if maxlen > MPI_MAX_INFO_VAL: maxlen = MPI_MAX_INFO_VAL
 *         cdef char *ckey = NULL
 *         cdef char *cvalue = NULL             # <<<<<<<<<<<<<<
 *         cdef int flag = 0
 *         key = asmpistr(key, &ckey, NULL)
 */
  __pyx_v_cvalue = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":57
 *         cdef char *ckey = NULL
 *         cdef char *cvalue = NULL
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         key = asmpistr(key, &ckey, NULL)
 *         cdef tmp = allocate((maxlen+1), sizeof(char), <void**>&cvalue)
 */
  __pyx_v_flag = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":58
 *         cdef char *cvalue = NULL
 *         cdef int flag = 0
 *         key = asmpistr(key, &ckey, NULL)             # <<<<<<<<<<<<<<
 *         cdef tmp = allocate((maxlen+1), sizeof(char), <void**>&cvalue)
 *         CHKERR( MPI_Info_get(self.ob_mpi, ckey, maxlen, cvalue, &flag) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_key, (&__pyx_v_ckey), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_key);
  __pyx_v_key = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":59
 *         cdef int flag = 0
 *         key = asmpistr(key, &ckey, NULL)
 *         cdef tmp = allocate((maxlen+1), sizeof(char), <void**>&cvalue)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Info_get(self.ob_mpi, ckey, maxlen, cvalue, &flag) )
 *         cvalue[maxlen] = 0 # just in case
 */
  __pyx_t_2 = PyMPI_Allocate((__pyx_v_maxlen + 1), (sizeof(char)), ((void **)(&__pyx_v_cvalue))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":60
 *         key = asmpistr(key, &ckey, NULL)
 *         cdef tmp = allocate((maxlen+1), sizeof(char), <void**>&cvalue)
 *         CHKERR( MPI_Info_get(self.ob_mpi, ckey, maxlen, cvalue, &flag) )             # <<<<<<<<<<<<<<
 *         cvalue[maxlen] = 0 # just in case
 *         if not flag: return None
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_get(((struct PyMPIInfoObject *)__pyx_v_self)->ob_mpi, __pyx_v_ckey, __pyx_v_maxlen, __pyx_v_cvalue, (&__pyx_v_flag))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":61
 *         cdef tmp = allocate((maxlen+1), sizeof(char), <void**>&cvalue)
 *         CHKERR( MPI_Info_get(self.ob_mpi, ckey, maxlen, cvalue, &flag) )
 *         cvalue[maxlen] = 0 # just in case             # <<<<<<<<<<<<<<
 *         if not flag: return None
 *         return mpistr(cvalue)
 */
  (__pyx_v_cvalue[__pyx_v_maxlen]) = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":62
 *         CHKERR( MPI_Info_get(self.ob_mpi, ckey, maxlen, cvalue, &flag) )
 *         cvalue[maxlen] = 0 # just in case
 *         if not flag: return None             # <<<<<<<<<<<<<<
 *         return mpistr(cvalue)
 * 
 */
  __pyx_t_1 = (!__pyx_v_flag);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":63
 *         cvalue[maxlen] = 0 # just in case
 *         if not flag: return None
 *         return mpistr(cvalue)             # <<<<<<<<<<<<<<
 * 
 *     def Set(self, object key, object value):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_cvalue); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Info.Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":65
 *         return mpistr(cvalue)
 * 
 *     def Set(self, object key, object value):             # <<<<<<<<<<<<<<
 *         """
 *         Add the (key, value) pair to info, and overrides the value if
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_8Set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_8Set[] = "Info.Set(self, key, value)\n\n        Add the (key, value) pair to info, and overrides the value if\n        a value for the same key was previously set\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_8Set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_value = 0;
  char *__pyx_v_ckey;
  char *__pyx_v_cvalue;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__key,&__pyx_n_s__value,0};
  __Pyx_RefNannySetupContext("Set");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__key);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__value);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Set", 1, 2, 2, 1); {__pyx_filename = __pyx_f[22]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Set") < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_key = values[0];
    __pyx_v_value = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[22]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Info.Set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_key);
  __Pyx_INCREF(__pyx_v_value);

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":70
 *         a value for the same key was previously set
 *         """
 *         cdef char *ckey = NULL             # <<<<<<<<<<<<<<
 *         cdef char *cvalue = NULL
 *         key = asmpistr(key, &ckey, NULL)
 */
  __pyx_v_ckey = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":71
 *         """
 *         cdef char *ckey = NULL
 *         cdef char *cvalue = NULL             # <<<<<<<<<<<<<<
 *         key = asmpistr(key, &ckey, NULL)
 *         value = asmpistr(value, &cvalue, NULL)
 */
  __pyx_v_cvalue = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":72
 *         cdef char *ckey = NULL
 *         cdef char *cvalue = NULL
 *         key = asmpistr(key, &ckey, NULL)             # <<<<<<<<<<<<<<
 *         value = asmpistr(value, &cvalue, NULL)
 *         CHKERR( MPI_Info_set(self.ob_mpi, ckey, cvalue) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_key, (&__pyx_v_ckey), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_key);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":73
 *         cdef char *cvalue = NULL
 *         key = asmpistr(key, &ckey, NULL)
 *         value = asmpistr(value, &cvalue, NULL)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Info_set(self.ob_mpi, ckey, cvalue) )
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_value, (&__pyx_v_cvalue), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_value);
  __pyx_v_value = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":74
 *         key = asmpistr(key, &ckey, NULL)
 *         value = asmpistr(value, &cvalue, NULL)
 *         CHKERR( MPI_Info_set(self.ob_mpi, ckey, cvalue) )             # <<<<<<<<<<<<<<
 * 
 *     def Delete(self, object key):
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_set(((struct PyMPIInfoObject *)__pyx_v_self)->ob_mpi, __pyx_v_ckey, __pyx_v_cvalue)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Info.Set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":76
 *         CHKERR( MPI_Info_set(self.ob_mpi, ckey, cvalue) )
 * 
 *     def Delete(self, object key):             # <<<<<<<<<<<<<<
 *         """
 *         Remove a (key, value) pair from info
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_9Delete(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_9Delete[] = "Info.Delete(self, key)\n\n        Remove a (key, value) pair from info\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_9Delete(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_key = 0;
  char *__pyx_v_ckey;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__key,0};
  __Pyx_RefNannySetupContext("Delete");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__key);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Delete") < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_key = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Delete", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[22]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Info.Delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_key);

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":80
 *         Remove a (key, value) pair from info
 *         """
 *         cdef char *ckey = NULL             # <<<<<<<<<<<<<<
 *         key = asmpistr(key, &ckey, NULL)
 *         CHKERR( MPI_Info_delete(self.ob_mpi, ckey) )
 */
  __pyx_v_ckey = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":81
 *         """
 *         cdef char *ckey = NULL
 *         key = asmpistr(key, &ckey, NULL)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Info_delete(self.ob_mpi, ckey) )
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_key, (&__pyx_v_ckey), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_key);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":82
 *         cdef char *ckey = NULL
 *         key = asmpistr(key, &ckey, NULL)
 *         CHKERR( MPI_Info_delete(self.ob_mpi, ckey) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_nkeys(self):
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_delete(((struct PyMPIInfoObject *)__pyx_v_self)->ob_mpi, __pyx_v_ckey)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Info.Delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":84
 *         CHKERR( MPI_Info_delete(self.ob_mpi, ckey) )
 * 
 *     def Get_nkeys(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of currently defined keys in info
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_10Get_nkeys(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_10Get_nkeys[] = "Info.Get_nkeys(self)\n\n        Return the number of currently defined keys in info\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_10Get_nkeys(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_nkeys;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_nkeys");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_nkeys", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_nkeys", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":88
 *         Return the number of currently defined keys in info
 *         """
 *         cdef int nkeys = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Info_get_nkeys(self.ob_mpi, &nkeys) )
 *         return nkeys
 */
  __pyx_v_nkeys = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":89
 *         """
 *         cdef int nkeys = 0
 *         CHKERR( MPI_Info_get_nkeys(self.ob_mpi, &nkeys) )             # <<<<<<<<<<<<<<
 *         return nkeys
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_get_nkeys(((struct PyMPIInfoObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_nkeys))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":90
 *         cdef int nkeys = 0
 *         CHKERR( MPI_Info_get_nkeys(self.ob_mpi, &nkeys) )
 *         return nkeys             # <<<<<<<<<<<<<<
 * 
 *     def Get_nthkey(self, int n):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_nkeys); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Info.Get_nkeys", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":92
 *         return nkeys
 * 
 *     def Get_nthkey(self, int n):             # <<<<<<<<<<<<<<
 *         """
 *         Return the nth defined key in info. Keys are numbered in the
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_11Get_nthkey(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_11Get_nthkey[] = "Info.Get_nthkey(self, int n)\n\n        Return the nth defined key in info. Keys are numbered in the\n        range [0, N) where N is the value returned by\n        `Info.Get_nkeys()`\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_11Get_nthkey(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_n;
  char __pyx_v_ckey[(MPI_MAX_INFO_KEY + 1)];
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__n,0};
  __Pyx_RefNannySetupContext("Get_nthkey");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__n);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Get_nthkey") < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_n = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_nthkey", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[22]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Info.Get_nthkey", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":99
 *         """
 *         cdef char ckey[MPI_MAX_INFO_KEY+1]
 *         CHKERR( MPI_Info_get_nthkey(self.ob_mpi, n, ckey) )             # <<<<<<<<<<<<<<
 *         ckey[MPI_MAX_INFO_KEY] = 0 # just in case
 *         return mpistr(ckey)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_get_nthkey(((struct PyMPIInfoObject *)__pyx_v_self)->ob_mpi, __pyx_v_n, __pyx_v_ckey)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":100
 *         cdef char ckey[MPI_MAX_INFO_KEY+1]
 *         CHKERR( MPI_Info_get_nthkey(self.ob_mpi, n, ckey) )
 *         ckey[MPI_MAX_INFO_KEY] = 0 # just in case             # <<<<<<<<<<<<<<
 *         return mpistr(ckey)
 * 
 */
  (__pyx_v_ckey[MPI_MAX_INFO_KEY]) = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":101
 *         CHKERR( MPI_Info_get_nthkey(self.ob_mpi, n, ckey) )
 *         ckey[MPI_MAX_INFO_KEY] = 0 # just in case
 *         return mpistr(ckey)             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_ckey); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Info.Get_nthkey", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":106
 *     # --------------
 * 
 *     def py2f(self):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_12py2f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_12py2f[] = "Info.py2f(self)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_12py2f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("py2f");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("py2f", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "py2f", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":109
 *         """
 *         """
 *         return MPI_Info_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_to_py_MPI_Fint(MPI_Info_c2f(((struct PyMPIInfoObject *)__pyx_v_self)->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Info.py2f", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":112
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_13f2py(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_13f2py[] = "Info.f2py(type cls, arg)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_13f2py(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_arg = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Fint __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__arg,0};
  __Pyx_RefNannySetupContext("f2py");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__arg);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "f2py") < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[22]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Info.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":115
 *         """
 *         """
 *         cdef Info info = <Info>cls()             # <<<<<<<<<<<<<<
 *         info.ob_mpi = MPI_Info_f2c(arg)
 *         return info
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIInfoObject *)__pyx_t_1)));
  __pyx_v_info = ((struct PyMPIInfoObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":116
 *         """
 *         cdef Info info = <Info>cls()
 *         info.ob_mpi = MPI_Info_f2c(arg)             # <<<<<<<<<<<<<<
 *         return info
 * 
 */
  __pyx_t_2 = __Pyx_PyInt_from_py_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_2 == (MPI_Fint)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_info->ob_mpi = MPI_Info_f2c(__pyx_t_2);

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":117
 *         cdef Info info = <Info>cls()
 *         info.ob_mpi = MPI_Info_f2c(arg)
 *         return info             # <<<<<<<<<<<<<<
 * 
 *     # Python mapping emulation
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_info));
  __pyx_r = ((PyObject *)__pyx_v_info);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Info.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_info);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":122
 *     # ------------------------
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         if not self: return 0
 *         return self.Get_nkeys()
 */

static Py_ssize_t __pyx_pf_6mpi4py_3MPI_4Info_14__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pf_6mpi4py_3MPI_4Info_14__len__(PyObject *__pyx_v_self) {
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__len__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":123
 * 
 *     def __len__(self):
 *         if not self: return 0             # <<<<<<<<<<<<<<
 *         return self.Get_nkeys()
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":124
 *     def __len__(self):
 *         if not self: return 0
 *         return self.Get_nkeys()             # <<<<<<<<<<<<<<
 * 
 *     def __contains__(self, object key):
 */
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_nkeys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Info.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":126
 *         return self.Get_nkeys()
 * 
 *     def __contains__(self, object key):             # <<<<<<<<<<<<<<
 *         if not self: return False
 *         cdef char *ckey = NULL
 */

static int __pyx_pf_6mpi4py_3MPI_4Info_15__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_4Info_15__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
  char *__pyx_v_ckey;
  int __pyx_v_dummy;
  int __pyx_v_haskey;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__contains__");
  __Pyx_INCREF(__pyx_v_key);

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":127
 * 
 *     def __contains__(self, object key):
 *         if not self: return False             # <<<<<<<<<<<<<<
 *         cdef char *ckey = NULL
 *         cdef int dummy = 0
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":128
 *     def __contains__(self, object key):
 *         if not self: return False
 *         cdef char *ckey = NULL             # <<<<<<<<<<<<<<
 *         cdef int dummy = 0
 *         cdef int haskey = 0
 */
  __pyx_v_ckey = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":129
 *         if not self: return False
 *         cdef char *ckey = NULL
 *         cdef int dummy = 0             # <<<<<<<<<<<<<<
 *         cdef int haskey = 0
 *         key = asmpistr(key, &ckey, NULL)
 */
  __pyx_v_dummy = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":130
 *         cdef char *ckey = NULL
 *         cdef int dummy = 0
 *         cdef int haskey = 0             # <<<<<<<<<<<<<<
 *         key = asmpistr(key, &ckey, NULL)
 *         CHKERR( MPI_Info_get_valuelen(self.ob_mpi, ckey, &dummy, &haskey) )
 */
  __pyx_v_haskey = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":131
 *         cdef int dummy = 0
 *         cdef int haskey = 0
 *         key = asmpistr(key, &ckey, NULL)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Info_get_valuelen(self.ob_mpi, ckey, &dummy, &haskey) )
 *         return <bint>haskey
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_key, (&__pyx_v_ckey), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_v_key);
  __pyx_v_key = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":132
 *         cdef int haskey = 0
 *         key = asmpistr(key, &ckey, NULL)
 *         CHKERR( MPI_Info_get_valuelen(self.ob_mpi, ckey, &dummy, &haskey) )             # <<<<<<<<<<<<<<
 *         return <bint>haskey
 * 
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_get_valuelen(((struct PyMPIInfoObject *)__pyx_v_self)->ob_mpi, __pyx_v_ckey, (&__pyx_v_dummy), (&__pyx_v_haskey))); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":133
 *         key = asmpistr(key, &ckey, NULL)
 *         CHKERR( MPI_Info_get_valuelen(self.ob_mpi, ckey, &dummy, &haskey) )
 *         return <bint>haskey             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
  __pyx_r = ((int)__pyx_v_haskey);
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Info.__contains__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":135
 *         return <bint>haskey
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.keys())
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_16__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_16__iter__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iter__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":136
 * 
 *     def __iter__(self):
 *         return iter(self.keys())             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, object key):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__keys); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Info.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":138
 *         return iter(self.keys())
 * 
 *     def __getitem__(self, object key):             # <<<<<<<<<<<<<<
 *         if not self: raise KeyError(key)
 *         cdef object value = self.Get(key)
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_17__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_17__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":139
 * 
 *     def __getitem__(self, object key):
 *         if not self: raise KeyError(key)             # <<<<<<<<<<<<<<
 *         cdef object value = self.Get(key)
 *         if value is None: raise KeyError(key)
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __Pyx_INCREF(__pyx_v_key);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_key);
    __Pyx_GIVEREF(__pyx_v_key);
    __pyx_t_4 = PyObject_Call(__pyx_builtin_KeyError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[22]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":140
 *     def __getitem__(self, object key):
 *         if not self: raise KeyError(key)
 *         cdef object value = self.Get(key)             # <<<<<<<<<<<<<<
 *         if value is None: raise KeyError(key)
 *         return value
 */
  __pyx_t_4 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  __Pyx_INCREF(__pyx_v_key);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_key);
  __Pyx_GIVEREF(__pyx_v_key);
  __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  __pyx_v_value = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":141
 *         if not self: raise KeyError(key)
 *         cdef object value = self.Get(key)
 *         if value is None: raise KeyError(key)             # <<<<<<<<<<<<<<
 *         return value
 * 
 */
  __pyx_t_2 = (__pyx_v_value == Py_None);
  if (__pyx_t_2) {
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    __Pyx_INCREF(__pyx_v_key);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_key);
    __Pyx_GIVEREF(__pyx_v_key);
    __pyx_t_3 = PyObject_Call(__pyx_builtin_KeyError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[22]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":142
 *         cdef object value = self.Get(key)
 *         if value is None: raise KeyError(key)
 *         return value             # <<<<<<<<<<<<<<
 * 
 *     def __setitem__(self, object key, object value):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_value);
  __pyx_r = __pyx_v_value;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Info.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":144
 *         return value
 * 
 *     def __setitem__(self, object key, object value):             # <<<<<<<<<<<<<<
 *         if not self: raise KeyError(key)
 *         self.Set(key, value)
 */

static int __pyx_pf_6mpi4py_3MPI_4Info_18__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_4Info_18__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setitem__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":145
 * 
 *     def __setitem__(self, object key, object value):
 *         if not self: raise KeyError(key)             # <<<<<<<<<<<<<<
 *         self.Set(key, value)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __Pyx_INCREF(__pyx_v_key);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_key);
    __Pyx_GIVEREF(__pyx_v_key);
    __pyx_t_4 = PyObject_Call(__pyx_builtin_KeyError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[22]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":146
 *     def __setitem__(self, object key, object value):
 *         if not self: raise KeyError(key)
 *         self.Set(key, value)             # <<<<<<<<<<<<<<
 * 
 *     def __delitem__(self, object key):
 */
  __pyx_t_4 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Set); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  __Pyx_INCREF(__pyx_v_key);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_key);
  __Pyx_GIVEREF(__pyx_v_key);
  __Pyx_INCREF(__pyx_v_value);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Info.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":148
 *         self.Set(key, value)
 * 
 *     def __delitem__(self, object key):             # <<<<<<<<<<<<<<
 *         if not self: raise KeyError(key)
 *         if key not in self: raise KeyError(key)
 */

static int __pyx_pf_6mpi4py_3MPI_4Info_19__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_4Info_19__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__delitem__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":149
 * 
 *     def __delitem__(self, object key):
 *         if not self: raise KeyError(key)             # <<<<<<<<<<<<<<
 *         if key not in self: raise KeyError(key)
 *         self.Delete(key)
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __Pyx_INCREF(__pyx_v_key);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_key);
    __Pyx_GIVEREF(__pyx_v_key);
    __pyx_t_4 = PyObject_Call(__pyx_builtin_KeyError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[22]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":150
 *     def __delitem__(self, object key):
 *         if not self: raise KeyError(key)
 *         if key not in self: raise KeyError(key)             # <<<<<<<<<<<<<<
 *         self.Delete(key)
 * 
 */
  __pyx_t_2 = (__Pyx_NegateNonNeg(PySequence_Contains(__pyx_v_self, __pyx_v_key))); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_2) {
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    __Pyx_INCREF(__pyx_v_key);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_key);
    __Pyx_GIVEREF(__pyx_v_key);
    __pyx_t_3 = PyObject_Call(__pyx_builtin_KeyError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[22]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":151
 *         if not self: raise KeyError(key)
 *         if key not in self: raise KeyError(key)
 *         self.Delete(key)             # <<<<<<<<<<<<<<
 * 
 *     def get(self, object key, object default=None):
 */
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Delete); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  __Pyx_INCREF(__pyx_v_key);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_key);
  __Pyx_GIVEREF(__pyx_v_key);
  __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Info.__delitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":153
 *         self.Delete(key)
 * 
 *     def get(self, object key, object default=None):             # <<<<<<<<<<<<<<
 *         """info get"""
 *         if not self: return default
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_20get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_20get[] = "Info.get(self, key, default=None)\ninfo get";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_20get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_default = 0;
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__key,&__pyx_n_s__default,0};
  __Pyx_RefNannySetupContext("get");
  {
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__key);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__default);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "get") < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_key = values[0];
    __pyx_v_default = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[22]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Info.get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":155
 *     def get(self, object key, object default=None):
 *         """info get"""
 *         if not self: return default             # <<<<<<<<<<<<<<
 *         cdef object value = self.Get(key)
 *         if value is None: return default
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_default);
    __pyx_r = __pyx_v_default;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":156
 *         """info get"""
 *         if not self: return default
 *         cdef object value = self.Get(key)             # <<<<<<<<<<<<<<
 *         if value is None: return default
 *         return value
 */
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  __Pyx_INCREF(__pyx_v_key);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_key);
  __Pyx_GIVEREF(__pyx_v_key);
  __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __pyx_v_value = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":157
 *         if not self: return default
 *         cdef object value = self.Get(key)
 *         if value is None: return default             # <<<<<<<<<<<<<<
 *         return value
 * 
 */
  __pyx_t_2 = (__pyx_v_value == Py_None);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_default);
    __pyx_r = __pyx_v_default;
    goto __pyx_L0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":158
 *         cdef object value = self.Get(key)
 *         if value is None: return default
 *         return value             # <<<<<<<<<<<<<<
 * 
 *     def keys(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_value);
  __pyx_r = __pyx_v_value;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Info.get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":160
 *         return value
 * 
 *     def keys(self):             # <<<<<<<<<<<<<<
 *         """info keys"""
 *         if not self: return []
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_21keys(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_21keys[] = "Info.keys(self)\ninfo keys";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_21keys(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_keys = 0;
  int __pyx_v_k;
  int __pyx_v_nkeys;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("keys");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("keys", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "keys", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":162
 *     def keys(self):
 *         """info keys"""
 *         if not self: return []             # <<<<<<<<<<<<<<
 *         cdef list keys = []
 *         cdef int k = 0, nkeys = self.Get_nkeys()
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_r = ((PyObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":163
 *         """info keys"""
 *         if not self: return []
 *         cdef list keys = []             # <<<<<<<<<<<<<<
 *         cdef int k = 0, nkeys = self.Get_nkeys()
 *         cdef object key
 */
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  __pyx_v_keys = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":164
 *         if not self: return []
 *         cdef list keys = []
 *         cdef int k = 0, nkeys = self.Get_nkeys()             # <<<<<<<<<<<<<<
 *         cdef object key
 *         for k from 0 <= k < nkeys:
 */
  __pyx_v_k = 0;
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_nkeys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_nkeys = __pyx_t_5;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":166
 *         cdef int k = 0, nkeys = self.Get_nkeys()
 *         cdef object key
 *         for k from 0 <= k < nkeys:             # <<<<<<<<<<<<<<
 *             key = self.Get_nthkey(k)
 *             keys.append(key)
 */
  __pyx_t_5 = __pyx_v_nkeys;
  for (__pyx_v_k = 0; __pyx_v_k < __pyx_t_5; __pyx_v_k++) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":167
 *         cdef object key
 *         for k from 0 <= k < nkeys:
 *             key = self.Get_nthkey(k)             # <<<<<<<<<<<<<<
 *             keys.append(key)
 *         return keys
 */
    __pyx_t_4 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_nthkey); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_v_key);
    __pyx_v_key = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":168
 *         for k from 0 <= k < nkeys:
 *             key = self.Get_nthkey(k)
 *             keys.append(key)             # <<<<<<<<<<<<<<
 *         return keys
 * 
 */
    if (unlikely(((PyObject *)__pyx_v_keys) == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append"); {__pyx_filename = __pyx_f[22]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
    }
    __pyx_t_7 = PyList_Append(__pyx_v_keys, __pyx_v_key); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":169
 *             key = self.Get_nthkey(k)
 *             keys.append(key)
 *         return keys             # <<<<<<<<<<<<<<
 * 
 *     def values(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_keys));
  __pyx_r = ((PyObject *)__pyx_v_keys);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.Info.keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_keys);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":171
 *         return keys
 * 
 *     def values(self):             # <<<<<<<<<<<<<<
 *         """info values"""
 *         if not self: return []
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_22values(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_22values[] = "Info.values(self)\ninfo values";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_22values(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_values = 0;
  int __pyx_v_k;
  int __pyx_v_nkeys;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_val = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("values");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("values", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "values", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":173
 *     def values(self):
 *         """info values"""
 *         if not self: return []             # <<<<<<<<<<<<<<
 *         cdef list values = []
 *         cdef int k = 0, nkeys = self.Get_nkeys()
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_r = ((PyObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":174
 *         """info values"""
 *         if not self: return []
 *         cdef list values = []             # <<<<<<<<<<<<<<
 *         cdef int k = 0, nkeys = self.Get_nkeys()
 *         cdef object key, val
 */
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  __pyx_v_values = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":175
 *         if not self: return []
 *         cdef list values = []
 *         cdef int k = 0, nkeys = self.Get_nkeys()             # <<<<<<<<<<<<<<
 *         cdef object key, val
 *         for k from 0 <= k < nkeys:
 */
  __pyx_v_k = 0;
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_nkeys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_nkeys = __pyx_t_5;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":177
 *         cdef int k = 0, nkeys = self.Get_nkeys()
 *         cdef object key, val
 *         for k from 0 <= k < nkeys:             # <<<<<<<<<<<<<<
 *             key = self.Get_nthkey(k)
 *             val = self.Get(key)
 */
  __pyx_t_5 = __pyx_v_nkeys;
  for (__pyx_v_k = 0; __pyx_v_k < __pyx_t_5; __pyx_v_k++) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":178
 *         cdef object key, val
 *         for k from 0 <= k < nkeys:
 *             key = self.Get_nthkey(k)             # <<<<<<<<<<<<<<
 *             val = self.Get(key)
 *             values.append(val)
 */
    __pyx_t_4 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_nthkey); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_v_key);
    __pyx_v_key = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":179
 *         for k from 0 <= k < nkeys:
 *             key = self.Get_nthkey(k)
 *             val = self.Get(key)             # <<<<<<<<<<<<<<
 *             values.append(val)
 *         return values
 */
    __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __Pyx_INCREF(__pyx_v_key);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_key);
    __Pyx_GIVEREF(__pyx_v_key);
    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_v_val);
    __pyx_v_val = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":180
 *             key = self.Get_nthkey(k)
 *             val = self.Get(key)
 *             values.append(val)             # <<<<<<<<<<<<<<
 *         return values
 * 
 */
    if (unlikely(((PyObject *)__pyx_v_values) == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append"); {__pyx_filename = __pyx_f[22]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
    }
    __pyx_t_7 = PyList_Append(__pyx_v_values, __pyx_v_val); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":181
 *             val = self.Get(key)
 *             values.append(val)
 *         return values             # <<<<<<<<<<<<<<
 * 
 *     def items(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_values));
  __pyx_r = ((PyObject *)__pyx_v_values);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.Info.values", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_values);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_val);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":183
 *         return values
 * 
 *     def items(self):             # <<<<<<<<<<<<<<
 *         """info items"""
 *         if not self: return []
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_23items(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_23items[] = "Info.items(self)\ninfo items";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_23items(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_items = 0;
  int __pyx_v_k;
  int __pyx_v_nkeys;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("items");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("items", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "items", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":185
 *     def items(self):
 *         """info items"""
 *         if not self: return []             # <<<<<<<<<<<<<<
 *         cdef list items = []
 *         cdef int k = 0, nkeys = self.Get_nkeys()
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_r = ((PyObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":186
 *         """info items"""
 *         if not self: return []
 *         cdef list items = []             # <<<<<<<<<<<<<<
 *         cdef int k = 0, nkeys = self.Get_nkeys()
 *         cdef object key, value
 */
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  __pyx_v_items = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":187
 *         if not self: return []
 *         cdef list items = []
 *         cdef int k = 0, nkeys = self.Get_nkeys()             # <<<<<<<<<<<<<<
 *         cdef object key, value
 *         for k from 0 <= k < nkeys:
 */
  __pyx_v_k = 0;
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_nkeys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_nkeys = __pyx_t_5;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":189
 *         cdef int k = 0, nkeys = self.Get_nkeys()
 *         cdef object key, value
 *         for k from 0 <= k < nkeys:             # <<<<<<<<<<<<<<
 *             key = self.Get_nthkey(k)
 *             value = self.Get(key)
 */
  __pyx_t_5 = __pyx_v_nkeys;
  for (__pyx_v_k = 0; __pyx_v_k < __pyx_t_5; __pyx_v_k++) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":190
 *         cdef object key, value
 *         for k from 0 <= k < nkeys:
 *             key = self.Get_nthkey(k)             # <<<<<<<<<<<<<<
 *             value = self.Get(key)
 *             items.append((key, value))
 */
    __pyx_t_4 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_nthkey); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_v_key);
    __pyx_v_key = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":191
 *         for k from 0 <= k < nkeys:
 *             key = self.Get_nthkey(k)
 *             value = self.Get(key)             # <<<<<<<<<<<<<<
 *             items.append((key, value))
 *         return items
 */
    __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __Pyx_INCREF(__pyx_v_key);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_key);
    __Pyx_GIVEREF(__pyx_v_key);
    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_v_value);
    __pyx_v_value = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":192
 *             key = self.Get_nthkey(k)
 *             value = self.Get(key)
 *             items.append((key, value))             # <<<<<<<<<<<<<<
 *         return items
 * 
 */
    if (unlikely(((PyObject *)__pyx_v_items) == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append"); {__pyx_filename = __pyx_f[22]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
    }
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    __Pyx_INCREF(__pyx_v_key);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_key);
    __Pyx_GIVEREF(__pyx_v_key);
    __Pyx_INCREF(__pyx_v_value);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_value);
    __Pyx_GIVEREF(__pyx_v_value);
    __pyx_t_7 = PyList_Append(__pyx_v_items, ((PyObject *)__pyx_t_4)); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":193
 *             value = self.Get(key)
 *             items.append((key, value))
 *         return items             # <<<<<<<<<<<<<<
 * 
 *     def update(self, other=(), **kwds):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_items));
  __pyx_r = ((PyObject *)__pyx_v_items);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.Info.items", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_items);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":195
 *         return items
 * 
 *     def update(self, other=(), **kwds):             # <<<<<<<<<<<<<<
 *         """info update"""
 *         if not self: raise KeyError
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_24update(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_24update[] = "Info.update(self, other=(), **kwds)\ninfo update";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_24update(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_other = 0;
  PyObject *__pyx_v_kwds = 0;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  Py_ssize_t __pyx_t_5;
  PyObject *(*__pyx_t_6)(PyObject *);
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *(*__pyx_t_10)(PyObject *);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__other,0};
  __Pyx_RefNannySetupContext("update");
  __pyx_v_kwds = PyDict_New(); if (unlikely(!__pyx_v_kwds)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwds);
  {
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)__pyx_empty_tuple);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__other);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwds, values, PyTuple_GET_SIZE(__pyx_args), "update") < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_other = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("update", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[22]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_kwds); __pyx_v_kwds = 0;
  __Pyx_AddTraceback("mpi4py.MPI.Info.update", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":197
 *     def update(self, other=(), **kwds):
 *         """info update"""
 *         if not self: raise KeyError             # <<<<<<<<<<<<<<
 *         cdef object key, value
 *         if hasattr(other, 'keys'):
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_Raise(__pyx_builtin_KeyError, 0, 0, 0);
    {__pyx_filename = __pyx_f[22]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":199
 *         if not self: raise KeyError
 *         cdef object key, value
 *         if hasattr(other, 'keys'):             # <<<<<<<<<<<<<<
 *             for key in other.keys():
 *                 self.Set(key, other[key])
 */
  __pyx_t_3 = ((PyObject *)__pyx_n_s__keys);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_2 = PyObject_HasAttr(__pyx_v_other, __pyx_t_3); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":200
 *         cdef object key, value
 *         if hasattr(other, 'keys'):
 *             for key in other.keys():             # <<<<<<<<<<<<<<
 *                 self.Set(key, other[key])
 *         else:
 */
    __pyx_t_3 = PyObject_GetAttr(__pyx_v_other, __pyx_n_s__keys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) {
      __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0;
      __pyx_t_6 = NULL;
    } else {
      __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    for (;;) {
      if (PyList_CheckExact(__pyx_t_3)) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break;
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++;
      } else if (PyTuple_CheckExact(__pyx_t_3)) {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++;
      } else {
        __pyx_t_4 = __pyx_t_6(__pyx_t_3);
        if (unlikely(!__pyx_t_4)) {
          if (PyErr_Occurred()) {
            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[22]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_4);
      }
      __Pyx_XDECREF(__pyx_v_key);
      __pyx_v_key = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":201
 *         if hasattr(other, 'keys'):
 *             for key in other.keys():
 *                 self.Set(key, other[key])             # <<<<<<<<<<<<<<
 *         else:
 *             for key, value in other:
 */
      __pyx_t_4 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Set); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = PyObject_GetItem(__pyx_v_other, __pyx_v_key); if (!__pyx_t_7) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_8));
      __Pyx_INCREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_7 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L7;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":203
 *                 self.Set(key, other[key])
 *         else:
 *             for key, value in other:             # <<<<<<<<<<<<<<
 *                 self.Set(key, value)
 *         for key, value in kwds.items():
 */
    if (PyList_CheckExact(__pyx_v_other) || PyTuple_CheckExact(__pyx_v_other)) {
      __pyx_t_3 = __pyx_v_other; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0;
      __pyx_t_6 = NULL;
    } else {
      __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_other); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext;
    }
    for (;;) {
      if (PyList_CheckExact(__pyx_t_3)) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break;
        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++;
      } else if (PyTuple_CheckExact(__pyx_t_3)) {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++;
      } else {
        __pyx_t_7 = __pyx_t_6(__pyx_t_3);
        if (unlikely(!__pyx_t_7)) {
          if (PyErr_Occurred()) {
            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[22]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_7);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
        PyObject* sequence = __pyx_t_7;
        if (likely(PyTuple_CheckExact(sequence))) {
          if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
            if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
            else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
            {__pyx_filename = __pyx_f[22]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
            if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
            else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
            {__pyx_filename = __pyx_f[22]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_8 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_4 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_9 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext;
        index = 0; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L12_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_8);
        index = 1; __pyx_t_4 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_4)) goto __pyx_L12_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_4);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        goto __pyx_L13_unpacking_done;
        __pyx_L12_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
        if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[22]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_L13_unpacking_done:;
      }
      __Pyx_XDECREF(__pyx_v_key);
      __pyx_v_key = __pyx_t_8;
      __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_v_value);
      __pyx_v_value = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":204
 *         else:
 *             for key, value in other:
 *                 self.Set(key, value)             # <<<<<<<<<<<<<<
 *         for key, value in kwds.items():
 *             self.Set(key, value)
 */
      __pyx_t_7 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Set); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      __Pyx_INCREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      __Pyx_INCREF(__pyx_v_value);
      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_value);
      __Pyx_GIVEREF(__pyx_v_value);
      __pyx_t_8 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":205
 *             for key, value in other:
 *                 self.Set(key, value)
 *         for key, value in kwds.items():             # <<<<<<<<<<<<<<
 *             self.Set(key, value)
 * 
 */
  if (unlikely(((PyObject *)__pyx_v_kwds) == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "items"); {__pyx_filename = __pyx_f[22]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_3 = PyDict_Items(__pyx_v_kwds); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_8 = __pyx_t_3; __Pyx_INCREF(__pyx_t_8); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_6 = Py_TYPE(__pyx_t_8)->tp_iternext;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (PyList_CheckExact(__pyx_t_8)) {
      if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_8)) break;
      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++;
    } else if (PyTuple_CheckExact(__pyx_t_8)) {
      if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
      __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++;
    } else {
      __pyx_t_3 = __pyx_t_6(__pyx_t_8);
      if (unlikely(!__pyx_t_3)) {
        if (PyErr_Occurred()) {
          if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
          else {__pyx_filename = __pyx_f[22]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
      PyObject* sequence = __pyx_t_3;
      if (likely(PyTuple_CheckExact(sequence))) {
        if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
          if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
          else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
          {__pyx_filename = __pyx_f[22]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
          if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
          else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
          {__pyx_filename = __pyx_f[22]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_4)) goto __pyx_L16_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_7 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_7)) goto __pyx_L16_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_7);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      goto __pyx_L17_unpacking_done;
      __pyx_L16_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
      if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
      {__pyx_filename = __pyx_f[22]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_L17_unpacking_done:;
    }
    __Pyx_XDECREF(__pyx_v_key);
    __pyx_v_key = __pyx_t_4;
    __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_v_value);
    __pyx_v_value = __pyx_t_7;
    __pyx_t_7 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":206
 *                 self.Set(key, value)
 *         for key, value in kwds.items():
 *             self.Set(key, value)             # <<<<<<<<<<<<<<
 * 
 *     def clear(self):
 */
    __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Set); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_7));
    __Pyx_INCREF(__pyx_v_key);
    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_key);
    __Pyx_GIVEREF(__pyx_v_key);
    __Pyx_INCREF(__pyx_v_value);
    PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_value);
    __Pyx_GIVEREF(__pyx_v_value);
    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI.Info.update", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_kwds);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":208
 *             self.Set(key, value)
 * 
 *     def clear(self):             # <<<<<<<<<<<<<<
 *         """info clear"""
 *         if not self: return None
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_25clear(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_25clear[] = "Info.clear(self)\ninfo clear";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_25clear(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_k;
  int __pyx_v_nkeys;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clear");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("clear", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "clear", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":210
 *     def clear(self):
 *         """info clear"""
 *         if not self: return None             # <<<<<<<<<<<<<<
 *         cdef int k = 0, nkeys = self.Get_nkeys()
 *         cdef object key
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":211
 *         """info clear"""
 *         if not self: return None
 *         cdef int k = 0, nkeys = self.Get_nkeys()             # <<<<<<<<<<<<<<
 *         cdef object key
 *         for k from 0 <= k < nkeys:
 */
  __pyx_v_k = 0;
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_nkeys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_nkeys = __pyx_t_5;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":213
 *         cdef int k = 0, nkeys = self.Get_nkeys()
 *         cdef object key
 *         for k from 0 <= k < nkeys:             # <<<<<<<<<<<<<<
 *             key = self.Get_nthkey(0)
 *             self.Delete(key)
 */
  __pyx_t_5 = __pyx_v_nkeys;
  for (__pyx_v_k = 0; __pyx_v_k < __pyx_t_5; __pyx_v_k++) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":214
 *         cdef object key
 *         for k from 0 <= k < nkeys:
 *             key = self.Get_nthkey(0)             # <<<<<<<<<<<<<<
 *             self.Delete(key)
 * 
 */
    __pyx_t_4 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_nthkey); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_64), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_v_key);
    __pyx_v_key = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":215
 *         for k from 0 <= k < nkeys:
 *             key = self.Get_nthkey(0)
 *             self.Delete(key)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Delete); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    __Pyx_INCREF(__pyx_v_key);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_key);
    __Pyx_GIVEREF(__pyx_v_key);
    __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.Info.clear", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":7
 *     """
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ob_mpi = MPI_OP_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_2Op___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_2Op___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":8
 * 
 *     def __cinit__(self):
 *         self.ob_mpi = MPI_OP_NULL             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  ((struct PyMPIOpObject *)__pyx_v_self)->ob_mpi = MPI_OP_NULL;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":10
 *         self.ob_mpi = MPI_OP_NULL
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( del_Op(&self.ob_mpi) )
 */

static void __pyx_pf_6mpi4py_3MPI_2Op_1__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_6mpi4py_3MPI_2Op_1__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":11
 * 
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return             # <<<<<<<<<<<<<<
 *         CHKERR( del_Op(&self.ob_mpi) )
 *         op_user_del(&self.ob_usrid)
 */
  __pyx_t_1 = (!(((struct PyMPIOpObject *)__pyx_v_self)->flags & __pyx_e_6mpi4py_3MPI_PyMPI_OWNED));
  if (__pyx_t_1) {
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":12
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( del_Op(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         op_user_del(&self.ob_usrid)
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_f_6mpi4py_3MPI_del_Op((&((struct PyMPIOpObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":13
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( del_Op(&self.ob_mpi) )
 *         op_user_del(&self.ob_usrid)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_op_user_del((&((struct PyMPIOpObject *)__pyx_v_self)->ob_usrid)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Op.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":15
 *         op_user_del(&self.ob_usrid)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(self,  Op): return NotImplemented
 *         if not isinstance(other, Op): return NotImplemented
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  struct PyMPIOpObject *__pyx_v_s = 0;
  struct PyMPIOpObject *__pyx_v_o = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":16
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Op): return NotImplemented             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Op): return NotImplemented
 *         cdef Op s = <Op>self, o = <Op>other
 */
  __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Op));
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_self, __pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":17
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Op): return NotImplemented
 *         if not isinstance(other, Op): return NotImplemented             # <<<<<<<<<<<<<<
 *         cdef Op s = <Op>self, o = <Op>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 */
  __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Op));
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_other, __pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = (!__pyx_t_3);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":18
 *         if not isinstance(self,  Op): return NotImplemented
 *         if not isinstance(other, Op): return NotImplemented
 *         cdef Op s = <Op>self, o = <Op>other             # <<<<<<<<<<<<<<
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 */
  __Pyx_INCREF(((PyObject *)((struct PyMPIOpObject *)__pyx_v_self)));
  __pyx_v_s = ((struct PyMPIOpObject *)__pyx_v_self);
  __Pyx_INCREF(((PyObject *)((struct PyMPIOpObject *)__pyx_v_other)));
  __pyx_v_o = ((struct PyMPIOpObject *)__pyx_v_other);

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":20
 *         cdef Op s = <Op>self, o = <Op>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError("only '==' and '!='")
 * 
 */
  switch (__pyx_v_op) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":19
 *         if not isinstance(other, Op): return NotImplemented
 *         cdef Op s = <Op>self, o = <Op>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)             # <<<<<<<<<<<<<<
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")
 */
    case Py_EQ:
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi == __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":20
 *         cdef Op s = <Op>self, o = <Op>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError("only '==' and '!='")
 * 
 */
    case Py_NE:
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi != __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    break;
    default:

    /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":21
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
    __pyx_t_1 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_65), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[23]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    break;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Op.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_s);
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":23
 *         else: raise TypeError("only '==' and '!='")
 * 
 *     def __bool__(self):             # <<<<<<<<<<<<<<
 *         return self.ob_mpi != MPI_OP_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_2Op_3__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_2Op_3__bool__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":24
 * 
 *     def __bool__(self):
 *         return self.ob_mpi != MPI_OP_NULL             # <<<<<<<<<<<<<<
 * 
 *     def __call__(self, x, y):
 */
  __pyx_r = (((struct PyMPIOpObject *)__pyx_v_self)->ob_mpi != MPI_OP_NULL);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":26
 *         return self.ob_mpi != MPI_OP_NULL
 * 
 *     def __call__(self, x, y):             # <<<<<<<<<<<<<<
 *         if self.ob_func != NULL:
 *             return self.ob_func(x, y)
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_4__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_4__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_y = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__x,&__pyx_n_s__y,0};
  __Pyx_RefNannySetupContext("__call__");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__x);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__y);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__call__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[23]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__call__") < 0)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_x = values[0];
    __pyx_v_y = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__call__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[23]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Op.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":27
 * 
 *     def __call__(self, x, y):
 *         if self.ob_func != NULL:             # <<<<<<<<<<<<<<
 *             return self.ob_func(x, y)
 *         else:
 */
  __pyx_t_1 = (((struct PyMPIOpObject *)__pyx_v_self)->ob_func != NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":28
 *     def __call__(self, x, y):
 *         if self.ob_func != NULL:
 *             return self.ob_func(x, y)             # <<<<<<<<<<<<<<
 *         else:
 *             return op_user_py(self.ob_usrid, x, y, None)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((struct PyMPIOpObject *)__pyx_v_self)->ob_func(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":30
 *             return self.ob_func(x, y)
 *         else:
 *             return op_user_py(self.ob_usrid, x, y, None)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = Py_None;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_op_user_py(((struct PyMPIOpObject *)__pyx_v_self)->ob_usrid, __pyx_v_x, __pyx_v_y, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }
  __pyx_L6:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Op.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":33
 * 
 *     @classmethod
 *     def Create(cls, function, bint commute=False):             # <<<<<<<<<<<<<<
 *         """
 *         Create a user-defined operation
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_5Create(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_2Op_5Create[] = "Op.Create(type cls, function, int commute=False)\n\n        Create a user-defined operation\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_5Create(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_function = 0;
  int __pyx_v_commute;
  struct PyMPIOpObject *__pyx_v_op = 0;
  MPI_User_function *__pyx_v_cfunction;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__function,&__pyx_n_s__commute,0};
  __Pyx_RefNannySetupContext("Create");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__function);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__commute);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create") < 0)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_function = values[0];
    if (values[1]) {
      __pyx_v_commute = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_commute == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_commute = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[23]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Op.Create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":37
 *         Create a user-defined operation
 *         """
 *         cdef Op op = <Op>cls()             # <<<<<<<<<<<<<<
 *         cdef MPI_User_function *cfunction = NULL
 *         op.ob_usrid = op_user_new(function, &cfunction)
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIOpObject *)__pyx_t_1)));
  __pyx_v_op = ((struct PyMPIOpObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":38
 *         """
 *         cdef Op op = <Op>cls()
 *         cdef MPI_User_function *cfunction = NULL             # <<<<<<<<<<<<<<
 *         op.ob_usrid = op_user_new(function, &cfunction)
 *         CHKERR( MPI_Op_create(cfunction, commute, &op.ob_mpi) )
 */
  __pyx_v_cfunction = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":39
 *         cdef Op op = <Op>cls()
 *         cdef MPI_User_function *cfunction = NULL
 *         op.ob_usrid = op_user_new(function, &cfunction)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Op_create(cfunction, commute, &op.ob_mpi) )
 *         return op
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_op_user_new(__pyx_v_function, (&__pyx_v_cfunction)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_op->ob_usrid = __pyx_t_2;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":40
 *         cdef MPI_User_function *cfunction = NULL
 *         op.ob_usrid = op_user_new(function, &cfunction)
 *         CHKERR( MPI_Op_create(cfunction, commute, &op.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return op
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Op_create(__pyx_v_cfunction, __pyx_v_commute, (&__pyx_v_op->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":41
 *         op.ob_usrid = op_user_new(function, &cfunction)
 *         CHKERR( MPI_Op_create(cfunction, commute, &op.ob_mpi) )
 *         return op             # <<<<<<<<<<<<<<
 * 
 *     def Free(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_op));
  __pyx_r = ((PyObject *)__pyx_v_op);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Op.Create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_op);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":43
 *         return op
 * 
 *     def Free(self):             # <<<<<<<<<<<<<<
 *         """
 *         Free the operation
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_6Free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_2Op_6Free[] = "Op.Free(self)\n\n        Free the operation\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_6Free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Free");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Free", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Free", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":47
 *         Free the operation
 *         """
 *         CHKERR( MPI_Op_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         op_user_del(&self.ob_usrid)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Op_free((&((struct PyMPIOpObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":48
 *         """
 *         CHKERR( MPI_Op_free(&self.ob_mpi) )
 *         op_user_del(&self.ob_usrid)             # <<<<<<<<<<<<<<
 * 
 *     # Process-local reduction
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_op_user_del((&((struct PyMPIOpObject *)__pyx_v_self)->ob_usrid)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Op.Free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":53
 *     # -----------------------
 * 
 *     def Is_commutative(self):             # <<<<<<<<<<<<<<
 *         """
 *         Query reduction operations for their commutativity
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_7Is_commutative(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_2Op_7Is_commutative[] = "Op.Is_commutative(self)\n\n        Query reduction operations for their commutativity\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_7Is_commutative(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Is_commutative");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Is_commutative", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Is_commutative", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":57
 *         Query reduction operations for their commutativity
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Op_commutative(self.ob_mpi, &flag) )
 *         return <bint>flag
 */
  __pyx_v_flag = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":58
 *         """
 *         cdef int flag = 0
 *         CHKERR( MPI_Op_commutative(self.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Op_commutative(((struct PyMPIOpObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":59
 *         cdef int flag = 0
 *         CHKERR( MPI_Op_commutative(self.ob_mpi, &flag) )
 *         return <bint>flag             # <<<<<<<<<<<<<<
 * 
 *     property is_commutative:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_v_flag)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Op.Is_commutative", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":63
 *     property is_commutative:
 *         """is commutative"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Is_commutative()
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_14is_commutative___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_14is_commutative___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":64
 *         """is commutative"""
 *         def __get__(self):
 *             return self.Is_commutative()             # <<<<<<<<<<<<<<
 * 
 *     def Reduce_local(self, inbuf, inoutbuf):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Is_commutative); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Op.is_commutative.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":66
 *             return self.Is_commutative()
 * 
 *     def Reduce_local(self, inbuf, inoutbuf):             # <<<<<<<<<<<<<<
 *         """
 *         Apply a reduction operator to local data
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_8Reduce_local(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_2Op_8Reduce_local[] = "Op.Reduce_local(self, inbuf, inoutbuf)\n\n        Apply a reduction operator to local data\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_8Reduce_local(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_inbuf = 0;
  PyObject *__pyx_v_inoutbuf = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__inbuf,&__pyx_n_s__inoutbuf,0};
  __Pyx_RefNannySetupContext("Reduce_local");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__inbuf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__inoutbuf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Reduce_local", 1, 2, 2, 1); {__pyx_filename = __pyx_f[23]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Reduce_local") < 0)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_inbuf = values[0];
    __pyx_v_inoutbuf = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Reduce_local", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[23]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Op.Reduce_local", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":71
 *         """
 *         # get *in* and *inout* buffers
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_cro_send(inbuf, 0)
 *         m.for_cro_recv(inoutbuf, 0)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":72
 *         # get *in* and *inout* buffers
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_cro_send(inbuf, 0)             # <<<<<<<<<<<<<<
 *         m.for_cro_recv(inoutbuf, 0)
 *         # check counts and datatypes
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_m->__pyx_vtab)->for_cro_send(__pyx_v_m, __pyx_v_inbuf, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":73
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_cro_send(inbuf, 0)
 *         m.for_cro_recv(inoutbuf, 0)             # <<<<<<<<<<<<<<
 *         # check counts and datatypes
 *         if self.scount != self.rcount:
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_m->__pyx_vtab)->for_cro_recv(__pyx_v_m, __pyx_v_inoutbuf, 0); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":75
 *         m.for_cro_recv(inoutbuf, 0)
 *         # check counts and datatypes
 *         if self.scount != self.rcount:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 "mismatch in inbuf count %d and inoutbuf count %d" %
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__scount); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__rcount); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_NE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_5) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":78
 *             raise ValueError(
 *                 "mismatch in inbuf count %d and inoutbuf count %d" %
 *                 (self.scount, self.rcount))             # <<<<<<<<<<<<<<
 *         if (self.stype != self.rtype):
 *             raise ValueError(
 */
    __pyx_t_4 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__scount); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__rcount); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_1));
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_4 = 0;
    __pyx_t_3 = 0;
    __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_66), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_1));
    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_3));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
    __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[23]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":79
 *                 "mismatch in inbuf count %d and inoutbuf count %d" %
 *                 (self.scount, self.rcount))
 *         if (self.stype != self.rtype):             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 "mismatch in inbuf and inoutbuf MPI datatypes")
 */
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__stype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__rtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_t_1, Py_NE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_5) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":80
 *                 (self.scount, self.rcount))
 *         if (self.stype != self.rtype):
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 "mismatch in inbuf and inoutbuf MPI datatypes")
 *         # do local reduction
 */
    __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_68), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[23]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":83
 *                 "mismatch in inbuf and inoutbuf MPI datatypes")
 *         # do local reduction
 *         with nogil: CHKERR( MPI_Reduce_local(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype, self.ob_mpi) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":84
 *         # do local reduction
 *         with nogil: CHKERR( MPI_Reduce_local(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Reduce_local(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, ((struct PyMPIOpObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L9;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":83
 *                 "mismatch in inbuf and inoutbuf MPI datatypes")
 *         # do local reduction
 *         with nogil: CHKERR( MPI_Reduce_local(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype, self.ob_mpi) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L10;
        __pyx_L9: __pyx_why = 4; goto __pyx_L10;
        __pyx_L10:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Op.Reduce_local", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":89
 *     # --------------
 * 
 *     def py2f(self):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_9py2f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_2Op_9py2f[] = "Op.py2f(self)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_9py2f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("py2f");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("py2f", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "py2f", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":92
 *         """
 *         """
 *         return MPI_Op_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_to_py_MPI_Fint(MPI_Op_c2f(((struct PyMPIOpObject *)__pyx_v_self)->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Op.py2f", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":95
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_10f2py(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_2Op_10f2py[] = "Op.f2py(type cls, arg)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_10f2py(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_arg = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Fint __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__arg,0};
  __Pyx_RefNannySetupContext("f2py");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__arg);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "f2py") < 0)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[23]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Op.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":98
 *         """
 *         """
 *         cdef Op op = <Op>cls()             # <<<<<<<<<<<<<<
 *         op.ob_mpi = MPI_Op_f2c(arg)
 *         return op
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIOpObject *)__pyx_t_1)));
  __pyx_v_op = ((struct PyMPIOpObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":99
 *         """
 *         cdef Op op = <Op>cls()
 *         op.ob_mpi = MPI_Op_f2c(arg)             # <<<<<<<<<<<<<<
 *         return op
 * 
 */
  __pyx_t_2 = __Pyx_PyInt_from_py_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_2 == (MPI_Fint)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_op->ob_mpi = MPI_Op_f2c(__pyx_t_2);

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":100
 *         cdef Op op = <Op>cls()
 *         op.ob_mpi = MPI_Op_f2c(arg)
 *         return op             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_op));
  __pyx_r = ((PyObject *)__pyx_v_op);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Op.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_op);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":7
 *     """
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ob_mpi = MPI_GROUP_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_5Group___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_5Group___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":8
 * 
 *     def __cinit__(self):
 *         self.ob_mpi = MPI_GROUP_NULL             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  ((struct PyMPIGroupObject *)__pyx_v_self)->ob_mpi = MPI_GROUP_NULL;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":10
 *         self.ob_mpi = MPI_GROUP_NULL
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( del_Group(&self.ob_mpi) )
 */

static void __pyx_pf_6mpi4py_3MPI_5Group_1__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_6mpi4py_3MPI_5Group_1__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":11
 * 
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return             # <<<<<<<<<<<<<<
 *         CHKERR( del_Group(&self.ob_mpi) )
 * 
 */
  __pyx_t_1 = (!(((struct PyMPIGroupObject *)__pyx_v_self)->flags & __pyx_e_6mpi4py_3MPI_PyMPI_OWNED));
  if (__pyx_t_1) {
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":12
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( del_Group(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_f_6mpi4py_3MPI_del_Group((&((struct PyMPIGroupObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":14
 *         CHKERR( del_Group(&self.ob_mpi) )
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(self,  Group): return NotImplemented
 *         if not isinstance(other, Group): return NotImplemented
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  struct PyMPIGroupObject *__pyx_v_s = 0;
  struct PyMPIGroupObject *__pyx_v_o = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":15
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Group): return NotImplemented             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Group): return NotImplemented
 *         cdef Group s = <Group>self, o = <Group>other
 */
  __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Group));
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_self, __pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":16
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Group): return NotImplemented
 *         if not isinstance(other, Group): return NotImplemented             # <<<<<<<<<<<<<<
 *         cdef Group s = <Group>self, o = <Group>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 */
  __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Group));
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_other, __pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = (!__pyx_t_3);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":17
 *         if not isinstance(self,  Group): return NotImplemented
 *         if not isinstance(other, Group): return NotImplemented
 *         cdef Group s = <Group>self, o = <Group>other             # <<<<<<<<<<<<<<
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 */
  __Pyx_INCREF(((PyObject *)((struct PyMPIGroupObject *)__pyx_v_self)));
  __pyx_v_s = ((struct PyMPIGroupObject *)__pyx_v_self);
  __Pyx_INCREF(((PyObject *)((struct PyMPIGroupObject *)__pyx_v_other)));
  __pyx_v_o = ((struct PyMPIGroupObject *)__pyx_v_other);

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":19
 *         cdef Group s = <Group>self, o = <Group>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError("only '==' and '!='")
 * 
 */
  switch (__pyx_v_op) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":18
 *         if not isinstance(other, Group): return NotImplemented
 *         cdef Group s = <Group>self, o = <Group>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)             # <<<<<<<<<<<<<<
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")
 */
    case Py_EQ:
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi == __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":19
 *         cdef Group s = <Group>self, o = <Group>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError("only '==' and '!='")
 * 
 */
    case Py_NE:
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi != __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    break;
    default:

    /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":20
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
    __pyx_t_1 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_69), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[24]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    break;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Group.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_s);
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":22
 *         else: raise TypeError("only '==' and '!='")
 * 
 *     def __bool__(self):             # <<<<<<<<<<<<<<
 *         return self.ob_mpi != MPI_GROUP_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_5Group_3__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_5Group_3__bool__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":23
 * 
 *     def __bool__(self):
 *         return self.ob_mpi != MPI_GROUP_NULL             # <<<<<<<<<<<<<<
 * 
 *     # Group Accessors
 */
  __pyx_r = (((struct PyMPIGroupObject *)__pyx_v_self)->ob_mpi != MPI_GROUP_NULL);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":28
 *     # ---------------
 * 
 *     def Get_size(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the size of a group
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_4Get_size(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_4Get_size[] = "Group.Get_size(self)\n\n        Return the size of a group\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_4Get_size(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_size");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_size", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_size", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":32
 *         Return the size of a group
 *         """
 *         cdef int size = -1             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_size(self.ob_mpi, &size) )
 *         return size
 */
  __pyx_v_size = -1;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":33
 *         """
 *         cdef int size = -1
 *         CHKERR( MPI_Group_size(self.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *         return size
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_size(((struct PyMPIGroupObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":34
 *         cdef int size = -1
 *         CHKERR( MPI_Group_size(self.ob_mpi, &size) )
 *         return size             # <<<<<<<<<<<<<<
 * 
 *     property size:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Get_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":38
 *     property size:
 *         """number of processes in group"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_size()
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_4size___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_4size___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":39
 *         """number of processes in group"""
 *         def __get__(self):
 *             return self.Get_size()             # <<<<<<<<<<<<<<
 * 
 *     def Get_rank(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Group.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":41
 *             return self.Get_size()
 * 
 *     def Get_rank(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the rank of this process in a group
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_5Get_rank(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_5Get_rank[] = "Group.Get_rank(self)\n\n        Return the rank of this process in a group\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_5Get_rank(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_rank");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_rank", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_rank", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":45
 *         Return the rank of this process in a group
 *         """
 *         cdef int rank = -1             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_rank(self.ob_mpi, &rank) )
 *         return rank
 */
  __pyx_v_rank = -1;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":46
 *         """
 *         cdef int rank = -1
 *         CHKERR( MPI_Group_rank(self.ob_mpi, &rank) )             # <<<<<<<<<<<<<<
 *         return rank
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_rank(((struct PyMPIGroupObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":47
 *         cdef int rank = -1
 *         CHKERR( MPI_Group_rank(self.ob_mpi, &rank) )
 *         return rank             # <<<<<<<<<<<<<<
 * 
 *     property rank:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_rank); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Get_rank", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":51
 *     property rank:
 *         """rank of this process in group"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_rank()
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_4rank___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_4rank___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":52
 *         """rank of this process in group"""
 *         def __get__(self):
 *             return self.Get_rank()             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_rank); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Group.rank.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":55
 * 
 *     @classmethod
 *     def Translate_ranks(cls,             # <<<<<<<<<<<<<<
 *                         Group group1 not None, ranks1,
 *                         Group group2=None):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_6Translate_ranks(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_6Translate_ranks[] = "Group.Translate_ranks(type cls, Group group1, ranks1, Group group2=None)\n\n        Translate the ranks of processes in\n        one group to those in another group\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_6Translate_ranks(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIGroupObject *__pyx_v_group1 = 0;
  PyObject *__pyx_v_ranks1 = 0;
  struct PyMPIGroupObject *__pyx_v_group2 = 0;
  MPI_Group __pyx_v_grp1;
  MPI_Group __pyx_v_grp2;
  int __pyx_v_n;
  int *__pyx_v_iranks1;
  int *__pyx_v_iranks2;
  PyObject *__pyx_v_ranks_ = 0;
  PyObject *__pyx_v_ranks2 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__group1,&__pyx_n_s__ranks1,&__pyx_n_s__group2,0};
  __Pyx_RefNannySetupContext("Translate_ranks");
  {
    PyObject* values[3] = {0,0,0};

    /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":57
 *     def Translate_ranks(cls,
 *                         Group group1 not None, ranks1,
 *                         Group group2=None):             # <<<<<<<<<<<<<<
 *         """
 *         Translate the ranks of processes in
 */
    values[2] = (PyObject *)((struct PyMPIGroupObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__group1);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ranks1);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Translate_ranks", 0, 2, 3, 1); {__pyx_filename = __pyx_f[24]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__group2);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Translate_ranks") < 0)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_group1 = ((struct PyMPIGroupObject *)values[0]);
    __pyx_v_ranks1 = values[1];
    __pyx_v_group2 = ((struct PyMPIGroupObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Translate_ranks", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[24]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.Translate_ranks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group1), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group1", 0))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group2), __pyx_ptype_6mpi4py_3MPI_Group, 1, "group2", 0))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":62
 *         one group to those in another group
 *         """
 *         cdef MPI_Group grp1 = MPI_GROUP_NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Group grp2 = MPI_GROUP_NULL
 *         cdef int n = 0, *iranks1 = NULL, *iranks2 = NULL
 */
  __pyx_v_grp1 = MPI_GROUP_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":63
 *         """
 *         cdef MPI_Group grp1 = MPI_GROUP_NULL
 *         cdef MPI_Group grp2 = MPI_GROUP_NULL             # <<<<<<<<<<<<<<
 *         cdef int n = 0, *iranks1 = NULL, *iranks2 = NULL
 *         cdef object ranks_ = getarray_int(ranks1, &n, &iranks1)
 */
  __pyx_v_grp2 = MPI_GROUP_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":64
 *         cdef MPI_Group grp1 = MPI_GROUP_NULL
 *         cdef MPI_Group grp2 = MPI_GROUP_NULL
 *         cdef int n = 0, *iranks1 = NULL, *iranks2 = NULL             # <<<<<<<<<<<<<<
 *         cdef object ranks_ = getarray_int(ranks1, &n, &iranks1)
 *         cdef object ranks2 = newarray_int(n, &iranks2)
 */
  __pyx_v_n = 0;
  __pyx_v_iranks1 = NULL;
  __pyx_v_iranks2 = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":65
 *         cdef MPI_Group grp2 = MPI_GROUP_NULL
 *         cdef int n = 0, *iranks1 = NULL, *iranks2 = NULL
 *         cdef object ranks_ = getarray_int(ranks1, &n, &iranks1)             # <<<<<<<<<<<<<<
 *         cdef object ranks2 = newarray_int(n, &iranks2)
 *         #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_getarray_int(__pyx_v_ranks1, (&__pyx_v_n), (&__pyx_v_iranks1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_ranks_ = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":66
 *         cdef int n = 0, *iranks1 = NULL, *iranks2 = NULL
 *         cdef object ranks_ = getarray_int(ranks1, &n, &iranks1)
 *         cdef object ranks2 = newarray_int(n, &iranks2)             # <<<<<<<<<<<<<<
 *         #
 *         grp1 = group1.ob_mpi
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_n, (&__pyx_v_iranks2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_ranks2 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":68
 *         cdef object ranks2 = newarray_int(n, &iranks2)
 *         #
 *         grp1 = group1.ob_mpi             # <<<<<<<<<<<<<<
 *         if group2 is not None:
 *             grp2 = group2.ob_mpi
 */
  __pyx_v_grp1 = __pyx_v_group1->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":69
 *         #
 *         grp1 = group1.ob_mpi
 *         if group2 is not None:             # <<<<<<<<<<<<<<
 *             grp2 = group2.ob_mpi
 *         else:
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_group2) != Py_None);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":70
 *         grp1 = group1.ob_mpi
 *         if group2 is not None:
 *             grp2 = group2.ob_mpi             # <<<<<<<<<<<<<<
 *         else:
 *             CHKERR( MPI_Comm_group(MPI_COMM_WORLD, &grp2) )
 */
    __pyx_v_grp2 = __pyx_v_group2->ob_mpi;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":72
 *             grp2 = group2.ob_mpi
 *         else:
 *             CHKERR( MPI_Comm_group(MPI_COMM_WORLD, &grp2) )             # <<<<<<<<<<<<<<
 *         try:
 *             CHKERR( MPI_Group_translate_ranks(grp1, n, iranks1,
 */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_group(MPI_COMM_WORLD, (&__pyx_v_grp2))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":73
 *         else:
 *             CHKERR( MPI_Comm_group(MPI_COMM_WORLD, &grp2) )
 *         try:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Group_translate_ranks(grp1, n, iranks1,
 *                                               grp2, iranks2) )
 */
  /*try:*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":75
 *         try:
 *             CHKERR( MPI_Group_translate_ranks(grp1, n, iranks1,
 *                                               grp2, iranks2) )             # <<<<<<<<<<<<<<
 *         finally:
 *             if group2 is None:
 */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_translate_ranks(__pyx_v_grp1, __pyx_v_n, __pyx_v_iranks1, __pyx_v_grp2, __pyx_v_iranks2)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L8;}
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":77
 *                                               grp2, iranks2) )
 *         finally:
 *             if group2 is None:             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Group_free(&grp2) )
 *         #
 */
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L9;
    __pyx_L8: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L9;
    }
    __pyx_L9:;
    __pyx_t_2 = (((PyObject *)__pyx_v_group2) == Py_None);
    if (__pyx_t_2) {

      /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":78
 *         finally:
 *             if group2 is None:
 *                 CHKERR( MPI_Group_free(&grp2) )             # <<<<<<<<<<<<<<
 *         #
 *         return ranks2
 */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_free((&__pyx_v_grp2))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
      goto __pyx_L11;
    }
    __pyx_L11:;
    goto __pyx_L12;
    __pyx_L10_error:;
    if (__pyx_why == 4) {
      Py_XDECREF(__pyx_exc_type);
      Py_XDECREF(__pyx_exc_value);
      Py_XDECREF(__pyx_exc_tb);
    }
    goto __pyx_L1_error;
    __pyx_L12:;
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":80
 *                 CHKERR( MPI_Group_free(&grp2) )
 *         #
 *         return ranks2             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ranks2);
  __pyx_r = __pyx_v_ranks2;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Translate_ranks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ranks_);
  __Pyx_XDECREF(__pyx_v_ranks2);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":83
 * 
 *     @classmethod
 *     def Compare(cls,             # <<<<<<<<<<<<<<
 *                 Group group1 not None,
 *                 Group group2 not None):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_7Compare(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_7Compare[] = "Group.Compare(type cls, Group group1, Group group2)\n\n        Compare two groups\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_7Compare(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIGroupObject *__pyx_v_group1 = 0;
  struct PyMPIGroupObject *__pyx_v_group2 = 0;
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__group1,&__pyx_n_s__group2,0};
  __Pyx_RefNannySetupContext("Compare");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__group1);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__group2);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Compare", 1, 2, 2, 1); {__pyx_filename = __pyx_f[24]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Compare") < 0)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_group1 = ((struct PyMPIGroupObject *)values[0]);
    __pyx_v_group2 = ((struct PyMPIGroupObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Compare", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[24]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.Compare", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group1), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group1", 0))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group2), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group2", 0))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":89
 *         Compare two groups
 *         """
 *         cdef int flag = MPI_UNEQUAL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_compare(group1.ob_mpi, group2.ob_mpi, &flag) )
 *         return flag
 */
  __pyx_v_flag = MPI_UNEQUAL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":90
 *         """
 *         cdef int flag = MPI_UNEQUAL
 *         CHKERR( MPI_Group_compare(group1.ob_mpi, group2.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return flag
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_compare(__pyx_v_group1->ob_mpi, __pyx_v_group2->ob_mpi, (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":91
 *         cdef int flag = MPI_UNEQUAL
 *         CHKERR( MPI_Group_compare(group1.ob_mpi, group2.ob_mpi, &flag) )
 *         return flag             # <<<<<<<<<<<<<<
 * 
 *     # Group Constructors
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_flag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Compare", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":96
 *     # ------------------
 * 
 *     def Dup(self):             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a group
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_8Dup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_8Dup[] = "Group.Dup(self)\n\n        Duplicate a group\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_8Dup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Dup");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Dup", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Dup", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":100
 *         Duplicate a group
 *         """
 *         cdef Group group = <Group>type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_union(self.ob_mpi, MPI_GROUP_EMPTY, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIGroupObject *)__pyx_t_1)));
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":101
 *         """
 *         cdef Group group = <Group>type(self)()
 *         CHKERR( MPI_Group_union(self.ob_mpi, MPI_GROUP_EMPTY, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_union(((struct PyMPIGroupObject *)__pyx_v_self)->ob_mpi, MPI_GROUP_EMPTY, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":102
 *         cdef Group group = <Group>type(self)()
 *         CHKERR( MPI_Group_union(self.ob_mpi, MPI_GROUP_EMPTY, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_group));
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Dup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":105
 * 
 *     @classmethod
 *     def Union(cls,             # <<<<<<<<<<<<<<
 *               Group group1 not None,
 *               Group group2 not None):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_9Union(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_9Union[] = "Group.Union(type cls, Group group1, Group group2)\n\n        Produce a group by combining\n        two existing groups\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_9Union(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIGroupObject *__pyx_v_group1 = 0;
  struct PyMPIGroupObject *__pyx_v_group2 = 0;
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__group1,&__pyx_n_s__group2,0};
  __Pyx_RefNannySetupContext("Union");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__group1);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__group2);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Union", 1, 2, 2, 1); {__pyx_filename = __pyx_f[24]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Union") < 0)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_group1 = ((struct PyMPIGroupObject *)values[0]);
    __pyx_v_group2 = ((struct PyMPIGroupObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Union", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[24]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.Union", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group1), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group1", 0))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group2), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group2", 0))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":112
 *         two existing groups
 *         """
 *         cdef Group group = <Group>cls()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_union(
 *                 group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIGroupObject *)__pyx_t_1)));
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":114
 *         cdef Group group = <Group>cls()
 *         CHKERR( MPI_Group_union(
 *                 group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_union(__pyx_v_group1->ob_mpi, __pyx_v_group2->ob_mpi, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":115
 *         CHKERR( MPI_Group_union(
 *                 group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_group));
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Union", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":118
 * 
 *     @classmethod
 *     def Intersect(cls,             # <<<<<<<<<<<<<<
 *                   Group group1 not None,
 *                   Group group2 not None):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_10Intersect(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_10Intersect[] = "Group.Intersect(type cls, Group group1, Group group2)\n\n        Produce a group as the intersection\n        of two existing groups\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_10Intersect(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIGroupObject *__pyx_v_group1 = 0;
  struct PyMPIGroupObject *__pyx_v_group2 = 0;
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__group1,&__pyx_n_s__group2,0};
  __Pyx_RefNannySetupContext("Intersect");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__group1);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__group2);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Intersect", 1, 2, 2, 1); {__pyx_filename = __pyx_f[24]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Intersect") < 0)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_group1 = ((struct PyMPIGroupObject *)values[0]);
    __pyx_v_group2 = ((struct PyMPIGroupObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Intersect", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[24]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.Intersect", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group1), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group1", 0))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group2), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group2", 0))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":125
 *         of two existing groups
 *         """
 *         cdef Group group = <Group>cls()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_intersection(
 *                 group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIGroupObject *)__pyx_t_1)));
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":127
 *         cdef Group group = <Group>cls()
 *         CHKERR( MPI_Group_intersection(
 *                 group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_intersection(__pyx_v_group1->ob_mpi, __pyx_v_group2->ob_mpi, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":128
 *         CHKERR( MPI_Group_intersection(
 *                 group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_group));
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Intersect", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":131
 * 
 *     @classmethod
 *     def Difference(cls,             # <<<<<<<<<<<<<<
 *                    Group group1 not None,
 *                    Group group2 not None):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_11Difference(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_11Difference[] = "Group.Difference(type cls, Group group1, Group group2)\n\n        Produce a group from the difference\n        of two existing groups\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_11Difference(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIGroupObject *__pyx_v_group1 = 0;
  struct PyMPIGroupObject *__pyx_v_group2 = 0;
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__group1,&__pyx_n_s__group2,0};
  __Pyx_RefNannySetupContext("Difference");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__group1);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__group2);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Difference", 1, 2, 2, 1); {__pyx_filename = __pyx_f[24]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Difference") < 0)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_group1 = ((struct PyMPIGroupObject *)values[0]);
    __pyx_v_group2 = ((struct PyMPIGroupObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Difference", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[24]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.Difference", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group1), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group1", 0))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group2), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group2", 0))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":138
 *         of two existing groups
 *         """
 *         cdef Group group = <Group>cls()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_difference(
 *                 group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIGroupObject *)__pyx_t_1)));
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":140
 *         cdef Group group = <Group>cls()
 *         CHKERR( MPI_Group_difference(
 *                 group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_difference(__pyx_v_group1->ob_mpi, __pyx_v_group2->ob_mpi, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":141
 *         CHKERR( MPI_Group_difference(
 *                 group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     def Incl(self, ranks):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_group));
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Difference", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":143
 *         return group
 * 
 *     def Incl(self, ranks):             # <<<<<<<<<<<<<<
 *         """
 *         Produce a group by reordering an existing
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_12Incl(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_12Incl[] = "Group.Incl(self, ranks)\n\n        Produce a group by reordering an existing\n        group and taking only listed members\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_12Incl(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_ranks = 0;
  int __pyx_v_n;
  int *__pyx_v_iranks;
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__ranks,0};
  __Pyx_RefNannySetupContext("Incl");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ranks);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Incl") < 0)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_ranks = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Incl", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[24]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.Incl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_ranks);

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":148
 *         group and taking only listed members
 *         """
 *         cdef int n = 0, *iranks = NULL             # <<<<<<<<<<<<<<
 *         ranks = getarray_int(ranks, &n, &iranks)
 *         cdef Group group = <Group>type(self)()
 */
  __pyx_v_n = 0;
  __pyx_v_iranks = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":149
 *         """
 *         cdef int n = 0, *iranks = NULL
 *         ranks = getarray_int(ranks, &n, &iranks)             # <<<<<<<<<<<<<<
 *         cdef Group group = <Group>type(self)()
 *         CHKERR( MPI_Group_incl(self.ob_mpi, n, iranks, &group.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_getarray_int(__pyx_v_ranks, (&__pyx_v_n), (&__pyx_v_iranks)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_ranks);
  __pyx_v_ranks = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":150
 *         cdef int n = 0, *iranks = NULL
 *         ranks = getarray_int(ranks, &n, &iranks)
 *         cdef Group group = <Group>type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_incl(self.ob_mpi, n, iranks, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIGroupObject *)__pyx_t_1)));
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":151
 *         ranks = getarray_int(ranks, &n, &iranks)
 *         cdef Group group = <Group>type(self)()
 *         CHKERR( MPI_Group_incl(self.ob_mpi, n, iranks, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_incl(((struct PyMPIGroupObject *)__pyx_v_self)->ob_mpi, __pyx_v_n, __pyx_v_iranks, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":152
 *         cdef Group group = <Group>type(self)()
 *         CHKERR( MPI_Group_incl(self.ob_mpi, n, iranks, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     def Excl(self, ranks):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_group));
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Incl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XDECREF(__pyx_v_ranks);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":154
 *         return group
 * 
 *     def Excl(self, ranks):             # <<<<<<<<<<<<<<
 *         """
 *         Produce a group by reordering an existing
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_13Excl(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_13Excl[] = "Group.Excl(self, ranks)\n\n        Produce a group by reordering an existing\n        group and taking only unlisted members\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_13Excl(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_ranks = 0;
  int __pyx_v_n;
  int *__pyx_v_iranks;
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__ranks,0};
  __Pyx_RefNannySetupContext("Excl");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ranks);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Excl") < 0)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_ranks = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Excl", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[24]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.Excl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_ranks);

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":159
 *         group and taking only unlisted members
 *         """
 *         cdef int n = 0, *iranks = NULL             # <<<<<<<<<<<<<<
 *         ranks = getarray_int(ranks, &n, &iranks)
 *         cdef Group group = <Group>type(self)()
 */
  __pyx_v_n = 0;
  __pyx_v_iranks = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":160
 *         """
 *         cdef int n = 0, *iranks = NULL
 *         ranks = getarray_int(ranks, &n, &iranks)             # <<<<<<<<<<<<<<
 *         cdef Group group = <Group>type(self)()
 *         CHKERR( MPI_Group_excl(self.ob_mpi, n, iranks, &group.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_getarray_int(__pyx_v_ranks, (&__pyx_v_n), (&__pyx_v_iranks)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_ranks);
  __pyx_v_ranks = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":161
 *         cdef int n = 0, *iranks = NULL
 *         ranks = getarray_int(ranks, &n, &iranks)
 *         cdef Group group = <Group>type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_excl(self.ob_mpi, n, iranks, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIGroupObject *)__pyx_t_1)));
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":162
 *         ranks = getarray_int(ranks, &n, &iranks)
 *         cdef Group group = <Group>type(self)()
 *         CHKERR( MPI_Group_excl(self.ob_mpi, n, iranks, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_excl(((struct PyMPIGroupObject *)__pyx_v_self)->ob_mpi, __pyx_v_n, __pyx_v_iranks, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":163
 *         cdef Group group = <Group>type(self)()
 *         CHKERR( MPI_Group_excl(self.ob_mpi, n, iranks, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     def Range_incl(self, ranks):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_group));
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Excl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XDECREF(__pyx_v_ranks);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":165
 *         return group
 * 
 *     def Range_incl(self, ranks):             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group from ranges of
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_14Range_incl(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_14Range_incl[] = "Group.Range_incl(self, ranks)\n\n        Create a new group from ranges of\n        of ranks in an existing group\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_14Range_incl(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_ranks = 0;
  int *__pyx_v_p;
  int (*__pyx_v_ranges)[3];
  int __pyx_v_i;
  int __pyx_v_n;
  PyObject *__pyx_v_tmp1 = 0;
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *(*__pyx_t_8)(PyObject *);
  int __pyx_t_9;
  int __pyx_t_10;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__ranks,0};
  __Pyx_RefNannySetupContext("Range_incl");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ranks);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Range_incl") < 0)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_ranks = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Range_incl", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[24]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.Range_incl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":170
 *         of ranks in an existing group
 *         """
 *         cdef int *p = NULL, (*ranges)[3]# = NULL ## XXX cython fails             # <<<<<<<<<<<<<<
 *         ranges = NULL
 *         cdef int i = 0, n = <int>len(ranks)
 */
  __pyx_v_p = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":171
 *         """
 *         cdef int *p = NULL, (*ranges)[3]# = NULL ## XXX cython fails
 *         ranges = NULL             # <<<<<<<<<<<<<<
 *         cdef int i = 0, n = <int>len(ranks)
 *         cdef tmp1 = allocate(n, sizeof(int[3]), <void**>&ranges)
 */
  __pyx_v_ranges = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":172
 *         cdef int *p = NULL, (*ranges)[3]# = NULL ## XXX cython fails
 *         ranges = NULL
 *         cdef int i = 0, n = <int>len(ranks)             # <<<<<<<<<<<<<<
 *         cdef tmp1 = allocate(n, sizeof(int[3]), <void**>&ranges)
 *         for i from 0 <= i < n:
 */
  __pyx_v_i = 0;
  __pyx_t_1 = PyObject_Length(__pyx_v_ranks); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = ((int)__pyx_t_1);

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":173
 *         ranges = NULL
 *         cdef int i = 0, n = <int>len(ranks)
 *         cdef tmp1 = allocate(n, sizeof(int[3]), <void**>&ranges)             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < n:
 *             p = <int*> ranges[i]
 */
  __pyx_t_2 = PyMPI_Allocate(__pyx_v_n, (sizeof(int [3])), ((void **)(&__pyx_v_ranges))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":174
 *         cdef int i = 0, n = <int>len(ranks)
 *         cdef tmp1 = allocate(n, sizeof(int[3]), <void**>&ranges)
 *         for i from 0 <= i < n:             # <<<<<<<<<<<<<<
 *             p = <int*> ranges[i]
 *             p[0], p[1], p[2] = ranks[i]
 */
  __pyx_t_3 = __pyx_v_n;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":175
 *         cdef tmp1 = allocate(n, sizeof(int[3]), <void**>&ranges)
 *         for i from 0 <= i < n:
 *             p = <int*> ranges[i]             # <<<<<<<<<<<<<<
 *             p[0], p[1], p[2] = ranks[i]
 *         cdef Group group = <Group>type(self)()
 */
    __pyx_v_p = ((int *)(__pyx_v_ranges[__pyx_v_i]));

    /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":176
 *         for i from 0 <= i < n:
 *             p = <int*> ranges[i]
 *             p[0], p[1], p[2] = ranks[i]             # <<<<<<<<<<<<<<
 *         cdef Group group = <Group>type(self)()
 *         CHKERR( MPI_Group_range_incl(self.ob_mpi, n, ranges, &group.ob_mpi) )
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_ranks, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
      PyObject* sequence = __pyx_t_2;
      if (likely(PyTuple_CheckExact(sequence))) {
        if (unlikely(PyTuple_GET_SIZE(sequence) != 3)) {
          if (PyTuple_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3);
          else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
          {__pyx_filename = __pyx_f[24]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2); 
      } else {
        if (unlikely(PyList_GET_SIZE(sequence) != 3)) {
          if (PyList_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3);
          else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
          {__pyx_filename = __pyx_f[24]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
        __pyx_t_6 = PyList_GET_ITEM(sequence, 2); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_7 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_4)) goto __pyx_L8_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L8_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      index = 2; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L8_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 3) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L9_unpacking_done;
      __pyx_L8_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
      if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
      {__pyx_filename = __pyx_f[24]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_L9_unpacking_done:;
    }
    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_t_4); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_10 = __Pyx_PyInt_AsInt(__pyx_t_5); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_11 = __Pyx_PyInt_AsInt(__pyx_t_6); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    (__pyx_v_p[0]) = __pyx_t_9;
    (__pyx_v_p[1]) = __pyx_t_10;
    (__pyx_v_p[2]) = __pyx_t_11;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":177
 *             p = <int*> ranges[i]
 *             p[0], p[1], p[2] = ranks[i]
 *         cdef Group group = <Group>type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_range_incl(self.ob_mpi, n, ranges, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_2 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)((struct PyMPIGroupObject *)__pyx_t_2)));
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":178
 *             p[0], p[1], p[2] = ranks[i]
 *         cdef Group group = <Group>type(self)()
 *         CHKERR( MPI_Group_range_incl(self.ob_mpi, n, ranges, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_range_incl(((struct PyMPIGroupObject *)__pyx_v_self)->ob_mpi, __pyx_v_n, __pyx_v_ranges, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":179
 *         cdef Group group = <Group>type(self)()
 *         CHKERR( MPI_Group_range_incl(self.ob_mpi, n, ranges, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     def Range_excl(self, ranks):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_group));
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Range_incl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":181
 *         return group
 * 
 *     def Range_excl(self, ranks):             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group by excluding ranges
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_15Range_excl(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_15Range_excl[] = "Group.Range_excl(self, ranks)\n\n        Create a new group by excluding ranges\n        of processes from an existing group\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_15Range_excl(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_ranks = 0;
  int *__pyx_v_p;
  int (*__pyx_v_ranges)[3];
  int __pyx_v_i;
  int __pyx_v_n;
  PyObject *__pyx_v_tmp1 = 0;
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *(*__pyx_t_8)(PyObject *);
  int __pyx_t_9;
  int __pyx_t_10;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__ranks,0};
  __Pyx_RefNannySetupContext("Range_excl");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ranks);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Range_excl") < 0)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_ranks = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Range_excl", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[24]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.Range_excl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":186
 *         of processes from an existing group
 *         """
 *         cdef int *p = NULL, (*ranges)[3]# = NULL ## XXX cython fails             # <<<<<<<<<<<<<<
 *         ranges = NULL
 *         cdef int i = 0, n = <int>len(ranks)
 */
  __pyx_v_p = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":187
 *         """
 *         cdef int *p = NULL, (*ranges)[3]# = NULL ## XXX cython fails
 *         ranges = NULL             # <<<<<<<<<<<<<<
 *         cdef int i = 0, n = <int>len(ranks)
 *         cdef tmp1 = allocate(n, sizeof(int[3]), <void**>&ranges)
 */
  __pyx_v_ranges = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":188
 *         cdef int *p = NULL, (*ranges)[3]# = NULL ## XXX cython fails
 *         ranges = NULL
 *         cdef int i = 0, n = <int>len(ranks)             # <<<<<<<<<<<<<<
 *         cdef tmp1 = allocate(n, sizeof(int[3]), <void**>&ranges)
 *         for i from 0 <= i < n:
 */
  __pyx_v_i = 0;
  __pyx_t_1 = PyObject_Length(__pyx_v_ranks); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = ((int)__pyx_t_1);

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":189
 *         ranges = NULL
 *         cdef int i = 0, n = <int>len(ranks)
 *         cdef tmp1 = allocate(n, sizeof(int[3]), <void**>&ranges)             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < n:
 *             p = <int*> ranges[i]
 */
  __pyx_t_2 = PyMPI_Allocate(__pyx_v_n, (sizeof(int [3])), ((void **)(&__pyx_v_ranges))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":190
 *         cdef int i = 0, n = <int>len(ranks)
 *         cdef tmp1 = allocate(n, sizeof(int[3]), <void**>&ranges)
 *         for i from 0 <= i < n:             # <<<<<<<<<<<<<<
 *             p = <int*> ranges[i]
 *             p[0], p[1], p[2] = ranks[i]
 */
  __pyx_t_3 = __pyx_v_n;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":191
 *         cdef tmp1 = allocate(n, sizeof(int[3]), <void**>&ranges)
 *         for i from 0 <= i < n:
 *             p = <int*> ranges[i]             # <<<<<<<<<<<<<<
 *             p[0], p[1], p[2] = ranks[i]
 *         cdef Group group = <Group>type(self)()
 */
    __pyx_v_p = ((int *)(__pyx_v_ranges[__pyx_v_i]));

    /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":192
 *         for i from 0 <= i < n:
 *             p = <int*> ranges[i]
 *             p[0], p[1], p[2] = ranks[i]             # <<<<<<<<<<<<<<
 *         cdef Group group = <Group>type(self)()
 *         CHKERR( MPI_Group_range_excl(self.ob_mpi, n, ranges, &group.ob_mpi) )
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_ranks, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
      PyObject* sequence = __pyx_t_2;
      if (likely(PyTuple_CheckExact(sequence))) {
        if (unlikely(PyTuple_GET_SIZE(sequence) != 3)) {
          if (PyTuple_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3);
          else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
          {__pyx_filename = __pyx_f[24]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2); 
      } else {
        if (unlikely(PyList_GET_SIZE(sequence) != 3)) {
          if (PyList_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3);
          else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
          {__pyx_filename = __pyx_f[24]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
        __pyx_t_6 = PyList_GET_ITEM(sequence, 2); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_7 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_4)) goto __pyx_L8_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L8_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      index = 2; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L8_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 3) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L9_unpacking_done;
      __pyx_L8_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
      if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
      {__pyx_filename = __pyx_f[24]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_L9_unpacking_done:;
    }
    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_t_4); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_10 = __Pyx_PyInt_AsInt(__pyx_t_5); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_11 = __Pyx_PyInt_AsInt(__pyx_t_6); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    (__pyx_v_p[0]) = __pyx_t_9;
    (__pyx_v_p[1]) = __pyx_t_10;
    (__pyx_v_p[2]) = __pyx_t_11;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":193
 *             p = <int*> ranges[i]
 *             p[0], p[1], p[2] = ranks[i]
 *         cdef Group group = <Group>type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_range_excl(self.ob_mpi, n, ranges, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_2 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)((struct PyMPIGroupObject *)__pyx_t_2)));
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":194
 *             p[0], p[1], p[2] = ranks[i]
 *         cdef Group group = <Group>type(self)()
 *         CHKERR( MPI_Group_range_excl(self.ob_mpi, n, ranges, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_range_excl(((struct PyMPIGroupObject *)__pyx_v_self)->ob_mpi, __pyx_v_n, __pyx_v_ranges, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":195
 *         cdef Group group = <Group>type(self)()
 *         CHKERR( MPI_Group_range_excl(self.ob_mpi, n, ranges, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     # Group Destructor
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_group));
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Range_excl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":200
 *     # ----------------
 * 
 *     def Free(self):             # <<<<<<<<<<<<<<
 *         """
 *         Free a group
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_16Free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_16Free[] = "Group.Free(self)\n\n        Free a group\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_16Free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Free");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Free", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Free", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":204
 *         Free a group
 *         """
 *         if self.ob_mpi != MPI_GROUP_EMPTY:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Group_free(&self.ob_mpi) )
 *         elif self is not __GROUP_EMPTY__:
 */
  __pyx_t_1 = (((struct PyMPIGroupObject *)__pyx_v_self)->ob_mpi != MPI_GROUP_EMPTY);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":205
 *         """
 *         if self.ob_mpi != MPI_GROUP_EMPTY:
 *             CHKERR( MPI_Group_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         elif self is not __GROUP_EMPTY__:
 *             self.ob_mpi = MPI_GROUP_NULL
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_free((&((struct PyMPIGroupObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":206
 *         if self.ob_mpi != MPI_GROUP_EMPTY:
 *             CHKERR( MPI_Group_free(&self.ob_mpi) )
 *         elif self is not __GROUP_EMPTY__:             # <<<<<<<<<<<<<<
 *             self.ob_mpi = MPI_GROUP_NULL
 *         else: CHKERR( MPI_ERR_GROUP )
 */
  __pyx_t_1 = (((struct PyMPIGroupObject *)__pyx_v_self) != __pyx_v_6mpi4py_3MPI___GROUP_EMPTY__);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":207
 *             CHKERR( MPI_Group_free(&self.ob_mpi) )
 *         elif self is not __GROUP_EMPTY__:
 *             self.ob_mpi = MPI_GROUP_NULL             # <<<<<<<<<<<<<<
 *         else: CHKERR( MPI_ERR_GROUP )
 * 
 */
    ((struct PyMPIGroupObject *)__pyx_v_self)->ob_mpi = MPI_GROUP_NULL;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":208
 *         elif self is not __GROUP_EMPTY__:
 *             self.ob_mpi = MPI_GROUP_NULL
 *         else: CHKERR( MPI_ERR_GROUP )             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_ERR_GROUP); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.Free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":213
 *     # --------------
 * 
 *     def py2f(self):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_17py2f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_17py2f[] = "Group.py2f(self)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_17py2f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("py2f");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("py2f", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "py2f", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":216
 *         """
 *         """
 *         return MPI_Group_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_to_py_MPI_Fint(MPI_Group_c2f(((struct PyMPIGroupObject *)__pyx_v_self)->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Group.py2f", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":219
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_18f2py(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_18f2py[] = "Group.f2py(type cls, arg)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_18f2py(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_arg = 0;
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Fint __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__arg,0};
  __Pyx_RefNannySetupContext("f2py");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__arg);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "f2py") < 0)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[24]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":222
 *         """
 *         """
 *         cdef Group group = <Group>cls()             # <<<<<<<<<<<<<<
 *         group.ob_mpi = MPI_Group_f2c(arg)
 *         return group
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIGroupObject *)__pyx_t_1)));
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":223
 *         """
 *         cdef Group group = <Group>cls()
 *         group.ob_mpi = MPI_Group_f2c(arg)             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  __pyx_t_2 = __Pyx_PyInt_from_py_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_2 == (MPI_Fint)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_group->ob_mpi = MPI_Group_f2c(__pyx_t_2);

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":224
 *         cdef Group group = <Group>cls()
 *         group.ob_mpi = MPI_Group_f2c(arg)
 *         return group             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_group));
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Group.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":24
 *     """
 * 
 *     def __cinit__(self, Comm comm=None):             # <<<<<<<<<<<<<<
 *         self.ob_mpi = MPI_COMM_NULL
 *         if comm is not None:
 */

static int __pyx_pf_6mpi4py_3MPI_4Comm___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_4Comm___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__comm,0};
  __Pyx_RefNannySetupContext("__cinit__");
  {
    PyObject* values[1] = {0};
    values[0] = (PyObject *)((struct PyMPICommObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__comm);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":25
 * 
 *     def __cinit__(self, Comm comm=None):
 *         self.ob_mpi = MPI_COMM_NULL             # <<<<<<<<<<<<<<
 *         if comm is not None:
 *             self.ob_mpi = comm.ob_mpi
 */
  ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi = MPI_COMM_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":26
 *     def __cinit__(self, Comm comm=None):
 *         self.ob_mpi = MPI_COMM_NULL
 *         if comm is not None:             # <<<<<<<<<<<<<<
 *             self.ob_mpi = comm.ob_mpi
 * 
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_comm) != Py_None);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":27
 *         self.ob_mpi = MPI_COMM_NULL
 *         if comm is not None:
 *             self.ob_mpi = comm.ob_mpi             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
    ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi = __pyx_v_comm->ob_mpi;
    goto __pyx_L6;
  }
  __pyx_L6:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":29
 *             self.ob_mpi = comm.ob_mpi
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( del_Comm(&self.ob_mpi) )
 */

static void __pyx_pf_6mpi4py_3MPI_4Comm_1__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_6mpi4py_3MPI_4Comm_1__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":30
 * 
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return             # <<<<<<<<<<<<<<
 *         CHKERR( del_Comm(&self.ob_mpi) )
 * 
 */
  __pyx_t_1 = (!(((struct PyMPICommObject *)__pyx_v_self)->flags & __pyx_e_6mpi4py_3MPI_PyMPI_OWNED));
  if (__pyx_t_1) {
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":31
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( del_Comm(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_f_6mpi4py_3MPI_del_Comm((&((struct PyMPICommObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":33
 *         CHKERR( del_Comm(&self.ob_mpi) )
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(self,  Comm): return NotImplemented
 *         if not isinstance(other, Comm): return NotImplemented
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  struct PyMPICommObject *__pyx_v_s = 0;
  struct PyMPICommObject *__pyx_v_o = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":34
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Comm): return NotImplemented             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Comm): return NotImplemented
 *         cdef Comm s = <Comm>self, o = <Comm>other
 */
  __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Comm));
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_self, __pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":35
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Comm): return NotImplemented
 *         if not isinstance(other, Comm): return NotImplemented             # <<<<<<<<<<<<<<
 *         cdef Comm s = <Comm>self, o = <Comm>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 */
  __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Comm));
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_other, __pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = (!__pyx_t_3);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":36
 *         if not isinstance(self,  Comm): return NotImplemented
 *         if not isinstance(other, Comm): return NotImplemented
 *         cdef Comm s = <Comm>self, o = <Comm>other             # <<<<<<<<<<<<<<
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 */
  __Pyx_INCREF(((PyObject *)((struct PyMPICommObject *)__pyx_v_self)));
  __pyx_v_s = ((struct PyMPICommObject *)__pyx_v_self);
  __Pyx_INCREF(((PyObject *)((struct PyMPICommObject *)__pyx_v_other)));
  __pyx_v_o = ((struct PyMPICommObject *)__pyx_v_other);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":38
 *         cdef Comm s = <Comm>self, o = <Comm>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError("only '==' and '!='")
 * 
 */
  switch (__pyx_v_op) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":37
 *         if not isinstance(other, Comm): return NotImplemented
 *         cdef Comm s = <Comm>self, o = <Comm>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)             # <<<<<<<<<<<<<<
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")
 */
    case Py_EQ:
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi == __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":38
 *         cdef Comm s = <Comm>self, o = <Comm>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError("only '==' and '!='")
 * 
 */
    case Py_NE:
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi != __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    break;
    default:

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":39
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
    __pyx_t_1 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_70), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    break;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_s);
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":41
 *         else: raise TypeError("only '==' and '!='")
 * 
 *     def __bool__(self):             # <<<<<<<<<<<<<<
 *         return self.ob_mpi != MPI_COMM_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_4Comm_3__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_4Comm_3__bool__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":42
 * 
 *     def __bool__(self):
 *         return self.ob_mpi != MPI_COMM_NULL             # <<<<<<<<<<<<<<
 * 
 *     # Group
 */
  __pyx_r = (((struct PyMPICommObject *)__pyx_v_self)->ob_mpi != MPI_COMM_NULL);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":47
 *     # -----
 * 
 *     def Get_group(self):             # <<<<<<<<<<<<<<
 *         """
 *         Access the group associated with a communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_4Get_group(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_4Get_group[] = "Comm.Get_group(self)\n\n        Access the group associated with a communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_4Get_group(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_group");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_group", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_group", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":51
 *         Access the group associated with a communicator
 *         """
 *         cdef Group group = <Group>Group.__new__(Group)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_group(self.ob_mpi, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Group)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIGroupObject *)__pyx_t_1)));
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":52
 *         """
 *         cdef Group group = <Group>Group.__new__(Group)
 *         with nogil: CHKERR( MPI_Comm_group(self.ob_mpi, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_group(((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":53
 *         cdef Group group = <Group>Group.__new__(Group)
 *         with nogil: CHKERR( MPI_Comm_group(self.ob_mpi, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     property group:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_group));
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":57
 *     property group:
 *         """communicator group"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_group()
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_5group___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_5group___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":58
 *         """communicator group"""
 *         def __get__(self):
 *             return self.Get_group()             # <<<<<<<<<<<<<<
 * 
 *     # Communicator Accessors
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_group); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.group.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":63
 *     # ----------------------
 * 
 *     def Get_size(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of processes in a communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_5Get_size(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_5Get_size[] = "Comm.Get_size(self)\n\n        Return the number of processes in a communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_5Get_size(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_size");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_size", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_size", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":67
 *         Return the number of processes in a communicator
 *         """
 *         cdef int size = -1             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_size(self.ob_mpi, &size) )
 *         return size
 */
  __pyx_v_size = -1;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":68
 *         """
 *         cdef int size = -1
 *         CHKERR( MPI_Comm_size(self.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *         return size
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":69
 *         cdef int size = -1
 *         CHKERR( MPI_Comm_size(self.ob_mpi, &size) )
 *         return size             # <<<<<<<<<<<<<<
 * 
 *     property size:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":73
 *     property size:
 *         """number of processes in communicator"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_size()
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_4size___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_4size___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":74
 *         """number of processes in communicator"""
 *         def __get__(self):
 *             return self.Get_size()             # <<<<<<<<<<<<<<
 * 
 *     def Get_rank(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":76
 *             return self.Get_size()
 * 
 *     def Get_rank(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the rank of this process in a communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_6Get_rank(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_6Get_rank[] = "Comm.Get_rank(self)\n\n        Return the rank of this process in a communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_6Get_rank(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_rank");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_rank", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_rank", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":80
 *         Return the rank of this process in a communicator
 *         """
 *         cdef int rank = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         return rank
 */
  __pyx_v_rank = MPI_PROC_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":81
 *         """
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )             # <<<<<<<<<<<<<<
 *         return rank
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":82
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         return rank             # <<<<<<<<<<<<<<
 * 
 *     property rank:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_rank); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_rank", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":86
 *     property rank:
 *         """rank of this process in communicator"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_rank()
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_4rank___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_4rank___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":87
 *         """rank of this process in communicator"""
 *         def __get__(self):
 *             return self.Get_rank()             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_rank); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.rank.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":90
 * 
 *     @classmethod
 *     def Compare(cls, Comm comm1 not None, Comm comm2 not None):             # <<<<<<<<<<<<<<
 *         """
 *         Compare two communicators
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_7Compare(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_7Compare[] = "Comm.Compare(type cls, Comm comm1, Comm comm2)\n\n        Compare two communicators\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_7Compare(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPICommObject *__pyx_v_comm1 = 0;
  struct PyMPICommObject *__pyx_v_comm2 = 0;
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__comm1,&__pyx_n_s__comm2,0};
  __Pyx_RefNannySetupContext("Compare");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__comm1);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__comm2);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Compare", 1, 2, 2, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Compare") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_comm1 = ((struct PyMPICommObject *)values[0]);
    __pyx_v_comm2 = ((struct PyMPICommObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Compare", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Compare", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm1), __pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm1", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm2), __pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm2", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":94
 *         Compare two communicators
 *         """
 *         cdef int flag = MPI_UNEQUAL             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_compare(comm1.ob_mpi, comm2.ob_mpi, &flag) )
 *         return flag
 */
  __pyx_v_flag = MPI_UNEQUAL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":95
 *         """
 *         cdef int flag = MPI_UNEQUAL
 *         with nogil: CHKERR( MPI_Comm_compare(comm1.ob_mpi, comm2.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return flag
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_compare(__pyx_v_comm1->ob_mpi, __pyx_v_comm2->ob_mpi, (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":96
 *         cdef int flag = MPI_UNEQUAL
 *         with nogil: CHKERR( MPI_Comm_compare(comm1.ob_mpi, comm2.ob_mpi, &flag) )
 *         return flag             # <<<<<<<<<<<<<<
 * 
 *     # Communicator Constructors
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_flag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Compare", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":101
 *     # -------------------------
 * 
 *     def Clone(self):             # <<<<<<<<<<<<<<
 *         """
 *         Clone an existing communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_8Clone(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_8Clone[] = "Comm.Clone(self)\n\n        Clone an existing communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_8Clone(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Clone");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Clone", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Clone", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":105
 *         Clone an existing communicator
 *         """
 *         cdef Comm comm = <Comm>type(self)()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )
 *         return comm
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPICommObject *)__pyx_t_1)));
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":106
 *         """
 *         cdef Comm comm = <Comm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_dup(((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_comm->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":107
 *         cdef Comm comm = <Comm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     # Communicator Destructor
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Clone", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":112
 *     # -----------------------
 * 
 *     def Free(self):             # <<<<<<<<<<<<<<
 *         """
 *         Free a communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_9Free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_9Free[] = "Comm.Free(self)\n\n        Free a communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_9Free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Free");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Free", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Free", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":116
 *         Free a communicator
 *         """
 *         with nogil: CHKERR( MPI_Comm_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Point to Point communication
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_free((&((struct PyMPICommObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":124
 *     # ------------------------------------
 * 
 *     def Send(self, buf, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Blocking send
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_10Send(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_10Send[] = "Comm.Send(self, buf, int dest=0, int tag=0)\n\n        Blocking send\n\n        .. note:: This function may block until the message is\n           received. Whether or not `Send` blocks depends on\n           several factors and is implementation dependent\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_10Send(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__dest,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("Send");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Send") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Send", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Send", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":132
 *            several factors and is implementation dependent
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Send(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":133
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         with nogil: CHKERR( MPI_Send(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":135
 *         with nogil: CHKERR( MPI_Send(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Recv(self, buf, int source=0, int tag=0, Status status=None):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Send(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":133
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         with nogil: CHKERR( MPI_Send(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Send", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":137
 *             dest, tag, self.ob_mpi) )
 * 
 *     def Recv(self, buf, int source=0, int tag=0, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Blocking receive
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_11Recv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_11Recv[] = "Comm.Recv(self, buf, int source=0, int tag=0, Status status=None)\n\n        Blocking receive\n\n        .. note:: This function blocks until the message is received\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_11Recv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_source;
  int __pyx_v_tag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_rmsg = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__source,&__pyx_n_s__tag,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Recv");
  {
    PyObject* values[4] = {0,0,0,0};
    values[3] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__source);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Recv") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_source = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_source = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Recv", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":143
 *         .. note:: This function blocks until the message is received
 *         """
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Recv(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_recv(__pyx_v_buf, __pyx_v_source)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_rmsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":144
 *         """
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Recv(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":145
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Recv(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, statusp) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":147
 *         with nogil: CHKERR( MPI_Recv(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     # Send-Receive
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Recv(__pyx_v_rmsg->buf, __pyx_v_rmsg->count, __pyx_v_rmsg->dtype, __pyx_v_source, __pyx_v_tag, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":145
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Recv(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, statusp) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":152
 *     # ------------
 * 
 *     def Sendrecv(self, sendbuf, int dest=0, int sendtag=0,             # <<<<<<<<<<<<<<
 *                  recvbuf=None, int source=0, int recvtag=0,
 *                  Status status=None):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_12Sendrecv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_12Sendrecv[] = "Comm.Sendrecv(self, sendbuf, int dest=0, int sendtag=0, recvbuf=None, int source=0, int recvtag=0, Status status=None)\n\n        Send and receive a message\n\n        .. note:: This function is guaranteed not to deadlock in\n           situations where pairs of blocking sends and receives may\n           deadlock.\n\n        .. caution:: A common mistake when using this function is to\n           mismatch the tags with the source and destination ranks,\n           which can result in deadlock.\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_12Sendrecv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  int __pyx_v_dest;
  int __pyx_v_sendtag;
  PyObject *__pyx_v_recvbuf = 0;
  int __pyx_v_source;
  int __pyx_v_recvtag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_rmsg = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendbuf,&__pyx_n_s__dest,&__pyx_n_s__sendtag,&__pyx_n_s__recvbuf,&__pyx_n_s__source,&__pyx_n_s__recvtag,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Sendrecv");
  {
    PyObject* values[7] = {0,0,0,0,0,0,0};

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":153
 * 
 *     def Sendrecv(self, sendbuf, int dest=0, int sendtag=0,
 *                  recvbuf=None, int source=0, int recvtag=0,             # <<<<<<<<<<<<<<
 *                  Status status=None):
 *         """
 */
    values[3] = ((PyObject *)Py_None);

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":154
 *     def Sendrecv(self, sendbuf, int dest=0, int sendtag=0,
 *                  recvbuf=None, int source=0, int recvtag=0,
 *                  Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Send and receive a message
 */
    values[6] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendbuf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendtag);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvbuf);
          if (value) { values[3] = value; kw_args--; }
        }
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__source);
          if (value) { values[4] = value; kw_args--; }
        }
        case  5:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvtag);
          if (value) { values[5] = value; kw_args--; }
        }
        case  6:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[6] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Sendrecv") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_sendtag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_sendtag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_sendtag = ((int)0);
    }
    __pyx_v_recvbuf = values[3];
    if (values[4]) {
      __pyx_v_source = __Pyx_PyInt_AsInt(values[4]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_source = ((int)0);
    }
    if (values[5]) {
      __pyx_v_recvtag = __Pyx_PyInt_AsInt(values[5]); if (unlikely((__pyx_v_recvtag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_recvtag = ((int)0);
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[6]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Sendrecv", 0, 1, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Sendrecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":166
 *            which can result in deadlock.
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(sendbuf, dest)             # <<<<<<<<<<<<<<
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(recvbuf, source)
 *         cdef MPI_Status *statusp = arg_Status(status)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_sendbuf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":167
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(sendbuf, dest)
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(recvbuf, source)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Sendrecv(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_recv(__pyx_v_recvbuf, __pyx_v_source)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_rmsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":168
 *         cdef _p_msg_p2p smsg = message_p2p_send(sendbuf, dest)
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(recvbuf, source)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Sendrecv(
 *             smsg.buf, smsg.count, smsg.dtype, dest,   sendtag,
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":169
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(recvbuf, source)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Sendrecv(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype, dest,   sendtag,
 *             rmsg.buf, rmsg.count, rmsg.dtype, source, recvtag,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":172
 *             smsg.buf, smsg.count, smsg.dtype, dest,   sendtag,
 *             rmsg.buf, rmsg.count, rmsg.dtype, source, recvtag,
 *             self.ob_mpi, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Sendrecv_replace(self, buf,
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Sendrecv(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_sendtag, __pyx_v_rmsg->buf, __pyx_v_rmsg->count, __pyx_v_rmsg->dtype, __pyx_v_source, __pyx_v_recvtag, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":169
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(recvbuf, source)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Sendrecv(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype, dest,   sendtag,
 *             rmsg.buf, rmsg.count, rmsg.dtype, source, recvtag,
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Sendrecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":174
 *             self.ob_mpi, statusp) )
 * 
 *     def Sendrecv_replace(self, buf,             # <<<<<<<<<<<<<<
 *                          int dest=0,  int sendtag=0,
 *                          int source=0, int recvtag=0,
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_13Sendrecv_replace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_13Sendrecv_replace[] = "Comm.Sendrecv_replace(self, buf, int dest=0, int sendtag=0, int source=0, int recvtag=0, Status status=None)\n\n        Send and receive a message\n\n        .. note:: This function is guaranteed not to deadlock in\n           situations where pairs of blocking sends and receives may\n           deadlock.\n\n        .. caution:: A common mistake when using this function is to\n           mismatch the tags with the source and destination ranks,\n           which can result in deadlock.\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_13Sendrecv_replace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_sendtag;
  int __pyx_v_source;
  int __pyx_v_recvtag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  int __pyx_v_rank;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_rmsg = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__dest,&__pyx_n_s__sendtag,&__pyx_n_s__source,&__pyx_n_s__recvtag,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Sendrecv_replace");
  {
    PyObject* values[6] = {0,0,0,0,0,0};

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":177
 *                          int dest=0,  int sendtag=0,
 *                          int source=0, int recvtag=0,
 *                          Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Send and receive a message
 */
    values[5] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendtag);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__source);
          if (value) { values[3] = value; kw_args--; }
        }
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvtag);
          if (value) { values[4] = value; kw_args--; }
        }
        case  5:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[5] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Sendrecv_replace") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_sendtag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_sendtag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_sendtag = ((int)0);
    }
    if (values[3]) {
      __pyx_v_source = __Pyx_PyInt_AsInt(values[3]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_source = ((int)0);
    }
    if (values[4]) {
      __pyx_v_recvtag = __Pyx_PyInt_AsInt(values[4]); if (unlikely((__pyx_v_recvtag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_recvtag = ((int)0);
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[5]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Sendrecv_replace", 0, 1, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Sendrecv_replace", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":189
 *            which can result in deadlock.
 *         """
 *         cdef int rank = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         if dest   != MPI_PROC_NULL: rank = dest
 *         if source != MPI_PROC_NULL: rank = source
 */
  __pyx_v_rank = MPI_PROC_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":190
 *         """
 *         cdef int rank = MPI_PROC_NULL
 *         if dest   != MPI_PROC_NULL: rank = dest             # <<<<<<<<<<<<<<
 *         if source != MPI_PROC_NULL: rank = source
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, rank)
 */
  __pyx_t_1 = (__pyx_v_dest != MPI_PROC_NULL);
  if (__pyx_t_1) {
    __pyx_v_rank = __pyx_v_dest;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":191
 *         cdef int rank = MPI_PROC_NULL
 *         if dest   != MPI_PROC_NULL: rank = dest
 *         if source != MPI_PROC_NULL: rank = source             # <<<<<<<<<<<<<<
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, rank)
 *         cdef MPI_Status *statusp = arg_Status(status)
 */
  __pyx_t_1 = (__pyx_v_source != MPI_PROC_NULL);
  if (__pyx_t_1) {
    __pyx_v_rank = __pyx_v_source;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":192
 *         if dest   != MPI_PROC_NULL: rank = dest
 *         if source != MPI_PROC_NULL: rank = source
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, rank)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Sendrecv_replace(
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_recv(__pyx_v_buf, __pyx_v_rank)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_rmsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":193
 *         if source != MPI_PROC_NULL: rank = source
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, rank)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Sendrecv_replace(
 *                 rmsg.buf, rmsg.count, rmsg.dtype,
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":194
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, rank)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Sendrecv_replace(             # <<<<<<<<<<<<<<
 *                 rmsg.buf, rmsg.count, rmsg.dtype,
 *                 dest, sendtag, source, recvtag,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":197
 *                 rmsg.buf, rmsg.count, rmsg.dtype,
 *                 dest, sendtag, source, recvtag,
 *                 self.ob_mpi, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     # Nonblocking Communications
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Sendrecv_replace(__pyx_v_rmsg->buf, __pyx_v_rmsg->count, __pyx_v_rmsg->dtype, __pyx_v_dest, __pyx_v_sendtag, __pyx_v_source, __pyx_v_recvtag, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L9;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":194
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, rank)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Sendrecv_replace(             # <<<<<<<<<<<<<<
 *                 rmsg.buf, rmsg.count, rmsg.dtype,
 *                 dest, sendtag, source, recvtag,
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L10;
        __pyx_L9: __pyx_why = 4; goto __pyx_L10;
        __pyx_L10:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Sendrecv_replace", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":202
 *     # --------------------------
 * 
 *     def Isend(self, buf, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking send
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_14Isend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_14Isend[] = "Comm.Isend(self, buf, int dest=0, int tag=0)\n\n        Nonblocking send\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_14Isend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__dest,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("Isend");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Isend") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Isend", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Isend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":206
 *         Nonblocking send
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_Isend(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":207
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>Request.__new__(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Isend(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIRequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":208
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_Isend(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":210
 *         with nogil: CHKERR( MPI_Isend(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = smsg
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Isend(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":208
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_Isend(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":211
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_smsg));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_smsg));
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_smsg);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":212
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Irecv(self, buf, int source=0, int tag=0):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Isend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":214
 *         return request
 * 
 *     def Irecv(self, buf, int source=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking receive
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_15Irecv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_15Irecv[] = "Comm.Irecv(self, buf, int source=0, int tag=0)\n\n        Nonblocking receive\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_15Irecv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_source;
  int __pyx_v_tag;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_rmsg = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__source,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("Irecv");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__source);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Irecv") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_source = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_source = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Irecv", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Irecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":218
 *         Nonblocking receive
 *         """
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_Irecv(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_recv(__pyx_v_buf, __pyx_v_source)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_rmsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":219
 *         """
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef Request request = <Request>Request.__new__(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Irecv(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIRequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":220
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_Irecv(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":222
 *         with nogil: CHKERR( MPI_Irecv(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = rmsg
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Irecv(__pyx_v_rmsg->buf, __pyx_v_rmsg->count, __pyx_v_rmsg->dtype, __pyx_v_source, __pyx_v_tag, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":220
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_Irecv(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":223
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = rmsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_rmsg));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_rmsg));
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_rmsg);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":224
 *             source, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = rmsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     # Probe
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Irecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rmsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":229
 *     # -----
 * 
 *     def Probe(self, int source=0, int tag=0, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Blocking test for a message
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_16Probe(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_16Probe[] = "Comm.Probe(self, int source=0, int tag=0, Status status=None)\n\n        Blocking test for a message\n\n        .. note:: This function blocks until the message arrives.\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_16Probe(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_source;
  int __pyx_v_tag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__source,&__pyx_n_s__tag,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Probe");
  {
    PyObject* values[3] = {0,0,0};
    values[2] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__source);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Probe") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_source = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_source = ((int)0);
    }
    if (values[1]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Probe", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Probe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":235
 *         .. note:: This function blocks until the message arrives.
 *         """
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Probe(
 *             source, tag, self.ob_mpi, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":236
 *         """
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Probe(             # <<<<<<<<<<<<<<
 *             source, tag, self.ob_mpi, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":237
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Probe(
 *             source, tag, self.ob_mpi, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Iprobe(self, int source=0, int tag=0, Status status=None):
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Probe(__pyx_v_source, __pyx_v_tag, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, __pyx_v_statusp)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":236
 *         """
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Probe(             # <<<<<<<<<<<<<<
 *             source, tag, self.ob_mpi, statusp) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Probe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":239
 *             source, tag, self.ob_mpi, statusp) )
 * 
 *     def Iprobe(self, int source=0, int tag=0, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking test for a message
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_17Iprobe(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_17Iprobe[] = "Comm.Iprobe(self, int source=0, int tag=0, Status status=None)\n\n        Nonblocking test for a message\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_17Iprobe(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_source;
  int __pyx_v_tag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  int __pyx_v_flag;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__source,&__pyx_n_s__tag,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Iprobe");
  {
    PyObject* values[3] = {0,0,0};
    values[2] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__source);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Iprobe") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_source = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_source = ((int)0);
    }
    if (values[1]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iprobe", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Iprobe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":243
 *         Nonblocking test for a message
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Iprobe(
 */
  __pyx_v_flag = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":244
 *         """
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Iprobe(
 *             source, tag, self.ob_mpi, &flag, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":245
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Iprobe(             # <<<<<<<<<<<<<<
 *             source, tag, self.ob_mpi, &flag, statusp) )
 *         return <bint>flag
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":246
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Iprobe(
 *             source, tag, self.ob_mpi, &flag, statusp) )             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Iprobe(__pyx_v_source, __pyx_v_tag, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_flag), __pyx_v_statusp)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":245
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Iprobe(             # <<<<<<<<<<<<<<
 *             source, tag, self.ob_mpi, &flag, statusp) )
 *         return <bint>flag
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":247
 *         with nogil: CHKERR( MPI_Iprobe(
 *             source, tag, self.ob_mpi, &flag, statusp) )
 *         return <bint>flag             # <<<<<<<<<<<<<<
 * 
 *     # Persistent Communication
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_v_flag)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Iprobe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":252
 *     # ------------------------
 * 
 *     def Send_init(self, buf, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Create a persistent request for a standard send
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_18Send_init(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_18Send_init[] = "Comm.Send_init(self, buf, int dest=0, int tag=0)\n\n        Create a persistent request for a standard send\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_18Send_init(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__dest,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("Send_init");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Send_init") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Send_init", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Send_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":256
 *         Create a persistent request for a standard send
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>Prequest.__new__(Prequest)
 *         with nogil: CHKERR( MPI_Send_init(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":257
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>Prequest.__new__(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Send_init(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Prequest)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIPrequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":258
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>Prequest.__new__(Prequest)
 *         with nogil: CHKERR( MPI_Send_init(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":260
 *         with nogil: CHKERR( MPI_Send_init(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = smsg
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Send_init(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":258
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>Prequest.__new__(Prequest)
 *         with nogil: CHKERR( MPI_Send_init(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":261
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_smsg));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_smsg));
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_smsg);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":262
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Recv_init(self, buf, int source=0, int tag=0):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Send_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":264
 *         return request
 * 
 *     def Recv_init(self, buf, int source=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Create a persistent request for a receive
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_19Recv_init(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_19Recv_init[] = "Comm.Recv_init(self, buf, int source=0, int tag=0)\n\n        Create a persistent request for a receive\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_19Recv_init(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_source;
  int __pyx_v_tag;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_rmsg = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__source,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("Recv_init");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__source);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Recv_init") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_source = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_source = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Recv_init", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Recv_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":268
 *         Create a persistent request for a receive
 *         """
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>Prequest.__new__(Prequest)
 *         with nogil: CHKERR( MPI_Recv_init(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_recv(__pyx_v_buf, __pyx_v_source)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_rmsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":269
 *         """
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef Prequest request = <Prequest>Prequest.__new__(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Recv_init(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Prequest)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIPrequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":270
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef Prequest request = <Prequest>Prequest.__new__(Prequest)
 *         with nogil: CHKERR( MPI_Recv_init(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":272
 *         with nogil: CHKERR( MPI_Recv_init(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = rmsg
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Recv_init(__pyx_v_rmsg->buf, __pyx_v_rmsg->count, __pyx_v_rmsg->dtype, __pyx_v_source, __pyx_v_tag, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":270
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef Prequest request = <Prequest>Prequest.__new__(Prequest)
 *         with nogil: CHKERR( MPI_Recv_init(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":273
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = rmsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_rmsg));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_rmsg));
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_rmsg);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":274
 *             source, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = rmsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     # Communication Modes
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Recv_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rmsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":281
 *     # Blocking calls
 * 
 *     def Bsend(self, buf, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Blocking send in buffered mode
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_20Bsend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_20Bsend[] = "Comm.Bsend(self, buf, int dest=0, int tag=0)\n\n        Blocking send in buffered mode\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_20Bsend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__dest,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("Bsend");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Bsend") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Bsend", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Bsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":285
 *         Blocking send in buffered mode
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Bsend(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":286
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         with nogil: CHKERR( MPI_Bsend(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":288
 *         with nogil: CHKERR( MPI_Bsend(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Ssend(self, buf, int dest=0, int tag=0):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Bsend(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":286
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         with nogil: CHKERR( MPI_Bsend(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Bsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":290
 *             dest, tag, self.ob_mpi) )
 * 
 *     def Ssend(self, buf, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Blocking send in synchronous mode
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_21Ssend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_21Ssend[] = "Comm.Ssend(self, buf, int dest=0, int tag=0)\n\n        Blocking send in synchronous mode\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_21Ssend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__dest,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("Ssend");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Ssend") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Ssend", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ssend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":294
 *         Blocking send in synchronous mode
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Ssend(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":295
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         with nogil: CHKERR( MPI_Ssend(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":297
 *         with nogil: CHKERR( MPI_Ssend(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Rsend(self, buf, int dest=0, int tag=0):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ssend(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":295
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         with nogil: CHKERR( MPI_Ssend(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ssend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":299
 *             dest, tag, self.ob_mpi) )
 * 
 *     def Rsend(self, buf, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Blocking send in ready mode
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_22Rsend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_22Rsend[] = "Comm.Rsend(self, buf, int dest=0, int tag=0)\n\n        Blocking send in ready mode\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_22Rsend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__dest,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("Rsend");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Rsend") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Rsend", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Rsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":303
 *         Blocking send in ready mode
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Rsend(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":304
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         with nogil: CHKERR( MPI_Rsend(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":306
 *         with nogil: CHKERR( MPI_Rsend(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Nonblocking calls
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Rsend(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":304
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         with nogil: CHKERR( MPI_Rsend(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Rsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":310
 *     # Nonblocking calls
 * 
 *     def Ibsend(self, buf, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking send in buffered mode
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_23Ibsend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_23Ibsend[] = "Comm.Ibsend(self, buf, int dest=0, int tag=0)\n\n        Nonblocking send in buffered mode\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_23Ibsend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__dest,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("Ibsend");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Ibsend") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Ibsend", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ibsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":314
 *         Nonblocking send in buffered mode
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_Ibsend(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":315
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>Request.__new__(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Ibsend(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIRequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":316
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_Ibsend(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":318
 *         with nogil: CHKERR( MPI_Ibsend(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = smsg
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ibsend(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":316
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_Ibsend(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":319
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_smsg));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_smsg));
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_smsg);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":320
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Issend(self, buf, int dest=0, int tag=0):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ibsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":322
 *         return request
 * 
 *     def Issend(self, buf, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking send in synchronous mode
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_24Issend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_24Issend[] = "Comm.Issend(self, buf, int dest=0, int tag=0)\n\n        Nonblocking send in synchronous mode\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_24Issend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__dest,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("Issend");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Issend") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Issend", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Issend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":326
 *         Nonblocking send in synchronous mode
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_Issend(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":327
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>Request.__new__(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Issend(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIRequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":328
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_Issend(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":330
 *         with nogil: CHKERR( MPI_Issend(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = smsg
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Issend(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":328
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_Issend(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":331
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_smsg));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_smsg));
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_smsg);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":332
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Irsend(self, buf, int dest=0, int tag=0):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Issend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":334
 *         return request
 * 
 *     def Irsend(self, buf, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking send in ready mode
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_25Irsend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_25Irsend[] = "Comm.Irsend(self, buf, int dest=0, int tag=0)\n\n        Nonblocking send in ready mode\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_25Irsend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__dest,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("Irsend");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Irsend") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Irsend", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Irsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":338
 *         Nonblocking send in ready mode
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_Irsend(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":339
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>Request.__new__(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Irsend(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIRequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":340
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_Irsend(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":342
 *         with nogil: CHKERR( MPI_Irsend(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = smsg
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Irsend(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":340
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_Irsend(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":343
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_smsg));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_smsg));
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_smsg);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":344
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     # Persistent Requests
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Irsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":348
 *     # Persistent Requests
 * 
 *     def Bsend_init(self, buf, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Persistent request for a send in buffered mode
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_26Bsend_init(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_26Bsend_init[] = "Comm.Bsend_init(self, buf, int dest=0, int tag=0)\n\n        Persistent request for a send in buffered mode\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_26Bsend_init(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__dest,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("Bsend_init");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Bsend_init") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Bsend_init", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Bsend_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":352
 *         Persistent request for a send in buffered mode
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>Prequest.__new__(Prequest)
 *         with nogil: CHKERR( MPI_Bsend_init(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":353
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>Prequest.__new__(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Bsend_init(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Prequest)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIPrequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":354
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>Prequest.__new__(Prequest)
 *         with nogil: CHKERR( MPI_Bsend_init(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":356
 *         with nogil: CHKERR( MPI_Bsend_init(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = smsg
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Bsend_init(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":354
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>Prequest.__new__(Prequest)
 *         with nogil: CHKERR( MPI_Bsend_init(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":357
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_smsg));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_smsg));
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_smsg);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":358
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Ssend_init(self, buf, int dest=0, int tag=0):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Bsend_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":360
 *         return request
 * 
 *     def Ssend_init(self, buf, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Persistent request for a send in synchronous mode
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_27Ssend_init(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_27Ssend_init[] = "Comm.Ssend_init(self, buf, int dest=0, int tag=0)\n\n        Persistent request for a send in synchronous mode\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_27Ssend_init(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__dest,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("Ssend_init");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Ssend_init") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Ssend_init", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ssend_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":364
 *         Persistent request for a send in synchronous mode
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>Prequest.__new__(Prequest)
 *         with nogil: CHKERR( MPI_Ssend_init(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":365
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>Prequest.__new__(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Ssend_init(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Prequest)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIPrequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":366
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>Prequest.__new__(Prequest)
 *         with nogil: CHKERR( MPI_Ssend_init(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":368
 *         with nogil: CHKERR( MPI_Ssend_init(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = smsg
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ssend_init(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":366
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>Prequest.__new__(Prequest)
 *         with nogil: CHKERR( MPI_Ssend_init(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":369
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_smsg));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_smsg));
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_smsg);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":370
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Rsend_init(self, buf, int dest=0, int tag=0):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ssend_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":372
 *         return request
 * 
 *     def Rsend_init(self, buf, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Persistent request for a send in ready mode
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_28Rsend_init(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_28Rsend_init[] = "Comm.Rsend_init(self, buf, int dest=0, int tag=0)\n\n        Persistent request for a send in ready mode\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_28Rsend_init(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__dest,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("Rsend_init");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Rsend_init") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Rsend_init", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Rsend_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":376
 *         Persistent request for a send in ready mode
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>Prequest.__new__(Prequest)
 *         with nogil: CHKERR( MPI_Rsend_init(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":377
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>Prequest.__new__(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Rsend_init(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Prequest)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIPrequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":378
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>Prequest.__new__(Prequest)
 *         with nogil: CHKERR( MPI_Rsend_init(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":380
 *         with nogil: CHKERR( MPI_Rsend_init(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = smsg
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Rsend_init(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":378
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>Prequest.__new__(Prequest)
 *         with nogil: CHKERR( MPI_Rsend_init(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":381
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_smsg));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_smsg));
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_smsg);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":382
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     # Collective Communications
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Rsend_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":390
 *     # -----------------------
 * 
 *     def Barrier(self):             # <<<<<<<<<<<<<<
 *         """
 *         Barrier synchronization
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_29Barrier(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_29Barrier[] = "Comm.Barrier(self)\n\n        Barrier synchronization\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_29Barrier(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Barrier");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Barrier", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Barrier", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":394
 *         Barrier synchronization
 *         """
 *         with nogil: CHKERR( MPI_Barrier(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Global Communication Functions
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Barrier(((struct PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Barrier", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":399
 *     # ------------------------------
 * 
 *     def Bcast(self, buf, int root=0):             # <<<<<<<<<<<<<<
 *         """
 *         Broadcast a message from one process
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_30Bcast(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_30Bcast[] = "Comm.Bcast(self, buf, int root=0)\n\n        Broadcast a message from one process\n        to all other processes in a group\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_30Bcast(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_root;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__root,0};
  __Pyx_RefNannySetupContext("Bcast");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__root);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Bcast") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_root = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Bcast", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Bcast", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":404
 *         to all other processes in a group
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_bcast(buf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Bcast(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":405
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_bcast(buf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Bcast(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_m->__pyx_vtab)->for_bcast(__pyx_v_m, __pyx_v_buf, __pyx_v_root, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":406
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_bcast(buf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Bcast(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             root, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":408
 *         with nogil: CHKERR( MPI_Bcast(
 *             m.sbuf, m.scount, m.stype,
 *             root, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Gather(self, sendbuf, recvbuf, int root=0):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Bcast(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_root, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":406
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_bcast(buf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Bcast(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             root, self.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Bcast", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":410
 *             root, self.ob_mpi) )
 * 
 *     def Gather(self, sendbuf, recvbuf, int root=0):             # <<<<<<<<<<<<<<
 *         """
 *         Gather together values from a group of processes
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_31Gather(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_31Gather[] = "Comm.Gather(self, sendbuf, recvbuf, int root=0)\n\n        Gather together values from a group of processes\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_31Gather(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  int __pyx_v_root;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendbuf,&__pyx_n_s__recvbuf,&__pyx_n_s__root,0};
  __Pyx_RefNannySetupContext("Gather");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendbuf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvbuf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Gather", 0, 2, 3, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__root);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Gather") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Gather", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Gather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":414
 *         Gather together values from a group of processes
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_gather(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Gather(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":415
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_gather(0, sendbuf, recvbuf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Gather(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_m->__pyx_vtab)->for_gather(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":416
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_gather(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Gather(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":419
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             root, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Gatherv(self, sendbuf, recvbuf, int root=0):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Gather(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_root, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":416
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_gather(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Gather(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Gather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":421
 *             root, self.ob_mpi) )
 * 
 *     def Gatherv(self, sendbuf, recvbuf, int root=0):             # <<<<<<<<<<<<<<
 *         """
 *         Gather Vector, gather data to one process from all other
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_32Gatherv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_32Gatherv[] = "Comm.Gatherv(self, sendbuf, recvbuf, int root=0)\n\n        Gather Vector, gather data to one process from all other\n        processes in a group providing different amount of data and\n        displacements at the receiving sides\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_32Gatherv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  int __pyx_v_root;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendbuf,&__pyx_n_s__recvbuf,&__pyx_n_s__root,0};
  __Pyx_RefNannySetupContext("Gatherv");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendbuf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvbuf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Gatherv", 0, 2, 3, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__root);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Gatherv") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Gatherv", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Gatherv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":427
 *         displacements at the receiving sides
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_gather(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Gatherv(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":428
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_gather(1, sendbuf, recvbuf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Gatherv(
 *             m.sbuf, m.scount,             m.stype,
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_m->__pyx_vtab)->for_gather(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":429
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_gather(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Gatherv(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":432
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             root, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Scatter(self, sendbuf, recvbuf, int root=0):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Gatherv(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtype, __pyx_v_root, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":429
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_gather(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Gatherv(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Gatherv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":434
 *             root, self.ob_mpi) )
 * 
 *     def Scatter(self, sendbuf, recvbuf, int root=0):             # <<<<<<<<<<<<<<
 *         """
 *         Scatter data from one process
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_33Scatter(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_33Scatter[] = "Comm.Scatter(self, sendbuf, recvbuf, int root=0)\n\n        Scatter data from one process\n        to all other processes in a group\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_33Scatter(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  int __pyx_v_root;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendbuf,&__pyx_n_s__recvbuf,&__pyx_n_s__root,0};
  __Pyx_RefNannySetupContext("Scatter");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendbuf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvbuf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Scatter", 0, 2, 3, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__root);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Scatter") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Scatter", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Scatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":439
 *         to all other processes in a group
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_scatter(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Scatter(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":440
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scatter(0, sendbuf, recvbuf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Scatter(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_m->__pyx_vtab)->for_scatter(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":441
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scatter(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Scatter(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":444
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             root, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Scatterv(self, sendbuf, recvbuf, int root=0):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Scatter(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_root, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":441
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scatter(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Scatter(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Scatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":446
 *             root, self.ob_mpi) )
 * 
 *     def Scatterv(self, sendbuf, recvbuf, int root=0):             # <<<<<<<<<<<<<<
 *         """
 *         Scatter Vector, scatter data from one process to all other
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_34Scatterv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_34Scatterv[] = "Comm.Scatterv(self, sendbuf, recvbuf, int root=0)\n\n        Scatter Vector, scatter data from one process to all other\n        processes in a group providing different amount of data and\n        displacements at the sending side\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_34Scatterv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  int __pyx_v_root;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendbuf,&__pyx_n_s__recvbuf,&__pyx_n_s__root,0};
  __Pyx_RefNannySetupContext("Scatterv");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendbuf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvbuf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Scatterv", 0, 2, 3, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__root);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Scatterv") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Scatterv", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Scatterv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":452
 *         displacements at the sending side
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_scatter(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Scatterv(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":453
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scatter(1, sendbuf, recvbuf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Scatterv(
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_m->__pyx_vtab)->for_scatter(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":454
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scatter(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Scatterv(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcount,             m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":457
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcount,             m.rtype,
 *             root, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Allgather(self, sendbuf, recvbuf):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Scatterv(__pyx_v_m->sbuf, __pyx_v_m->scounts, __pyx_v_m->sdispls, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_root, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":454
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scatter(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Scatterv(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcount,             m.rtype,
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Scatterv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":459
 *             root, self.ob_mpi) )
 * 
 *     def Allgather(self, sendbuf, recvbuf):             # <<<<<<<<<<<<<<
 *         """
 *         Gather to All, gather data from all processes and
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_35Allgather(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_35Allgather[] = "Comm.Allgather(self, sendbuf, recvbuf)\n\n        Gather to All, gather data from all processes and\n        distribute it to all other processes in a group\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_35Allgather(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendbuf,&__pyx_n_s__recvbuf,0};
  __Pyx_RefNannySetupContext("Allgather");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendbuf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvbuf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Allgather", 1, 2, 2, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Allgather") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Allgather", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":464
 *         distribute it to all other processes in a group
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Allgather(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":465
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allgather(0, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Allgather(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_m->__pyx_vtab)->for_allgather(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":466
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Allgather(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":469
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Allgatherv(self, sendbuf, recvbuf):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Allgather(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":466
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Allgather(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":471
 *             self.ob_mpi) )
 * 
 *     def Allgatherv(self, sendbuf, recvbuf):             # <<<<<<<<<<<<<<
 *         """
 *         Gather to All Vector, gather data from all processes and
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_36Allgatherv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_36Allgatherv[] = "Comm.Allgatherv(self, sendbuf, recvbuf)\n\n        Gather to All Vector, gather data from all processes and\n        distribute it to all other processes in a group providing\n        different amount of data and displacements\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_36Allgatherv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendbuf,&__pyx_n_s__recvbuf,0};
  __Pyx_RefNannySetupContext("Allgatherv");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendbuf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvbuf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Allgatherv", 1, 2, 2, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Allgatherv") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Allgatherv", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Allgatherv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":477
 *         different amount of data and displacements
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Allgatherv(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":478
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allgather(1, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Allgatherv(
 *             m.sbuf, m.scount,             m.stype,
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_m->__pyx_vtab)->for_allgather(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":479
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Allgatherv(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":482
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Alltoall(self, sendbuf, recvbuf):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Allgatherv(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtype, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":479
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Allgatherv(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Allgatherv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":484
 *             self.ob_mpi) )
 * 
 *     def Alltoall(self, sendbuf, recvbuf):             # <<<<<<<<<<<<<<
 *         """
 *         All to All Scatter/Gather, send data from all to all
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_37Alltoall(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_37Alltoall[] = "Comm.Alltoall(self, sendbuf, recvbuf)\n\n        All to All Scatter/Gather, send data from all to all\n        processes in a group\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_37Alltoall(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendbuf,&__pyx_n_s__recvbuf,0};
  __Pyx_RefNannySetupContext("Alltoall");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendbuf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvbuf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Alltoall", 1, 2, 2, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Alltoall") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Alltoall", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":489
 *         processes in a group
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Alltoall(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":490
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_alltoall(0, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Alltoall(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_m->__pyx_vtab)->for_alltoall(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":491
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Alltoall(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":494
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Alltoallv(self, sendbuf, recvbuf):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Alltoall(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":491
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Alltoall(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":496
 *             self.ob_mpi) )
 * 
 *     def Alltoallv(self, sendbuf, recvbuf):             # <<<<<<<<<<<<<<
 *         """
 *         All to All Scatter/Gather Vector, send data from all to all
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_38Alltoallv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_38Alltoallv[] = "Comm.Alltoallv(self, sendbuf, recvbuf)\n\n        All to All Scatter/Gather Vector, send data from all to all\n        processes in a group providing different amount of data and\n        displacements\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_38Alltoallv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendbuf,&__pyx_n_s__recvbuf,0};
  __Pyx_RefNannySetupContext("Alltoallv");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendbuf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvbuf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Alltoallv", 1, 2, 2, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Alltoallv") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Alltoallv", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Alltoallv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":502
 *         displacements
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Alltoallv(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":503
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_alltoall(1, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Alltoallv(
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_m->__pyx_vtab)->for_alltoall(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":504
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Alltoallv(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":507
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Alltoallw(self, sendbuf, recvbuf):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Alltoallv(__pyx_v_m->sbuf, __pyx_v_m->scounts, __pyx_v_m->sdispls, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtype, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":504
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Alltoallv(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Alltoallv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":509
 *             self.ob_mpi) )
 * 
 *     def Alltoallw(self, sendbuf, recvbuf):             # <<<<<<<<<<<<<<
 *         """
 *         Generalized All-to-All communication allowing different
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_39Alltoallw(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_39Alltoallw[] = "Comm.Alltoallw(self, sendbuf, recvbuf)\n\n        Generalized All-to-All communication allowing different\n        counts, displacements and datatypes for each partner\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_39Alltoallw(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendbuf,&__pyx_n_s__recvbuf,0};
  __Pyx_RefNannySetupContext("Alltoallw");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendbuf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvbuf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Alltoallw", 1, 2, 2, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Alltoallw") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Alltoallw", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Alltoallw", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_sendbuf);
  __Pyx_INCREF(__pyx_v_recvbuf);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":514
 *         counts, displacements and datatypes for each partner
 *         """
 *         sendbuf = recvbuf = None             # <<<<<<<<<<<<<<
 *         raise NotImplementedError # XXX implement!
 *         cdef void *sbuf = NULL, *rbuf = NULL
 */
  __Pyx_INCREF(Py_None);
  __Pyx_DECREF(__pyx_v_sendbuf);
  __pyx_v_sendbuf = Py_None;
  __Pyx_INCREF(Py_None);
  __Pyx_DECREF(__pyx_v_recvbuf);
  __pyx_v_recvbuf = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":515
 *         """
 *         sendbuf = recvbuf = None
 *         raise NotImplementedError # XXX implement!             # <<<<<<<<<<<<<<
 *         cdef void *sbuf = NULL, *rbuf = NULL
 *         cdef int  *scounts = NULL, *rcounts = NULL
 */
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
  {__pyx_filename = __pyx_f[6]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Alltoallw", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_sendbuf);
  __Pyx_XDECREF(__pyx_v_recvbuf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":529
 *     # ---------------------------
 * 
 *     def Reduce(self, sendbuf, recvbuf, Op op not None=SUM, int root=0):             # <<<<<<<<<<<<<<
 *         """
 *         Reduce
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_40Reduce(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_40Reduce[] = "Comm.Reduce(self, sendbuf, recvbuf, Op op=SUM, int root=0)\n\n        Reduce\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_40Reduce(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  int __pyx_v_root;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendbuf,&__pyx_n_s__recvbuf,&__pyx_n_s__op,&__pyx_n_s__root,0};
  __Pyx_RefNannySetupContext("Reduce");
  {
    PyObject* values[4] = {0,0,0,0};
    values[2] = (PyObject *)__pyx_k_71;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendbuf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvbuf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Reduce", 0, 2, 4, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__op);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__root);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Reduce") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
    if (values[3]) {
      __pyx_v_root = __Pyx_PyInt_AsInt(values[3]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Reduce", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":533
 *         Reduce
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_reduce(sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Reduce(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":534
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce(sendbuf, recvbuf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Reduce(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_m->__pyx_vtab)->for_reduce(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":535
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce(sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Reduce(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, root, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":537
 *         with nogil: CHKERR( MPI_Reduce(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, root, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Allreduce(self, sendbuf, recvbuf, Op op not None=SUM):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Reduce(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, __pyx_v_root, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":535
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce(sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Reduce(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, root, self.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":539
 *             op.ob_mpi, root, self.ob_mpi) )
 * 
 *     def Allreduce(self, sendbuf, recvbuf, Op op not None=SUM):             # <<<<<<<<<<<<<<
 *         """
 *         All Reduce
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_41Allreduce(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_41Allreduce[] = "Comm.Allreduce(self, sendbuf, recvbuf, Op op=SUM)\n\n        All Reduce\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_41Allreduce(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendbuf,&__pyx_n_s__recvbuf,&__pyx_n_s__op,0};
  __Pyx_RefNannySetupContext("Allreduce");
  {
    PyObject* values[3] = {0,0,0};
    values[2] = (PyObject *)__pyx_k_72;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendbuf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvbuf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Allreduce", 0, 2, 3, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__op);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Allreduce") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Allreduce", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Allreduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":543
 *         All Reduce
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_allreduce(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Allreduce(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":544
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allreduce(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Allreduce(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_m->__pyx_vtab)->for_allreduce(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":545
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allreduce(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Allreduce(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":547
 *         with nogil: CHKERR( MPI_Allreduce(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Reduce_scatter_block(self, sendbuf, recvbuf,
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Allreduce(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":545
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allreduce(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Allreduce(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Allreduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":549
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Reduce_scatter_block(self, sendbuf, recvbuf,             # <<<<<<<<<<<<<<
 *                              Op op not None=SUM):
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_42Reduce_scatter_block(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_42Reduce_scatter_block[] = "Comm.Reduce_scatter_block(self, sendbuf, recvbuf, Op op=SUM)\n\n        Reduce-Scatter Block (regular, non-vector version)\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_42Reduce_scatter_block(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendbuf,&__pyx_n_s__recvbuf,&__pyx_n_s__op,0};
  __Pyx_RefNannySetupContext("Reduce_scatter_block");
  {
    PyObject* values[3] = {0,0,0};
    values[2] = (PyObject *)__pyx_k_73;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendbuf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvbuf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Reduce_scatter_block", 0, 2, 3, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__op);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Reduce_scatter_block") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Reduce_scatter_block", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Reduce_scatter_block", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":554
 *         Reduce-Scatter Block (regular, non-vector version)
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_reduce_scatter_block(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Reduce_scatter_block(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":555
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce_scatter_block(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Reduce_scatter_block(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_m->__pyx_vtab)->for_reduce_scatter_block(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":556
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce_scatter_block(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Reduce_scatter_block(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":558
 *         with nogil: CHKERR( MPI_Reduce_scatter_block(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Reduce_scatter(self, sendbuf, recvbuf, recvcounts=None,
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Reduce_scatter_block(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":556
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce_scatter_block(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Reduce_scatter_block(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Reduce_scatter_block", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":560
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Reduce_scatter(self, sendbuf, recvbuf, recvcounts=None,             # <<<<<<<<<<<<<<
 *                        Op op not None=SUM):
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_43Reduce_scatter(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_43Reduce_scatter[] = "Comm.Reduce_scatter(self, sendbuf, recvbuf, recvcounts=None, Op op=SUM)\n\n        Reduce-Scatter (vector version)\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_43Reduce_scatter(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  PyObject *__pyx_v_recvcounts = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendbuf,&__pyx_n_s__recvbuf,&__pyx_n_s__recvcounts,&__pyx_n_s__op,0};
  __Pyx_RefNannySetupContext("Reduce_scatter");
  {
    PyObject* values[4] = {0,0,0,0};
    values[2] = ((PyObject *)Py_None);
    values[3] = (PyObject *)__pyx_k_74;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendbuf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvbuf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Reduce_scatter", 0, 2, 4, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvcounts);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__op);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Reduce_scatter") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_recvcounts = values[2];
    __pyx_v_op = ((struct PyMPIOpObject *)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Reduce_scatter", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Reduce_scatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":565
 *         Reduce-Scatter (vector version)
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_reduce_scatter(sendbuf, recvbuf,
 *                              recvcounts, self.ob_mpi)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":567
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce_scatter(sendbuf, recvbuf,
 *                              recvcounts, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Reduce_scatter(
 *             m.sbuf, m.rbuf, m.rcounts, m.rtype,
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_m->__pyx_vtab)->for_reduce_scatter(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_recvcounts, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":568
 *         m.for_reduce_scatter(sendbuf, recvbuf,
 *                              recvcounts, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Reduce_scatter(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcounts, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":570
 *         with nogil: CHKERR( MPI_Reduce_scatter(
 *             m.sbuf, m.rbuf, m.rcounts, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Tests
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Reduce_scatter(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":568
 *         m.for_reduce_scatter(sendbuf, recvbuf,
 *                              recvcounts, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Reduce_scatter(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcounts, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Reduce_scatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":575
 *     # -----
 * 
 *     def Is_inter(self):             # <<<<<<<<<<<<<<
 *         """
 *         Test to see if a comm is an intercommunicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_44Is_inter(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_44Is_inter[] = "Comm.Is_inter(self)\n\n        Test to see if a comm is an intercommunicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_44Is_inter(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Is_inter");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Is_inter", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Is_inter", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":579
 *         Test to see if a comm is an intercommunicator
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &flag) )
 *         return <bint>flag
 */
  __pyx_v_flag = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":580
 *         """
 *         cdef int flag = 0
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":581
 *         cdef int flag = 0
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &flag) )
 *         return <bint>flag             # <<<<<<<<<<<<<<
 * 
 *     property is_inter:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_v_flag)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Is_inter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":585
 *     property is_inter:
 *         """is intercommunicator"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Is_inter()
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_8is_inter___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_8is_inter___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":586
 *         """is intercommunicator"""
 *         def __get__(self):
 *             return self.Is_inter()             # <<<<<<<<<<<<<<
 * 
 *     def Is_intra(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Is_inter); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.is_inter.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":588
 *             return self.Is_inter()
 * 
 *     def Is_intra(self):             # <<<<<<<<<<<<<<
 *         """
 *         Test to see if a comm is an intracommunicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_45Is_intra(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_45Is_intra[] = "Comm.Is_intra(self)\n\n        Test to see if a comm is an intracommunicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_45Is_intra(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Is_intra");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Is_intra", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Is_intra", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":592
 *         Test to see if a comm is an intracommunicator
 *         """
 *         return not self.Is_inter()             # <<<<<<<<<<<<<<
 * 
 *     property is_intra:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Is_inter); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyBool_FromLong((!__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Is_intra", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":596
 *     property is_intra:
 *         """is intracommunicator"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Is_intra()
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_8is_intra___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_8is_intra___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":597
 *         """is intracommunicator"""
 *         def __get__(self):
 *             return self.Is_intra()             # <<<<<<<<<<<<<<
 * 
 *     def Get_topology(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Is_intra); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.is_intra.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":599
 *             return self.Is_intra()
 * 
 *     def Get_topology(self):             # <<<<<<<<<<<<<<
 *         """
 *         Determine the type of topology (if any)
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_46Get_topology(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_46Get_topology[] = "Comm.Get_topology(self)\n\n        Determine the type of topology (if any)\n        associated with a communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_46Get_topology(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_topo;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_topology");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_topology", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_topology", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":604
 *         associated with a communicator
 *         """
 *         cdef int topo = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         return topo
 */
  __pyx_v_topo = MPI_UNDEFINED;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":605
 *         """
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )             # <<<<<<<<<<<<<<
 *         return topo
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Topo_test(((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_topo))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":606
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         return topo             # <<<<<<<<<<<<<<
 * 
 *     property topology:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_topo); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_topology", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":610
 *     property topology:
 *         """communicator topology type"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_topology()
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_8topology___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_8topology___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":611
 *         """communicator topology type"""
 *         def __get__(self):
 *             return self.Get_topology()             # <<<<<<<<<<<<<<
 * 
 *     # Process Creation and Management
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_topology); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.topology.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":617
 * 
 *     @classmethod
 *     def Get_parent(cls):             # <<<<<<<<<<<<<<
 *         """
 *         Return the parent intercommunicator for this process
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_47Get_parent(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_47Get_parent[] = "Comm.Get_parent(type cls)\n\n        Return the parent intercommunicator for this process\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_47Get_parent(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Comm __pyx_v_comm;
  struct PyMPIIntercommObject *__pyx_v_parent = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_parent");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_parent", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_parent", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":621
 *         Return the parent intercommunicator for this process
 *         """
 *         cdef MPI_Comm comm = MPI_COMM_NULL             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_get_parent(&comm) )
 *         global __COMM_PARENT__
 */
  __pyx_v_comm = MPI_COMM_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":622
 *         """
 *         cdef MPI_Comm comm = MPI_COMM_NULL
 *         with nogil: CHKERR( MPI_Comm_get_parent(&comm) )             # <<<<<<<<<<<<<<
 *         global __COMM_PARENT__
 *         cdef Intercomm parent = __COMM_PARENT__
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_get_parent((&__pyx_v_comm))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":624
 *         with nogil: CHKERR( MPI_Comm_get_parent(&comm) )
 *         global __COMM_PARENT__
 *         cdef Intercomm parent = __COMM_PARENT__             # <<<<<<<<<<<<<<
 *         parent.ob_mpi = comm
 *         return parent
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_PARENT__));
  __pyx_v_parent = __pyx_v_6mpi4py_3MPI___COMM_PARENT__;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":625
 *         global __COMM_PARENT__
 *         cdef Intercomm parent = __COMM_PARENT__
 *         parent.ob_mpi = comm             # <<<<<<<<<<<<<<
 *         return parent
 * 
 */
  __pyx_v_parent->__pyx_base.ob_mpi = __pyx_v_comm;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":626
 *         cdef Intercomm parent = __COMM_PARENT__
 *         parent.ob_mpi = comm
 *         return parent             # <<<<<<<<<<<<<<
 * 
 *     def Disconnect(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_parent));
  __pyx_r = ((PyObject *)__pyx_v_parent);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_parent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_parent);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":628
 *         return parent
 * 
 *     def Disconnect(self):             # <<<<<<<<<<<<<<
 *         """
 *         Disconnect from a communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_48Disconnect(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_48Disconnect[] = "Comm.Disconnect(self)\n\n        Disconnect from a communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_48Disconnect(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Disconnect");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Disconnect", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Disconnect", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":632
 *         Disconnect from a communicator
 *         """
 *         with nogil: CHKERR( MPI_Comm_disconnect(             # <<<<<<<<<<<<<<
 *             &self.ob_mpi) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":633
 *         """
 *         with nogil: CHKERR( MPI_Comm_disconnect(
 *             &self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_disconnect((&((struct PyMPICommObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 632; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":632
 *         Disconnect from a communicator
 *         """
 *         with nogil: CHKERR( MPI_Comm_disconnect(             # <<<<<<<<<<<<<<
 *             &self.ob_mpi) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Disconnect", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":636
 * 
 *     @classmethod
 *     def Join(cls, int fd):             # <<<<<<<<<<<<<<
 *         """
 *         Create a intercommunicator by joining
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_49Join(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_49Join[] = "Comm.Join(type cls, int fd)\n\n        Create a intercommunicator by joining\n        two processes connected by a socket\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_49Join(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_fd;
  struct PyMPIIntercommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fd,0};
  __Pyx_RefNannySetupContext("Join");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fd);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Join") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_fd = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_fd == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Join", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Join", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":641
 *         two processes connected by a socket
 *         """
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_join(
 *             fd, &comm.ob_mpi) )
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intercomm)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 641; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIIntercommObject *)__pyx_t_1)));
  __pyx_v_comm = ((struct PyMPIIntercommObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":642
 *         """
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_join(             # <<<<<<<<<<<<<<
 *             fd, &comm.ob_mpi) )
 *         return comm
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":643
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_join(
 *             fd, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_join(__pyx_v_fd, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":642
 *         """
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_join(             # <<<<<<<<<<<<<<
 *             fd, &comm.ob_mpi) )
 *         return comm
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":644
 *         with nogil: CHKERR( MPI_Comm_join(
 *             fd, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     # Attributes
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Join", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":649
 *     # ----------
 * 
 *     def Get_attr(self, int keyval):             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve attribute value by key
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_50Get_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_50Get_attr[] = "Comm.Get_attr(self, int keyval)\n\n        Retrieve attribute value by key\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_50Get_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_keyval;
  void *__pyx_v_attrval;
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__keyval,0};
  __Pyx_RefNannySetupContext("Get_attr");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__keyval);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Get_attr") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 649; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_keyval = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 649; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_attr", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 649; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":653
 *         Retrieve attribute value by key
 *         """
 *         cdef void *attrval = NULL             # <<<<<<<<<<<<<<
 *         cdef int  flag = 0
 *         CHKERR(MPI_Comm_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 */
  __pyx_v_attrval = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":654
 *         """
 *         cdef void *attrval = NULL
 *         cdef int  flag = 0             # <<<<<<<<<<<<<<
 *         CHKERR(MPI_Comm_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 *         if not flag: return None
 */
  __pyx_v_flag = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":655
 *         cdef void *attrval = NULL
 *         cdef int  flag = 0
 *         CHKERR(MPI_Comm_get_attr(self.ob_mpi, keyval, &attrval, &flag) )             # <<<<<<<<<<<<<<
 *         if not flag: return None
 *         if attrval == NULL: return 0
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_get_attr(((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, __pyx_v_keyval, (&__pyx_v_attrval), (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":656
 *         cdef int  flag = 0
 *         CHKERR(MPI_Comm_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 *         if not flag: return None             # <<<<<<<<<<<<<<
 *         if attrval == NULL: return 0
 *         # MPI-1 predefined attribute keyvals
 */
  __pyx_t_2 = (!__pyx_v_flag);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":657
 *         CHKERR(MPI_Comm_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 *         if not flag: return None
 *         if attrval == NULL: return 0             # <<<<<<<<<<<<<<
 *         # MPI-1 predefined attribute keyvals
 *         if ((keyval == <int>MPI_TAG_UB) or
 */
  __pyx_t_2 = (__pyx_v_attrval == NULL);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_int_0);
    __pyx_r = __pyx_int_0;
    goto __pyx_L0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":659
 *         if attrval == NULL: return 0
 *         # MPI-1 predefined attribute keyvals
 *         if ((keyval == <int>MPI_TAG_UB) or             # <<<<<<<<<<<<<<
 *             (keyval == <int>MPI_HOST) or
 *             (keyval == <int>MPI_IO) or
 */
  __pyx_t_2 = (__pyx_v_keyval == ((int)MPI_TAG_UB));
  if (!__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":660
 *         # MPI-1 predefined attribute keyvals
 *         if ((keyval == <int>MPI_TAG_UB) or
 *             (keyval == <int>MPI_HOST) or             # <<<<<<<<<<<<<<
 *             (keyval == <int>MPI_IO) or
 *             (keyval == <int>MPI_WTIME_IS_GLOBAL)):
 */
    __pyx_t_3 = (__pyx_v_keyval == ((int)MPI_HOST));
    if (!__pyx_t_3) {

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":661
 *         if ((keyval == <int>MPI_TAG_UB) or
 *             (keyval == <int>MPI_HOST) or
 *             (keyval == <int>MPI_IO) or             # <<<<<<<<<<<<<<
 *             (keyval == <int>MPI_WTIME_IS_GLOBAL)):
 *             return (<int*>attrval)[0]
 */
      __pyx_t_4 = (__pyx_v_keyval == ((int)MPI_IO));
      if (!__pyx_t_4) {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":662
 *             (keyval == <int>MPI_HOST) or
 *             (keyval == <int>MPI_IO) or
 *             (keyval == <int>MPI_WTIME_IS_GLOBAL)):             # <<<<<<<<<<<<<<
 *             return (<int*>attrval)[0]
 *         # MPI-2 predefined attribute keyvals
 */
        __pyx_t_5 = (__pyx_v_keyval == ((int)MPI_WTIME_IS_GLOBAL));
        __pyx_t_6 = __pyx_t_5;
      } else {
        __pyx_t_6 = __pyx_t_4;
      }
      __pyx_t_4 = __pyx_t_6;
    } else {
      __pyx_t_4 = __pyx_t_3;
    }
    __pyx_t_3 = __pyx_t_4;
  } else {
    __pyx_t_3 = __pyx_t_2;
  }
  if (__pyx_t_3) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":663
 *             (keyval == <int>MPI_IO) or
 *             (keyval == <int>MPI_WTIME_IS_GLOBAL)):
 *             return (<int*>attrval)[0]             # <<<<<<<<<<<<<<
 *         # MPI-2 predefined attribute keyvals
 *         elif ((keyval == <int>MPI_UNIVERSE_SIZE) or
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = PyInt_FromLong((((int *)__pyx_v_attrval)[0])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;
    goto __pyx_L8;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":665
 *             return (<int*>attrval)[0]
 *         # MPI-2 predefined attribute keyvals
 *         elif ((keyval == <int>MPI_UNIVERSE_SIZE) or             # <<<<<<<<<<<<<<
 *               (keyval == <int>MPI_APPNUM) or
 *               (keyval == <int>MPI_LASTUSEDCODE)):
 */
  __pyx_t_3 = (__pyx_v_keyval == ((int)MPI_UNIVERSE_SIZE));
  if (!__pyx_t_3) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":666
 *         # MPI-2 predefined attribute keyvals
 *         elif ((keyval == <int>MPI_UNIVERSE_SIZE) or
 *               (keyval == <int>MPI_APPNUM) or             # <<<<<<<<<<<<<<
 *               (keyval == <int>MPI_LASTUSEDCODE)):
 *             return (<int*>attrval)[0]
 */
    __pyx_t_2 = (__pyx_v_keyval == ((int)MPI_APPNUM));
    if (!__pyx_t_2) {

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":667
 *         elif ((keyval == <int>MPI_UNIVERSE_SIZE) or
 *               (keyval == <int>MPI_APPNUM) or
 *               (keyval == <int>MPI_LASTUSEDCODE)):             # <<<<<<<<<<<<<<
 *             return (<int*>attrval)[0]
 *         # user-defined attribute keyval
 */
      __pyx_t_4 = (__pyx_v_keyval == ((int)MPI_LASTUSEDCODE));
      __pyx_t_6 = __pyx_t_4;
    } else {
      __pyx_t_6 = __pyx_t_2;
    }
    __pyx_t_2 = __pyx_t_6;
  } else {
    __pyx_t_2 = __pyx_t_3;
  }
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":668
 *               (keyval == <int>MPI_APPNUM) or
 *               (keyval == <int>MPI_LASTUSEDCODE)):
 *             return (<int*>attrval)[0]             # <<<<<<<<<<<<<<
 *         # user-defined attribute keyval
 *         elif keyval in comm_keyval:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = PyInt_FromLong((((int *)__pyx_v_attrval)[0])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;
    goto __pyx_L8;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":670
 *             return (<int*>attrval)[0]
 *         # user-defined attribute keyval
 *         elif keyval in comm_keyval:             # <<<<<<<<<<<<<<
 *             return <object>attrval
 *         else:
 */
  __pyx_t_7 = PyInt_FromLong(__pyx_v_keyval); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  if (unlikely(((PyObject *)__pyx_v_6mpi4py_3MPI_comm_keyval) == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_2 = ((PyDict_Contains(((PyObject *)__pyx_v_6mpi4py_3MPI_comm_keyval), __pyx_t_7))); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":671
 *         # user-defined attribute keyval
 *         elif keyval in comm_keyval:
 *             return <object>attrval             # <<<<<<<<<<<<<<
 *         else:
 *             return PyLong_FromVoidPtr(attrval)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_attrval));
    __pyx_r = ((PyObject *)__pyx_v_attrval);
    goto __pyx_L0;
    goto __pyx_L8;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":673
 *             return <object>attrval
 *         else:
 *             return PyLong_FromVoidPtr(attrval)             # <<<<<<<<<<<<<<
 * 
 *     def Set_attr(self, int keyval, object attrval):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = PyLong_FromVoidPtr(__pyx_v_attrval); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;
  }
  __pyx_L8:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":675
 *             return PyLong_FromVoidPtr(attrval)
 * 
 *     def Set_attr(self, int keyval, object attrval):             # <<<<<<<<<<<<<<
 *         """
 *         Store attribute value associated with a key
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_51Set_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_51Set_attr[] = "Comm.Set_attr(self, int keyval, attrval)\n\n        Store attribute value associated with a key\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_51Set_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_keyval;
  PyObject *__pyx_v_attrval = 0;
  void *__pyx_v_ptrval;
  int __pyx_v_incref;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__keyval,&__pyx_n_s__attrval,0};
  __Pyx_RefNannySetupContext("Set_attr");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__keyval);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__attrval);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Set_attr", 1, 2, 2, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Set_attr") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_keyval = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_attrval = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_attr", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Set_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":679
 *         Store attribute value associated with a key
 *         """
 *         cdef void *ptrval = NULL             # <<<<<<<<<<<<<<
 *         cdef int incref = 0
 *         if keyval in comm_keyval:
 */
  __pyx_v_ptrval = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":680
 *         """
 *         cdef void *ptrval = NULL
 *         cdef int incref = 0             # <<<<<<<<<<<<<<
 *         if keyval in comm_keyval:
 *             ptrval = <void*>attrval
 */
  __pyx_v_incref = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":681
 *         cdef void *ptrval = NULL
 *         cdef int incref = 0
 *         if keyval in comm_keyval:             # <<<<<<<<<<<<<<
 *             ptrval = <void*>attrval
 *             incref = 1
 */
  __pyx_t_1 = PyInt_FromLong(__pyx_v_keyval); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely(((PyObject *)__pyx_v_6mpi4py_3MPI_comm_keyval) == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_2 = ((PyDict_Contains(((PyObject *)__pyx_v_6mpi4py_3MPI_comm_keyval), __pyx_t_1))); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":682
 *         cdef int incref = 0
 *         if keyval in comm_keyval:
 *             ptrval = <void*>attrval             # <<<<<<<<<<<<<<
 *             incref = 1
 *         else:
 */
    __pyx_v_ptrval = ((void *)__pyx_v_attrval);

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":683
 *         if keyval in comm_keyval:
 *             ptrval = <void*>attrval
 *             incref = 1             # <<<<<<<<<<<<<<
 *         else:
 *             ptrval = PyLong_AsVoidPtr(attrval)
 */
    __pyx_v_incref = 1;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":685
 *             incref = 1
 *         else:
 *             ptrval = PyLong_AsVoidPtr(attrval)             # <<<<<<<<<<<<<<
 *             incref = 0
 *         CHKERR(MPI_Comm_set_attr(self.ob_mpi, keyval, ptrval) )
 */
    __pyx_v_ptrval = PyLong_AsVoidPtr(__pyx_v_attrval);

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":686
 *         else:
 *             ptrval = PyLong_AsVoidPtr(attrval)
 *             incref = 0             # <<<<<<<<<<<<<<
 *         CHKERR(MPI_Comm_set_attr(self.ob_mpi, keyval, ptrval) )
 *         if incref: Py_INCREF(attrval)
 */
    __pyx_v_incref = 0;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":687
 *             ptrval = PyLong_AsVoidPtr(attrval)
 *             incref = 0
 *         CHKERR(MPI_Comm_set_attr(self.ob_mpi, keyval, ptrval) )             # <<<<<<<<<<<<<<
 *         if incref: Py_INCREF(attrval)
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_set_attr(((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, __pyx_v_keyval, __pyx_v_ptrval)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":688
 *             incref = 0
 *         CHKERR(MPI_Comm_set_attr(self.ob_mpi, keyval, ptrval) )
 *         if incref: Py_INCREF(attrval)             # <<<<<<<<<<<<<<
 * 
 *     def Delete_attr(self, int keyval):
 */
  if (__pyx_v_incref) {
    Py_INCREF(__pyx_v_attrval);
    goto __pyx_L7;
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Set_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":690
 *         if incref: Py_INCREF(attrval)
 * 
 *     def Delete_attr(self, int keyval):             # <<<<<<<<<<<<<<
 *         """
 *         Delete attribute value associated with a key
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_52Delete_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_52Delete_attr[] = "Comm.Delete_attr(self, int keyval)\n\n        Delete attribute value associated with a key\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_52Delete_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_keyval;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__keyval,0};
  __Pyx_RefNannySetupContext("Delete_attr");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__keyval);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Delete_attr") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 690; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_keyval = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 690; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Delete_attr", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 690; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Delete_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":694
 *         Delete attribute value associated with a key
 *         """
 *         CHKERR(MPI_Comm_delete_attr(self.ob_mpi, keyval) )             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_delete_attr(((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, __pyx_v_keyval)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Delete_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":697
 * 
 *     @classmethod
 *     def Create_keyval(cls, copy_fn=None, delete_fn=None):             # <<<<<<<<<<<<<<
 *         """
 *         Create a new attribute key for communicators
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_53Create_keyval(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_53Create_keyval[] = "Comm.Create_keyval(type cls, copy_fn=None, delete_fn=None)\n\n        Create a new attribute key for communicators\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_53Create_keyval(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_copy_fn = 0;
  PyObject *__pyx_v_delete_fn = 0;
  int __pyx_v_keyval;
  MPI_Comm_copy_attr_function *__pyx_v__copy;
  MPI_Comm_delete_attr_function *__pyx_v__del;
  void *__pyx_v_extra_state;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__copy_fn,&__pyx_n_s__delete_fn,0};
  __Pyx_RefNannySetupContext("Create_keyval");
  {
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__copy_fn);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__delete_fn);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create_keyval") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 697; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_copy_fn = values[0];
    __pyx_v_delete_fn = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_keyval", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 697; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Create_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":701
 *         Create a new attribute key for communicators
 *         """
 *         cdef int keyval = MPI_KEYVAL_INVALID             # <<<<<<<<<<<<<<
 *         cdef MPI_Comm_copy_attr_function *_copy = comm_attr_copy_fn
 *         cdef MPI_Comm_delete_attr_function *_del = comm_attr_delete_fn
 */
  __pyx_v_keyval = MPI_KEYVAL_INVALID;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":702
 *         """
 *         cdef int keyval = MPI_KEYVAL_INVALID
 *         cdef MPI_Comm_copy_attr_function *_copy = comm_attr_copy_fn             # <<<<<<<<<<<<<<
 *         cdef MPI_Comm_delete_attr_function *_del = comm_attr_delete_fn
 *         cdef void *extra_state = NULL
 */
  __pyx_v__copy = __pyx_f_6mpi4py_3MPI_comm_attr_copy_fn;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":703
 *         cdef int keyval = MPI_KEYVAL_INVALID
 *         cdef MPI_Comm_copy_attr_function *_copy = comm_attr_copy_fn
 *         cdef MPI_Comm_delete_attr_function *_del = comm_attr_delete_fn             # <<<<<<<<<<<<<<
 *         cdef void *extra_state = NULL
 *         CHKERR( MPI_Comm_create_keyval(_copy, _del, &keyval, extra_state) )
 */
  __pyx_v__del = __pyx_f_6mpi4py_3MPI_comm_attr_delete_fn;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":704
 *         cdef MPI_Comm_copy_attr_function *_copy = comm_attr_copy_fn
 *         cdef MPI_Comm_delete_attr_function *_del = comm_attr_delete_fn
 *         cdef void *extra_state = NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_create_keyval(_copy, _del, &keyval, extra_state) )
 *         comm_keyval_new(keyval, copy_fn, delete_fn)
 */
  __pyx_v_extra_state = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":705
 *         cdef MPI_Comm_delete_attr_function *_del = comm_attr_delete_fn
 *         cdef void *extra_state = NULL
 *         CHKERR( MPI_Comm_create_keyval(_copy, _del, &keyval, extra_state) )             # <<<<<<<<<<<<<<
 *         comm_keyval_new(keyval, copy_fn, delete_fn)
 *         return keyval
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_create_keyval(__pyx_v__copy, __pyx_v__del, (&__pyx_v_keyval), __pyx_v_extra_state)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":706
 *         cdef void *extra_state = NULL
 *         CHKERR( MPI_Comm_create_keyval(_copy, _del, &keyval, extra_state) )
 *         comm_keyval_new(keyval, copy_fn, delete_fn)             # <<<<<<<<<<<<<<
 *         return keyval
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_comm_keyval_new(__pyx_v_keyval, __pyx_v_copy_fn, __pyx_v_delete_fn); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":707
 *         CHKERR( MPI_Comm_create_keyval(_copy, _del, &keyval, extra_state) )
 *         comm_keyval_new(keyval, copy_fn, delete_fn)
 *         return keyval             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Create_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":710
 * 
 *     @classmethod
 *     def Free_keyval(cls, int keyval):             # <<<<<<<<<<<<<<
 *         """
 *         Free and attribute key for communicators
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_54Free_keyval(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_54Free_keyval[] = "Comm.Free_keyval(type cls, int keyval)\n\n        Free and attribute key for communicators\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_54Free_keyval(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_keyval;
  int __pyx_v_keyval_save;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__keyval,0};
  __Pyx_RefNannySetupContext("Free_keyval");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__keyval);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Free_keyval") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_keyval = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Free_keyval", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Free_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":714
 *         Free and attribute key for communicators
 *         """
 *         cdef int keyval_save = keyval             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_free_keyval (&keyval) )
 *         comm_keyval_del(keyval_save)
 */
  __pyx_v_keyval_save = __pyx_v_keyval;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":715
 *         """
 *         cdef int keyval_save = keyval
 *         CHKERR( MPI_Comm_free_keyval (&keyval) )             # <<<<<<<<<<<<<<
 *         comm_keyval_del(keyval_save)
 *         return keyval
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_free_keyval((&__pyx_v_keyval))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":716
 *         cdef int keyval_save = keyval
 *         CHKERR( MPI_Comm_free_keyval (&keyval) )
 *         comm_keyval_del(keyval_save)             # <<<<<<<<<<<<<<
 *         return keyval
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_comm_keyval_del(__pyx_v_keyval_save); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":717
 *         CHKERR( MPI_Comm_free_keyval (&keyval) )
 *         comm_keyval_del(keyval_save)
 *         return keyval             # <<<<<<<<<<<<<<
 * 
 *     # Error handling
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Free_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":722
 *     # --------------
 * 
 *     def Get_errhandler(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_55Get_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_55Get_errhandler[] = "Comm.Get_errhandler(self)\n\n        Get the error handler for a communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_55Get_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_errhandler");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_errhandler", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_errhandler", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":726
 *         Get the error handler for a communicator
 *         """
 *         cdef Errhandler errhandler = <Errhandler>Errhandler.__new__(Errhandler)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )
 *         return errhandler
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Errhandler)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIErrhandlerObject *)__pyx_t_1)));
  __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":727
 *         """
 *         cdef Errhandler errhandler = <Errhandler>Errhandler.__new__(Errhandler)
 *         CHKERR( MPI_Comm_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return errhandler
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_get_errhandler(((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_errhandler->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":728
 *         cdef Errhandler errhandler = <Errhandler>Errhandler.__new__(Errhandler)
 *         CHKERR( MPI_Comm_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )
 *         return errhandler             # <<<<<<<<<<<<<<
 * 
 *     def Set_errhandler(self, Errhandler errhandler not None):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_errhandler));
  __pyx_r = ((PyObject *)__pyx_v_errhandler);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_errhandler);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":730
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler not None):             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_56Set_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_56Set_errhandler[] = "Comm.Set_errhandler(self, Errhandler errhandler)\n\n        Set the error handler for a communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_56Set_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__errhandler,0};
  __Pyx_RefNannySetupContext("Set_errhandler");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__errhandler);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Set_errhandler") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_errhandler", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Set_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_errhandler), __pyx_ptype_6mpi4py_3MPI_Errhandler, 0, "errhandler", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":734
 *         Set the error handler for a communicator
 *         """
 *         CHKERR( MPI_Comm_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Call_errhandler(self, int errorcode):
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_set_errhandler(((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, __pyx_v_errhandler->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Set_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":736
 *         CHKERR( MPI_Comm_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )
 * 
 *     def Call_errhandler(self, int errorcode):             # <<<<<<<<<<<<<<
 *         """
 *         Call the error handler installed on a communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_57Call_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_57Call_errhandler[] = "Comm.Call_errhandler(self, int errorcode)\n\n        Call the error handler installed on a communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_57Call_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_errorcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__errorcode,0};
  __Pyx_RefNannySetupContext("Call_errhandler");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__errorcode);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Call_errhandler") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_errorcode = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Call_errhandler", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Call_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":740
 *         Call the error handler installed on a communicator
 *         """
 *         CHKERR( MPI_Comm_call_errhandler(self.ob_mpi, errorcode) )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_call_errhandler(((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, __pyx_v_errorcode)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Call_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":743
 * 
 * 
 *     def Abort(self, int errorcode=0):             # <<<<<<<<<<<<<<
 *         """
 *         Terminate MPI execution environment
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_58Abort(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_58Abort[] = "Comm.Abort(self, int errorcode=0)\n\n        Terminate MPI execution environment\n\n        .. warning:: This is a direct call, use it with care!!!.\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_58Abort(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_errorcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__errorcode,0};
  __Pyx_RefNannySetupContext("Abort");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__errorcode);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Abort") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_errorcode = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_errorcode = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Abort", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Abort", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":749
 *         .. warning:: This is a direct call, use it with care!!!.
 *         """
 *         CHKERR( MPI_Abort(self.ob_mpi, errorcode) )             # <<<<<<<<<<<<<<
 * 
 *     # Naming Objects
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Abort(((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, __pyx_v_errorcode)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Abort", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":754
 *     # --------------
 * 
 *     def Get_name(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get the print name for this communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_59Get_name(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_59Get_name[] = "Comm.Get_name(self)\n\n        Get the print name for this communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_59Get_name(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  char __pyx_v_name[(MPI_MAX_OBJECT_NAME + 1)];
  int __pyx_v_nlen;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_name");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_name", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_name", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":759
 *         """
 *         cdef char name[MPI_MAX_OBJECT_NAME+1]
 *         cdef int nlen = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_get_name(self.ob_mpi, name, &nlen) )
 *         return tompistr(name, nlen)
 */
  __pyx_v_nlen = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":760
 *         cdef char name[MPI_MAX_OBJECT_NAME+1]
 *         cdef int nlen = 0
 *         CHKERR( MPI_Comm_get_name(self.ob_mpi, name, &nlen) )             # <<<<<<<<<<<<<<
 *         return tompistr(name, nlen)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_get_name(((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, __pyx_v_name, (&__pyx_v_nlen))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":761
 *         cdef int nlen = 0
 *         CHKERR( MPI_Comm_get_name(self.ob_mpi, name, &nlen) )
 *         return tompistr(name, nlen)             # <<<<<<<<<<<<<<
 * 
 *     def Set_name(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_tompistr(__pyx_v_name, __pyx_v_nlen); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":763
 *         return tompistr(name, nlen)
 * 
 *     def Set_name(self, name):             # <<<<<<<<<<<<<<
 *         """
 *         Set the print name for this communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_60Set_name(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_60Set_name[] = "Comm.Set_name(self, name)\n\n        Set the print name for this communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_60Set_name(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  char *__pyx_v_cname;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__name,0};
  __Pyx_RefNannySetupContext("Set_name");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Set_name") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_name = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_name", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Set_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_name);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":767
 *         Set the print name for this communicator
 *         """
 *         cdef char *cname = NULL             # <<<<<<<<<<<<<<
 *         name = asmpistr(name, &cname, NULL)
 *         CHKERR( MPI_Comm_set_name(self.ob_mpi, cname) )
 */
  __pyx_v_cname = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":768
 *         """
 *         cdef char *cname = NULL
 *         name = asmpistr(name, &cname, NULL)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_set_name(self.ob_mpi, cname) )
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_name, (&__pyx_v_cname), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_name);
  __pyx_v_name = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":769
 *         cdef char *cname = NULL
 *         name = asmpistr(name, &cname, NULL)
 *         CHKERR( MPI_Comm_set_name(self.ob_mpi, cname) )             # <<<<<<<<<<<<<<
 * 
 *     property name:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_set_name(((struct PyMPICommObject *)__pyx_v_self)->ob_mpi, __pyx_v_cname)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Set_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":773
 *     property name:
 *         """communicator name"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_name()
 *         def __set__(self, value):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_4name___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_4name___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":774
 *         """communicator name"""
 *         def __get__(self):
 *             return self.Get_name()             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self.Set_name(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 774; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 774; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":775
 *         def __get__(self):
 *             return self.Get_name()
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self.Set_name(value)
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_4Comm_4name_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_4Comm_4name_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":776
 *             return self.Get_name()
 *         def __set__(self, value):
 *             self.Set_name(value)             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Set_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_value);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.name.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":781
 *     # --------------
 * 
 *     def py2f(self):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_61py2f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_61py2f[] = "Comm.py2f(self)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_61py2f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("py2f");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("py2f", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "py2f", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":784
 *         """
 *         """
 *         return MPI_Comm_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_to_py_MPI_Fint(MPI_Comm_c2f(((struct PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.py2f", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":787
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_62f2py(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_62f2py[] = "Comm.f2py(type cls, arg)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_62f2py(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_arg = 0;
  struct PyMPICommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Fint __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__arg,0};
  __Pyx_RefNannySetupContext("f2py");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__arg);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "f2py") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":790
 *         """
 *         """
 *         cdef Comm comm = <Comm>cls()             # <<<<<<<<<<<<<<
 *         comm.ob_mpi = MPI_Comm_f2c(arg)
 *         return comm
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPICommObject *)__pyx_t_1)));
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":791
 *         """
 *         cdef Comm comm = <Comm>cls()
 *         comm.ob_mpi = MPI_Comm_f2c(arg)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_2 = __Pyx_PyInt_from_py_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_2 == (MPI_Fint)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm->ob_mpi = MPI_Comm_f2c(__pyx_t_2);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":792
 *         cdef Comm comm = <Comm>cls()
 *         comm.ob_mpi = MPI_Comm_f2c(arg)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     # Python Communication
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":797
 *     # --------------------
 *     #
 *     def send(self, obj=None, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """Send"""
 *         cdef MPI_Comm comm = self.ob_mpi
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_63send(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_63send[] = "Comm.send(self, obj=None, int dest=0, int tag=0)\nSend";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_63send(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_obj = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__obj,&__pyx_n_s__dest,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("send");
  {
    PyObject* values[3] = {0,0,0};
    values[0] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__obj);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "send") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("send", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.send", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":799
 *     def send(self, obj=None, int dest=0, int tag=0):
 *         """Send"""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_send(obj, dest, tag, comm)
 *     #
 */
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":800
 *         """Send"""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_send(obj, dest, tag, comm)             # <<<<<<<<<<<<<<
 *     #
 *     def bsend(self, obj=None, int dest=0, int tag=0):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_send(__pyx_v_obj, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.send", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":802
 *         return PyMPI_send(obj, dest, tag, comm)
 *     #
 *     def bsend(self, obj=None, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """Send in buffered mode"""
 *         cdef MPI_Comm comm = self.ob_mpi
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_64bsend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_64bsend[] = "Comm.bsend(self, obj=None, int dest=0, int tag=0)\nSend in buffered mode";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_64bsend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_obj = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__obj,&__pyx_n_s__dest,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("bsend");
  {
    PyObject* values[3] = {0,0,0};
    values[0] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__obj);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "bsend") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("bsend", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.bsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":804
 *     def bsend(self, obj=None, int dest=0, int tag=0):
 *         """Send in buffered mode"""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_bsend(obj, dest, tag, comm)
 *     #
 */
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":805
 *         """Send in buffered mode"""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_bsend(obj, dest, tag, comm)             # <<<<<<<<<<<<<<
 *     #
 *     def ssend(self, obj=None, int dest=0, int tag=0):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_bsend(__pyx_v_obj, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.bsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":807
 *         return PyMPI_bsend(obj, dest, tag, comm)
 *     #
 *     def ssend(self, obj=None, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """Send in synchronous mode"""
 *         cdef MPI_Comm comm = self.ob_mpi
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_65ssend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_65ssend[] = "Comm.ssend(self, obj=None, int dest=0, int tag=0)\nSend in synchronous mode";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_65ssend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_obj = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__obj,&__pyx_n_s__dest,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("ssend");
  {
    PyObject* values[3] = {0,0,0};
    values[0] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__obj);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "ssend") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ssend", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.ssend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":809
 *     def ssend(self, obj=None, int dest=0, int tag=0):
 *         """Send in synchronous mode"""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_ssend(obj, dest, tag, comm)
 *     #
 */
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":810
 *         """Send in synchronous mode"""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_ssend(obj, dest, tag, comm)             # <<<<<<<<<<<<<<
 *     #
 *     def recv(self, obj=None, int source=0, int tag=0, Status status=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_ssend(__pyx_v_obj, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.ssend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":812
 *         return PyMPI_ssend(obj, dest, tag, comm)
 *     #
 *     def recv(self, obj=None, int source=0, int tag=0, Status status=None):             # <<<<<<<<<<<<<<
 *         """Receive"""
 *         cdef MPI_Comm comm = self.ob_mpi
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_66recv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_66recv[] = "Comm.recv(self, obj=None, int source=0, int tag=0, Status status=None)\nReceive";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_66recv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_obj = 0;
  int __pyx_v_source;
  int __pyx_v_tag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  MPI_Comm __pyx_v_comm;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__obj,&__pyx_n_s__source,&__pyx_n_s__tag,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("recv");
  {
    PyObject* values[4] = {0,0,0,0};
    values[0] = ((PyObject *)Py_None);
    values[3] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__obj);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__source);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "recv") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    if (values[1]) {
      __pyx_v_source = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_source = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("recv", 0, 0, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":814
 *     def recv(self, obj=None, int source=0, int tag=0, Status status=None):
 *         """Receive"""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         return PyMPI_recv(obj, source, tag, comm, statusp)
 */
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":815
 *         """Receive"""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         return PyMPI_recv(obj, source, tag, comm, statusp)
 *     #
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":816
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         return PyMPI_recv(obj, source, tag, comm, statusp)             # <<<<<<<<<<<<<<
 *     #
 *     def sendrecv(self,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_recv(__pyx_v_obj, __pyx_v_source, __pyx_v_tag, __pyx_v_comm, __pyx_v_statusp); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":818
 *         return PyMPI_recv(obj, source, tag, comm, statusp)
 *     #
 *     def sendrecv(self,             # <<<<<<<<<<<<<<
 *                  sendobj=None, int dest=0,   int sendtag=0,
 *                  recvobj=None, int source=0, int recvtag=0,
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_67sendrecv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_67sendrecv[] = "Comm.sendrecv(self, sendobj=None, int dest=0, int sendtag=0, recvobj=None, int source=0, int recvtag=0, Status status=None)\nSend and Receive";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_67sendrecv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendobj = 0;
  int __pyx_v_dest;
  int __pyx_v_sendtag;
  PyObject *__pyx_v_recvobj = 0;
  int __pyx_v_source;
  int __pyx_v_recvtag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  MPI_Comm __pyx_v_comm;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendobj,&__pyx_n_s__dest,&__pyx_n_s__sendtag,&__pyx_n_s__recvobj,&__pyx_n_s__source,&__pyx_n_s__recvtag,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("sendrecv");
  {
    PyObject* values[7] = {0,0,0,0,0,0,0};

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":819
 *     #
 *     def sendrecv(self,
 *                  sendobj=None, int dest=0,   int sendtag=0,             # <<<<<<<<<<<<<<
 *                  recvobj=None, int source=0, int recvtag=0,
 *                  Status status=None):
 */
    values[0] = ((PyObject *)Py_None);

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":820
 *     def sendrecv(self,
 *                  sendobj=None, int dest=0,   int sendtag=0,
 *                  recvobj=None, int source=0, int recvtag=0,             # <<<<<<<<<<<<<<
 *                  Status status=None):
 *         """Send and Receive"""
 */
    values[3] = ((PyObject *)Py_None);

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":821
 *                  sendobj=None, int dest=0,   int sendtag=0,
 *                  recvobj=None, int source=0, int recvtag=0,
 *                  Status status=None):             # <<<<<<<<<<<<<<
 *         """Send and Receive"""
 *         cdef MPI_Comm comm = self.ob_mpi
 */
    values[6] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendobj);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendtag);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvobj);
          if (value) { values[3] = value; kw_args--; }
        }
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__source);
          if (value) { values[4] = value; kw_args--; }
        }
        case  5:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvtag);
          if (value) { values[5] = value; kw_args--; }
        }
        case  6:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[6] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "sendrecv") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendobj = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_sendtag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_sendtag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_sendtag = ((int)0);
    }
    __pyx_v_recvobj = values[3];
    if (values[4]) {
      __pyx_v_source = __Pyx_PyInt_AsInt(values[4]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_source = ((int)0);
    }
    if (values[5]) {
      __pyx_v_recvtag = __Pyx_PyInt_AsInt(values[5]); if (unlikely((__pyx_v_recvtag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_recvtag = ((int)0);
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[6]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sendrecv", 0, 0, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.sendrecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":823
 *                  Status status=None):
 *         """Send and Receive"""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         return PyMPI_sendrecv(sendobj, dest,   sendtag,
 */
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":824
 *         """Send and Receive"""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         return PyMPI_sendrecv(sendobj, dest,   sendtag,
 *                               recvobj, source, recvtag,
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":825
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         return PyMPI_sendrecv(sendobj, dest,   sendtag,             # <<<<<<<<<<<<<<
 *                               recvobj, source, recvtag,
 *                               comm, statusp)
 */
  __Pyx_XDECREF(__pyx_r);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":827
 *         return PyMPI_sendrecv(sendobj, dest,   sendtag,
 *                               recvobj, source, recvtag,
 *                               comm, statusp)             # <<<<<<<<<<<<<<
 *     #
 *     def isend(self, obj=None, int dest=0, int tag=0):
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_sendrecv(__pyx_v_sendobj, __pyx_v_dest, __pyx_v_sendtag, __pyx_v_recvobj, __pyx_v_source, __pyx_v_recvtag, __pyx_v_comm, __pyx_v_statusp); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.sendrecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":829
 *                               comm, statusp)
 *     #
 *     def isend(self, obj=None, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """Nonblocking send"""
 *         cdef MPI_Comm comm = self.ob_mpi
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_68isend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_68isend[] = "Comm.isend(self, obj=None, int dest=0, int tag=0)\nNonblocking send";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_68isend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_obj = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  MPI_Comm __pyx_v_comm;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__obj,&__pyx_n_s__dest,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("isend");
  {
    PyObject* values[3] = {0,0,0};
    values[0] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__obj);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "isend") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isend", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.isend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":831
 *     def isend(self, obj=None, int dest=0, int tag=0):
 *         """Nonblocking send"""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>Request.__new__(Request)
 *         request.ob_buf = PyMPI_isend(obj, dest, tag, comm, &request.ob_mpi)
 */
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":832
 *         """Nonblocking send"""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef Request request = <Request>Request.__new__(Request)             # <<<<<<<<<<<<<<
 *         request.ob_buf = PyMPI_isend(obj, dest, tag, comm, &request.ob_mpi)
 *         return request
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIRequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":833
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef Request request = <Request>Request.__new__(Request)
 *         request.ob_buf = PyMPI_isend(obj, dest, tag, comm, &request.ob_mpi)             # <<<<<<<<<<<<<<
 *         return request
 *     #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_isend(__pyx_v_obj, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm, (&__pyx_v_request->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":834
 *         cdef Request request = <Request>Request.__new__(Request)
 *         request.ob_buf = PyMPI_isend(obj, dest, tag, comm, &request.ob_mpi)
 *         return request             # <<<<<<<<<<<<<<
 *     #
 *     def ibsend(self, obj=None, int dest=0, int tag=0):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.isend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":836
 *         return request
 *     #
 *     def ibsend(self, obj=None, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """Nonblocking send in buffered mode"""
 *         cdef MPI_Comm comm = self.ob_mpi
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_69ibsend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_69ibsend[] = "Comm.ibsend(self, obj=None, int dest=0, int tag=0)\nNonblocking send in buffered mode";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_69ibsend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_obj = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  MPI_Comm __pyx_v_comm;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__obj,&__pyx_n_s__dest,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("ibsend");
  {
    PyObject* values[3] = {0,0,0};
    values[0] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__obj);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "ibsend") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ibsend", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.ibsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":838
 *     def ibsend(self, obj=None, int dest=0, int tag=0):
 *         """Nonblocking send in buffered mode"""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>Request.__new__(Request)
 *         request.ob_buf = PyMPI_ibsend(obj, dest, tag, comm, &request.ob_mpi)
 */
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":839
 *         """Nonblocking send in buffered mode"""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef Request request = <Request>Request.__new__(Request)             # <<<<<<<<<<<<<<
 *         request.ob_buf = PyMPI_ibsend(obj, dest, tag, comm, &request.ob_mpi)
 *         return request
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIRequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":840
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef Request request = <Request>Request.__new__(Request)
 *         request.ob_buf = PyMPI_ibsend(obj, dest, tag, comm, &request.ob_mpi)             # <<<<<<<<<<<<<<
 *         return request
 *     #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_ibsend(__pyx_v_obj, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm, (&__pyx_v_request->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":841
 *         cdef Request request = <Request>Request.__new__(Request)
 *         request.ob_buf = PyMPI_ibsend(obj, dest, tag, comm, &request.ob_mpi)
 *         return request             # <<<<<<<<<<<<<<
 *     #
 *     def issend(self, obj=None, int dest=0, int tag=0):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.ibsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":843
 *         return request
 *     #
 *     def issend(self, obj=None, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """Nonblocking send in synchronous mode"""
 *         cdef MPI_Comm comm = self.ob_mpi
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_70issend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_70issend[] = "Comm.issend(self, obj=None, int dest=0, int tag=0)\nNonblocking send in synchronous mode";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_70issend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_obj = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  MPI_Comm __pyx_v_comm;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__obj,&__pyx_n_s__dest,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("issend");
  {
    PyObject* values[3] = {0,0,0};
    values[0] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__obj);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "issend") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("issend", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.issend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":845
 *     def issend(self, obj=None, int dest=0, int tag=0):
 *         """Nonblocking send in synchronous mode"""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>Request.__new__(Request)
 *         request.ob_buf = PyMPI_issend(obj, dest, tag, comm, &request.ob_mpi)
 */
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":846
 *         """Nonblocking send in synchronous mode"""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef Request request = <Request>Request.__new__(Request)             # <<<<<<<<<<<<<<
 *         request.ob_buf = PyMPI_issend(obj, dest, tag, comm, &request.ob_mpi)
 *         return request
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIRequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":847
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef Request request = <Request>Request.__new__(Request)
 *         request.ob_buf = PyMPI_issend(obj, dest, tag, comm, &request.ob_mpi)             # <<<<<<<<<<<<<<
 *         return request
 *     #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_issend(__pyx_v_obj, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm, (&__pyx_v_request->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":848
 *         cdef Request request = <Request>Request.__new__(Request)
 *         request.ob_buf = PyMPI_issend(obj, dest, tag, comm, &request.ob_mpi)
 *         return request             # <<<<<<<<<<<<<<
 *     #
 *     def irecv(self, obj=None, int dest=0, int tag=0):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.issend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":850
 *         return request
 *     #
 *     def irecv(self, obj=None, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef Request request = <Request>Request.__new__(Request)
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_71irecv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_71irecv[] = "Comm.irecv(self, obj=None, int dest=0, int tag=0)";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_71irecv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_obj = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  MPI_Comm __pyx_v_comm;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__obj,&__pyx_n_s__dest,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("irecv");
  {
    PyObject* values[3] = {0,0,0};
    values[0] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__obj);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dest);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "irecv") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 850; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    if (values[1]) {
      __pyx_v_dest = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 850; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = ((int)0);
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 850; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("irecv", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 850; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.irecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":851
 *     #
 *     def irecv(self, obj=None, int dest=0, int tag=0):
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>Request.__new__(Request)
 *         request.ob_buf = PyMPI_irecv(obj, dest, tag, comm, &request.ob_mpi)
 */
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":852
 *     def irecv(self, obj=None, int dest=0, int tag=0):
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef Request request = <Request>Request.__new__(Request)             # <<<<<<<<<<<<<<
 *         request.ob_buf = PyMPI_irecv(obj, dest, tag, comm, &request.ob_mpi)
 *         return request
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIRequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":853
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef Request request = <Request>Request.__new__(Request)
 *         request.ob_buf = PyMPI_irecv(obj, dest, tag, comm, &request.ob_mpi)             # <<<<<<<<<<<<<<
 *         return request
 *     #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_irecv(__pyx_v_obj, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm, (&__pyx_v_request->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":854
 *         cdef Request request = <Request>Request.__new__(Request)
 *         request.ob_buf = PyMPI_irecv(obj, dest, tag, comm, &request.ob_mpi)
 *         return request             # <<<<<<<<<<<<<<
 *     #
 *     def barrier(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.irecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":856
 *         return request
 *     #
 *     def barrier(self):             # <<<<<<<<<<<<<<
 *         "Barrier"
 *         cdef MPI_Comm comm = self.ob_mpi
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_72barrier(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_72barrier[] = "Comm.barrier(self)\nBarrier";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_72barrier(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("barrier");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("barrier", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "barrier", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":858
 *     def barrier(self):
 *         "Barrier"
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_barrier(comm)
 *     #
 */
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":859
 *         "Barrier"
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_barrier(comm)             # <<<<<<<<<<<<<<
 *     #
 *     def bcast(self, obj=None, int root=0):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_barrier(__pyx_v_comm); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.barrier", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":861
 *         return PyMPI_barrier(comm)
 *     #
 *     def bcast(self, obj=None, int root=0):             # <<<<<<<<<<<<<<
 *         """Broadcast"""
 *         cdef MPI_Comm comm = self.ob_mpi
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_73bcast(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_73bcast[] = "Comm.bcast(self, obj=None, int root=0)\nBroadcast";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_73bcast(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_obj = 0;
  int __pyx_v_root;
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__obj,&__pyx_n_s__root,0};
  __Pyx_RefNannySetupContext("bcast");
  {
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__obj);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__root);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "bcast") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 861; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    if (values[1]) {
      __pyx_v_root = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 861; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("bcast", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 861; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.bcast", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":863
 *     def bcast(self, obj=None, int root=0):
 *         """Broadcast"""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_bcast(obj, root, comm)
 *     #
 */
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":864
 *         """Broadcast"""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_bcast(obj, root, comm)             # <<<<<<<<<<<<<<
 *     #
 *     def gather(self, sendobj=None, recvobj=None, int root=0):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_bcast(__pyx_v_obj, __pyx_v_root, __pyx_v_comm); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.bcast", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":866
 *         return PyMPI_bcast(obj, root, comm)
 *     #
 *     def gather(self, sendobj=None, recvobj=None, int root=0):             # <<<<<<<<<<<<<<
 *         """Gather"""
 *         cdef MPI_Comm comm = self.ob_mpi
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_74gather(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_74gather[] = "Comm.gather(self, sendobj=None, recvobj=None, int root=0)\nGather";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_74gather(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendobj = 0;
  PyObject *__pyx_v_recvobj = 0;
  int __pyx_v_root;
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendobj,&__pyx_n_s__recvobj,&__pyx_n_s__root,0};
  __Pyx_RefNannySetupContext("gather");
  {
    PyObject* values[3] = {0,0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendobj);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvobj);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__root);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "gather") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_recvobj = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("gather", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.gather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":868
 *     def gather(self, sendobj=None, recvobj=None, int root=0):
 *         """Gather"""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_gather(sendobj, recvobj, root, comm)
 *     #
 */
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":869
 *         """Gather"""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_gather(sendobj, recvobj, root, comm)             # <<<<<<<<<<<<<<
 *     #
 *     def scatter(self, sendobj=None, recvobj=None, int root=0):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_gather(__pyx_v_sendobj, __pyx_v_recvobj, __pyx_v_root, __pyx_v_comm); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.gather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":871
 *         return PyMPI_gather(sendobj, recvobj, root, comm)
 *     #
 *     def scatter(self, sendobj=None, recvobj=None, int root=0):             # <<<<<<<<<<<<<<
 *         """Scatter"""
 *         cdef MPI_Comm comm = self.ob_mpi
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_75scatter(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_75scatter[] = "Comm.scatter(self, sendobj=None, recvobj=None, int root=0)\nScatter";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_75scatter(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendobj = 0;
  PyObject *__pyx_v_recvobj = 0;
  int __pyx_v_root;
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendobj,&__pyx_n_s__recvobj,&__pyx_n_s__root,0};
  __Pyx_RefNannySetupContext("scatter");
  {
    PyObject* values[3] = {0,0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendobj);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvobj);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__root);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "scatter") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_recvobj = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scatter", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.scatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":873
 *     def scatter(self, sendobj=None, recvobj=None, int root=0):
 *         """Scatter"""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_scatter(sendobj, recvobj, root, comm)
 *     #
 */
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":874
 *         """Scatter"""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_scatter(sendobj, recvobj, root, comm)             # <<<<<<<<<<<<<<
 *     #
 *     def allgather(self, sendobj=None, recvobj=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_scatter(__pyx_v_sendobj, __pyx_v_recvobj, __pyx_v_root, __pyx_v_comm); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.scatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":876
 *         return PyMPI_scatter(sendobj, recvobj, root, comm)
 *     #
 *     def allgather(self, sendobj=None, recvobj=None):             # <<<<<<<<<<<<<<
 *         """Gather to All"""
 *         cdef MPI_Comm comm = self.ob_mpi
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_76allgather(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_76allgather[] = "Comm.allgather(self, sendobj=None, recvobj=None)\nGather to All";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_76allgather(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendobj = 0;
  PyObject *__pyx_v_recvobj = 0;
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendobj,&__pyx_n_s__recvobj,0};
  __Pyx_RefNannySetupContext("allgather");
  {
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendobj);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvobj);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "allgather") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_recvobj = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("allgather", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":878
 *     def allgather(self, sendobj=None, recvobj=None):
 *         """Gather to All"""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_allgather(sendobj, recvobj, comm)
 *     #
 */
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":879
 *         """Gather to All"""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_allgather(sendobj, recvobj, comm)             # <<<<<<<<<<<<<<
 *     #
 *     def alltoall(self, sendobj=None, recvobj=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_allgather(__pyx_v_sendobj, __pyx_v_recvobj, __pyx_v_comm); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":881
 *         return PyMPI_allgather(sendobj, recvobj, comm)
 *     #
 *     def alltoall(self, sendobj=None, recvobj=None):             # <<<<<<<<<<<<<<
 *         """All to All Scatter/Gather"""
 *         cdef MPI_Comm comm = self.ob_mpi
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_77alltoall(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_77alltoall[] = "Comm.alltoall(self, sendobj=None, recvobj=None)\nAll to All Scatter/Gather";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_77alltoall(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendobj = 0;
  PyObject *__pyx_v_recvobj = 0;
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendobj,&__pyx_n_s__recvobj,0};
  __Pyx_RefNannySetupContext("alltoall");
  {
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendobj);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvobj);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "alltoall") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_recvobj = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("alltoall", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":883
 *     def alltoall(self, sendobj=None, recvobj=None):
 *         """All to All Scatter/Gather"""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_alltoall(sendobj, recvobj, comm)
 *     #
 */
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":884
 *         """All to All Scatter/Gather"""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_alltoall(sendobj, recvobj, comm)             # <<<<<<<<<<<<<<
 *     #
 *     def reduce(self, sendobj=None, recvobj=None, op=SUM, int root=0):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_alltoall(__pyx_v_sendobj, __pyx_v_recvobj, __pyx_v_comm); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":886
 *         return PyMPI_alltoall(sendobj, recvobj, comm)
 *     #
 *     def reduce(self, sendobj=None, recvobj=None, op=SUM, int root=0):             # <<<<<<<<<<<<<<
 *         """Reduce"""
 *         if op is None: op = SUM
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_78reduce(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_78reduce[] = "Comm.reduce(self, sendobj=None, recvobj=None, op=SUM, int root=0)\nReduce";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_78reduce(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendobj = 0;
  PyObject *__pyx_v_recvobj = 0;
  PyObject *__pyx_v_op = 0;
  int __pyx_v_root;
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendobj,&__pyx_n_s__recvobj,&__pyx_n_s__op,&__pyx_n_s__root,0};
  __Pyx_RefNannySetupContext("reduce");
  {
    PyObject* values[4] = {0,0,0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    values[2] = __pyx_k_75;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendobj);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvobj);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__op);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__root);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "reduce") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_recvobj = values[1];
    __pyx_v_op = values[2];
    if (values[3]) {
      __pyx_v_root = __Pyx_PyInt_AsInt(values[3]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("reduce", 0, 0, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_op);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":888
 *     def reduce(self, sendobj=None, recvobj=None, op=SUM, int root=0):
 *         """Reduce"""
 *         if op is None: op = SUM             # <<<<<<<<<<<<<<
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_reduce(sendobj, recvobj, op, root, comm)
 */
  __pyx_t_1 = (__pyx_v_op == Py_None);
  if (__pyx_t_1) {
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__SUM); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_op);
    __pyx_v_op = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":889
 *         """Reduce"""
 *         if op is None: op = SUM
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_reduce(sendobj, recvobj, op, root, comm)
 *     #
 */
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":890
 *         if op is None: op = SUM
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_reduce(sendobj, recvobj, op, root, comm)             # <<<<<<<<<<<<<<
 *     #
 *     def allreduce(self, sendobj=None, recvobj=None, op=SUM):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_reduce(__pyx_v_sendobj, __pyx_v_recvobj, __pyx_v_op, __pyx_v_root, __pyx_v_comm); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_op);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":892
 *         return PyMPI_reduce(sendobj, recvobj, op, root, comm)
 *     #
 *     def allreduce(self, sendobj=None, recvobj=None, op=SUM):             # <<<<<<<<<<<<<<
 *         """Reduce to All"""
 *         if op is None: op = SUM
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_79allreduce(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_79allreduce[] = "Comm.allreduce(self, sendobj=None, recvobj=None, op=SUM)\nReduce to All";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_79allreduce(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendobj = 0;
  PyObject *__pyx_v_recvobj = 0;
  PyObject *__pyx_v_op = 0;
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendobj,&__pyx_n_s__recvobj,&__pyx_n_s__op,0};
  __Pyx_RefNannySetupContext("allreduce");
  {
    PyObject* values[3] = {0,0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    values[2] = __pyx_k_76;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendobj);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvobj);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__op);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "allreduce") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_recvobj = values[1];
    __pyx_v_op = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("allreduce", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.allreduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_op);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":894
 *     def allreduce(self, sendobj=None, recvobj=None, op=SUM):
 *         """Reduce to All"""
 *         if op is None: op = SUM             # <<<<<<<<<<<<<<
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_allreduce(sendobj, recvobj, op, comm)
 */
  __pyx_t_1 = (__pyx_v_op == Py_None);
  if (__pyx_t_1) {
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__SUM); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_op);
    __pyx_v_op = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":895
 *         """Reduce to All"""
 *         if op is None: op = SUM
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_allreduce(sendobj, recvobj, op, comm)
 * 
 */
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":896
 *         if op is None: op = SUM
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_allreduce(sendobj, recvobj, op, comm)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_allreduce(__pyx_v_sendobj, __pyx_v_recvobj, __pyx_v_op, __pyx_v_comm); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.allreduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_op);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":905
 *     """
 * 
 *     def __cinit__(self, Comm comm=None):             # <<<<<<<<<<<<<<
 *         cdef int inter = 0
 *         if self.ob_mpi != MPI_COMM_NULL:
 */

static int __pyx_pf_6mpi4py_3MPI_9Intracomm___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_9Intracomm___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  int __pyx_v_inter;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__comm,0};
  __Pyx_RefNannySetupContext("__cinit__");
  {
    PyObject* values[1] = {0};
    values[0] = (PyObject *)((struct PyMPICommObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__comm);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":906
 * 
 *     def __cinit__(self, Comm comm=None):
 *         cdef int inter = 0             # <<<<<<<<<<<<<<
 *         if self.ob_mpi != MPI_COMM_NULL:
 *             CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 */
  __pyx_v_inter = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":907
 *     def __cinit__(self, Comm comm=None):
 *         cdef int inter = 0
 *         if self.ob_mpi != MPI_COMM_NULL:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 *             if inter: raise TypeError(
 */
  __pyx_t_1 = (((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi != MPI_COMM_NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":908
 *         cdef int inter = 0
 *         if self.ob_mpi != MPI_COMM_NULL:
 *             CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )             # <<<<<<<<<<<<<<
 *             if inter: raise TypeError(
 *                 "expecting an intracommunicator")
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":909
 *         if self.ob_mpi != MPI_COMM_NULL:
 *             CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 *             if inter: raise TypeError(             # <<<<<<<<<<<<<<
 *                 "expecting an intracommunicator")
 * 
 */
    if (__pyx_v_inter) {
      __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_78), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[6]; __pyx_lineno = 909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":915
 *     # -------------------------
 * 
 *     def Dup(self):             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate an existing intracommunicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_1Dup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_1Dup[] = "Intracomm.Dup(self)\n\n        Duplicate an existing intracommunicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_1Dup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIIntracommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Dup");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Dup", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Dup", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":919
 *         Duplicate an existing intracommunicator
 *         """
 *         cdef Intracomm comm = <Intracomm>type(self)()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )
 *         return comm
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIIntracommObject *)__pyx_t_1)));
  __pyx_v_comm = ((struct PyMPIIntracommObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":920
 *         """
 *         cdef Intracomm comm = <Intracomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_dup(((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":921
 *         cdef Intracomm comm = <Intracomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Create(self, Group group not None):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Dup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":923
 *         return comm
 * 
 *     def Create(self, Group group not None):             # <<<<<<<<<<<<<<
 *         """
 *         Create intracommunicator from group
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_2Create(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_2Create[] = "Intracomm.Create(self, Group group)\n\n        Create intracommunicator from group\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_2Create(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  struct PyMPIIntracommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__group,0};
  __Pyx_RefNannySetupContext("Create");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__group);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_group = ((struct PyMPIGroupObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":927
 *         Create intracommunicator from group
 *         """
 *         cdef Intracomm comm = <Intracomm>type(self)()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_create(
 *             self.ob_mpi, group.ob_mpi, &comm.ob_mpi) )
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIIntracommObject *)__pyx_t_1)));
  __pyx_v_comm = ((struct PyMPIIntracommObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":928
 *         """
 *         cdef Intracomm comm = <Intracomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, group.ob_mpi, &comm.ob_mpi) )
 *         return comm
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":929
 *         cdef Intracomm comm = <Intracomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_create(
 *             self.ob_mpi, group.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_create(((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi, __pyx_v_group->ob_mpi, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 928; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":928
 *         """
 *         cdef Intracomm comm = <Intracomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, group.ob_mpi, &comm.ob_mpi) )
 *         return comm
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":930
 *         with nogil: CHKERR( MPI_Comm_create(
 *             self.ob_mpi, group.ob_mpi, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Split(self, int color=0, int key=0):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":932
 *         return comm
 * 
 *     def Split(self, int color=0, int key=0):             # <<<<<<<<<<<<<<
 *         """
 *         Split intracommunicator by color and key
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_3Split(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_3Split[] = "Intracomm.Split(self, int color=0, int key=0)\n\n        Split intracommunicator by color and key\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_3Split(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_color;
  int __pyx_v_key;
  struct PyMPIIntracommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__color,&__pyx_n_s__key,0};
  __Pyx_RefNannySetupContext("Split");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__color);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__key);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Split") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_color = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_color == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_color = ((int)0);
    }
    if (values[1]) {
      __pyx_v_key = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_key == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_key = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Split", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Split", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":936
 *         Split intracommunicator by color and key
 *         """
 *         cdef Intracomm comm = <Intracomm>type(self)()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_split(
 *             self.ob_mpi, color, key, &comm.ob_mpi) )
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIIntracommObject *)__pyx_t_1)));
  __pyx_v_comm = ((struct PyMPIIntracommObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":937
 *         """
 *         cdef Intracomm comm = <Intracomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_split(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, color, key, &comm.ob_mpi) )
 *         return comm
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":938
 *         cdef Intracomm comm = <Intracomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_split(
 *             self.ob_mpi, color, key, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_split(((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi, __pyx_v_color, __pyx_v_key, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":937
 *         """
 *         cdef Intracomm comm = <Intracomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_split(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, color, key, &comm.ob_mpi) )
 *         return comm
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":939
 *         with nogil: CHKERR( MPI_Comm_split(
 *             self.ob_mpi, color, key, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Create_cart(self, dims, periods=None, bint reorder=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Split", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":941
 *         return comm
 * 
 *     def Create_cart(self, dims, periods=None, bint reorder=False):             # <<<<<<<<<<<<<<
 *         """
 *         Create cartesian communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_4Create_cart(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_4Create_cart[] = "Intracomm.Create_cart(self, dims, periods=None, int reorder=False)\n\n        Create cartesian communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_4Create_cart(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_dims = 0;
  PyObject *__pyx_v_periods = 0;
  int __pyx_v_reorder;
  int __pyx_v_ndims;
  int *__pyx_v_idims;
  int *__pyx_v_iperiods;
  struct PyMPICartcommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__dims,&__pyx_n_s__periods,&__pyx_n_s__reorder,0};
  __Pyx_RefNannySetupContext("Create_cart");
  {
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dims);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__periods);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__reorder);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create_cart") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_dims = values[0];
    __pyx_v_periods = values[1];
    if (values[2]) {
      __pyx_v_reorder = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_reorder == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_reorder = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_cart", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_cart", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_dims);
  __Pyx_INCREF(__pyx_v_periods);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":945
 *         Create cartesian communicator
 *         """
 *         cdef int ndims = 0, *idims = NULL             # <<<<<<<<<<<<<<
 *         dims = getarray_int(dims, &ndims, &idims)
 *         if periods is None: periods = [False] * ndims
 */
  __pyx_v_ndims = 0;
  __pyx_v_idims = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":946
 *         """
 *         cdef int ndims = 0, *idims = NULL
 *         dims = getarray_int(dims, &ndims, &idims)             # <<<<<<<<<<<<<<
 *         if periods is None: periods = [False] * ndims
 *         cdef int *iperiods = NULL
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_getarray_int(__pyx_v_dims, (&__pyx_v_ndims), (&__pyx_v_idims)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_dims);
  __pyx_v_dims = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":947
 *         cdef int ndims = 0, *idims = NULL
 *         dims = getarray_int(dims, &ndims, &idims)
 *         if periods is None: periods = [False] * ndims             # <<<<<<<<<<<<<<
 *         cdef int *iperiods = NULL
 *         periods = chkarray_int(periods, ndims, &iperiods)
 */
  __pyx_t_2 = (__pyx_v_periods == Py_None);
  if (__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromLong(__pyx_v_ndims); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyNumber_Multiply(((PyObject *)__pyx_t_3), __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_periods);
    __pyx_v_periods = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":948
 *         dims = getarray_int(dims, &ndims, &idims)
 *         if periods is None: periods = [False] * ndims
 *         cdef int *iperiods = NULL             # <<<<<<<<<<<<<<
 *         periods = chkarray_int(periods, ndims, &iperiods)
 *         #
 */
  __pyx_v_iperiods = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":949
 *         if periods is None: periods = [False] * ndims
 *         cdef int *iperiods = NULL
 *         periods = chkarray_int(periods, ndims, &iperiods)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Cartcomm comm = <Cartcomm>Cartcomm.__new__(Cartcomm)
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_chkarray_int(__pyx_v_periods, __pyx_v_ndims, (&__pyx_v_iperiods)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_v_periods);
  __pyx_v_periods = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":951
 *         periods = chkarray_int(periods, ndims, &iperiods)
 *         #
 *         cdef Cartcomm comm = <Cartcomm>Cartcomm.__new__(Cartcomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Cart_create(
 *             self.ob_mpi, ndims, idims, iperiods, reorder, &comm.ob_mpi) )
 */
  __pyx_t_4 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Cartcomm)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(((PyObject *)((struct PyMPICartcommObject *)__pyx_t_4)));
  __pyx_v_comm = ((struct PyMPICartcommObject *)__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":952
 *         #
 *         cdef Cartcomm comm = <Cartcomm>Cartcomm.__new__(Cartcomm)
 *         with nogil: CHKERR( MPI_Cart_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, ndims, idims, iperiods, reorder, &comm.ob_mpi) )
 *         return comm
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":953
 *         cdef Cartcomm comm = <Cartcomm>Cartcomm.__new__(Cartcomm)
 *         with nogil: CHKERR( MPI_Cart_create(
 *             self.ob_mpi, ndims, idims, iperiods, reorder, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
        __pyx_t_5 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cart_create(((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi, __pyx_v_ndims, __pyx_v_idims, __pyx_v_iperiods, __pyx_v_reorder, (&__pyx_v_comm->__pyx_base.__pyx_base.ob_mpi))); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L8;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":952
 *         #
 *         cdef Cartcomm comm = <Cartcomm>Cartcomm.__new__(Cartcomm)
 *         with nogil: CHKERR( MPI_Cart_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, ndims, idims, iperiods, reorder, &comm.ob_mpi) )
 *         return comm
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L9;
        __pyx_L8: __pyx_why = 4; goto __pyx_L9;
        __pyx_L9:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":954
 *         with nogil: CHKERR( MPI_Cart_create(
 *             self.ob_mpi, ndims, idims, iperiods, reorder, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Create_graph(self, index, edges, bint reorder=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_cart", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XDECREF(__pyx_v_dims);
  __Pyx_XDECREF(__pyx_v_periods);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":956
 *         return comm
 * 
 *     def Create_graph(self, index, edges, bint reorder=False):             # <<<<<<<<<<<<<<
 *         """
 *         Create graph communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_5Create_graph(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_5Create_graph[] = "Intracomm.Create_graph(self, index, edges, int reorder=False)\n\n        Create graph communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_5Create_graph(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_index = 0;
  PyObject *__pyx_v_edges = 0;
  int __pyx_v_reorder;
  int __pyx_v_nnodes;
  int *__pyx_v_iindex;
  int __pyx_v_nedges;
  int *__pyx_v_iedges;
  struct PyMPIGraphcommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__index,&__pyx_n_s__edges,&__pyx_n_s__reorder,0};
  __Pyx_RefNannySetupContext("Create_graph");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__edges);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_graph", 0, 2, 3, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__reorder);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create_graph") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_index = values[0];
    __pyx_v_edges = values[1];
    if (values[2]) {
      __pyx_v_reorder = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_reorder == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_reorder = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_graph", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_graph", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_index);
  __Pyx_INCREF(__pyx_v_edges);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":960
 *         Create graph communicator
 *         """
 *         cdef int nnodes = 0, *iindex = NULL             # <<<<<<<<<<<<<<
 *         index = getarray_int(index, &nnodes, &iindex)
 *         cdef int nedges = 0, *iedges = NULL
 */
  __pyx_v_nnodes = 0;
  __pyx_v_iindex = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":961
 *         """
 *         cdef int nnodes = 0, *iindex = NULL
 *         index = getarray_int(index, &nnodes, &iindex)             # <<<<<<<<<<<<<<
 *         cdef int nedges = 0, *iedges = NULL
 *         edges = getarray_int(edges, &nedges, &iedges)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_getarray_int(__pyx_v_index, (&__pyx_v_nnodes), (&__pyx_v_iindex)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_index);
  __pyx_v_index = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":962
 *         cdef int nnodes = 0, *iindex = NULL
 *         index = getarray_int(index, &nnodes, &iindex)
 *         cdef int nedges = 0, *iedges = NULL             # <<<<<<<<<<<<<<
 *         edges = getarray_int(edges, &nedges, &iedges)
 *         # extension: 'standard' adjacency arrays
 */
  __pyx_v_nedges = 0;
  __pyx_v_iedges = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":963
 *         index = getarray_int(index, &nnodes, &iindex)
 *         cdef int nedges = 0, *iedges = NULL
 *         edges = getarray_int(edges, &nedges, &iedges)             # <<<<<<<<<<<<<<
 *         # extension: 'standard' adjacency arrays
 *         if iindex[0]==0 and iindex[nnodes-1]==nedges:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_getarray_int(__pyx_v_edges, (&__pyx_v_nedges), (&__pyx_v_iedges)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_edges);
  __pyx_v_edges = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":965
 *         edges = getarray_int(edges, &nedges, &iedges)
 *         # extension: 'standard' adjacency arrays
 *         if iindex[0]==0 and iindex[nnodes-1]==nedges:             # <<<<<<<<<<<<<<
 *             nnodes -= 1; iindex += 1;
 *         #
 */
  __pyx_t_2 = ((__pyx_v_iindex[0]) == 0);
  if (__pyx_t_2) {
    __pyx_t_3 = ((__pyx_v_iindex[(__pyx_v_nnodes - 1)]) == __pyx_v_nedges);
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_2;
  }
  if (__pyx_t_4) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":966
 *         # extension: 'standard' adjacency arrays
 *         if iindex[0]==0 and iindex[nnodes-1]==nedges:
 *             nnodes -= 1; iindex += 1;             # <<<<<<<<<<<<<<
 *         #
 *         cdef Graphcomm comm = <Graphcomm>Graphcomm.__new__(Graphcomm)
 */
    __pyx_v_nnodes = (__pyx_v_nnodes - 1);
    __pyx_v_iindex = (__pyx_v_iindex + 1);
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":968
 *             nnodes -= 1; iindex += 1;
 *         #
 *         cdef Graphcomm comm = <Graphcomm>Graphcomm.__new__(Graphcomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Graph_create(
 *             self.ob_mpi, nnodes, iindex, iedges, reorder, &comm.ob_mpi) )
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Graphcomm)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIGraphcommObject *)__pyx_t_1)));
  __pyx_v_comm = ((struct PyMPIGraphcommObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":969
 *         #
 *         cdef Graphcomm comm = <Graphcomm>Graphcomm.__new__(Graphcomm)
 *         with nogil: CHKERR( MPI_Graph_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, nnodes, iindex, iedges, reorder, &comm.ob_mpi) )
 *         return comm
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":970
 *         cdef Graphcomm comm = <Graphcomm>Graphcomm.__new__(Graphcomm)
 *         with nogil: CHKERR( MPI_Graph_create(
 *             self.ob_mpi, nnodes, iindex, iedges, reorder, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
        __pyx_t_5 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graph_create(((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi, __pyx_v_nnodes, __pyx_v_iindex, __pyx_v_iedges, __pyx_v_reorder, (&__pyx_v_comm->__pyx_base.__pyx_base.ob_mpi))); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L8;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":969
 *         #
 *         cdef Graphcomm comm = <Graphcomm>Graphcomm.__new__(Graphcomm)
 *         with nogil: CHKERR( MPI_Graph_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, nnodes, iindex, iedges, reorder, &comm.ob_mpi) )
 *         return comm
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L9;
        __pyx_L8: __pyx_why = 4; goto __pyx_L9;
        __pyx_L9:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":971
 *         with nogil: CHKERR( MPI_Graph_create(
 *             self.ob_mpi, nnodes, iindex, iedges, reorder, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Create_dist_graph_adjacent(self, sources, destinations,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_graph", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XDECREF(__pyx_v_index);
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":973
 *         return comm
 * 
 *     def Create_dist_graph_adjacent(self, sources, destinations,             # <<<<<<<<<<<<<<
 *                                    sourceweights=None, destweights=None,
 *                                    Info info=INFO_NULL, bint reorder=False):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_6Create_dist_graph_adjacent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_6Create_dist_graph_adjacent[] = "Intracomm.Create_dist_graph_adjacent(self, sources, destinations, sourceweights=None, destweights=None, Info info=INFO_NULL, int reorder=False)\n\n        Create distributed graph communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_6Create_dist_graph_adjacent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sources = 0;
  PyObject *__pyx_v_destinations = 0;
  PyObject *__pyx_v_sourceweights = 0;
  PyObject *__pyx_v_destweights = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  int __pyx_v_reorder;
  int __pyx_v_indegree;
  int *__pyx_v_isource;
  int __pyx_v_outdegree;
  int *__pyx_v_idest;
  int *__pyx_v_isourceweight;
  int *__pyx_v_idestweight;
  MPI_Info __pyx_v_cinfo;
  struct PyMPIDistgraphcommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sources,&__pyx_n_s__destinations,&__pyx_n_s__sourceweights,&__pyx_n_s__destweights,&__pyx_n_s__info,&__pyx_n_s__reorder,0};
  __Pyx_RefNannySetupContext("Create_dist_graph_adjacent");
  {
    PyObject* values[6] = {0,0,0,0,0,0};

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":974
 * 
 *     def Create_dist_graph_adjacent(self, sources, destinations,
 *                                    sourceweights=None, destweights=None,             # <<<<<<<<<<<<<<
 *                                    Info info=INFO_NULL, bint reorder=False):
 *         """
 */
    values[2] = ((PyObject *)Py_None);
    values[3] = ((PyObject *)Py_None);
    values[4] = (PyObject *)__pyx_k_79;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sources);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__destinations);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_dist_graph_adjacent", 0, 2, 6, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sourceweights);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__destweights);
          if (value) { values[3] = value; kw_args--; }
        }
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__info);
          if (value) { values[4] = value; kw_args--; }
        }
        case  5:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__reorder);
          if (value) { values[5] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create_dist_graph_adjacent") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sources = values[0];
    __pyx_v_destinations = values[1];
    __pyx_v_sourceweights = values[2];
    __pyx_v_destweights = values[3];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[4]);
    if (values[5]) {
      __pyx_v_reorder = __Pyx_PyObject_IsTrue(values[5]); if (unlikely((__pyx_v_reorder == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":975
 *     def Create_dist_graph_adjacent(self, sources, destinations,
 *                                    sourceweights=None, destweights=None,
 *                                    Info info=INFO_NULL, bint reorder=False):             # <<<<<<<<<<<<<<
 *         """
 *         Create distributed graph communicator
 */
      __pyx_v_reorder = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_dist_graph_adjacent", 0, 2, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_dist_graph_adjacent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_sources);
  __Pyx_INCREF(__pyx_v_destinations);
  __Pyx_INCREF(__pyx_v_sourceweights);
  __Pyx_INCREF(__pyx_v_destweights);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 1, "info", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":979
 *         Create distributed graph communicator
 *         """
 *         cdef int indegree  = 0, *isource = NULL             # <<<<<<<<<<<<<<
 *         cdef int outdegree = 0, *idest   = NULL
 *         cdef int *isourceweight = MPI_UNWEIGHTED
 */
  __pyx_v_indegree = 0;
  __pyx_v_isource = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":980
 *         """
 *         cdef int indegree  = 0, *isource = NULL
 *         cdef int outdegree = 0, *idest   = NULL             # <<<<<<<<<<<<<<
 *         cdef int *isourceweight = MPI_UNWEIGHTED
 *         cdef int *idestweight   = MPI_UNWEIGHTED
 */
  __pyx_v_outdegree = 0;
  __pyx_v_idest = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":981
 *         cdef int indegree  = 0, *isource = NULL
 *         cdef int outdegree = 0, *idest   = NULL
 *         cdef int *isourceweight = MPI_UNWEIGHTED             # <<<<<<<<<<<<<<
 *         cdef int *idestweight   = MPI_UNWEIGHTED
 *         if sources is not None:
 */
  __pyx_v_isourceweight = MPI_UNWEIGHTED;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":982
 *         cdef int outdegree = 0, *idest   = NULL
 *         cdef int *isourceweight = MPI_UNWEIGHTED
 *         cdef int *idestweight   = MPI_UNWEIGHTED             # <<<<<<<<<<<<<<
 *         if sources is not None:
 *             sources = getarray_int(sources, &indegree, &isource)
 */
  __pyx_v_idestweight = MPI_UNWEIGHTED;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":983
 *         cdef int *isourceweight = MPI_UNWEIGHTED
 *         cdef int *idestweight   = MPI_UNWEIGHTED
 *         if sources is not None:             # <<<<<<<<<<<<<<
 *             sources = getarray_int(sources, &indegree, &isource)
 *         if sourceweights is not None:
 */
  __pyx_t_1 = (__pyx_v_sources != Py_None);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":984
 *         cdef int *idestweight   = MPI_UNWEIGHTED
 *         if sources is not None:
 *             sources = getarray_int(sources, &indegree, &isource)             # <<<<<<<<<<<<<<
 *         if sourceweights is not None:
 *             sourceweights = chkarray_int(
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_getarray_int(__pyx_v_sources, (&__pyx_v_indegree), (&__pyx_v_isource)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_sources);
    __pyx_v_sources = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":985
 *         if sources is not None:
 *             sources = getarray_int(sources, &indegree, &isource)
 *         if sourceweights is not None:             # <<<<<<<<<<<<<<
 *             sourceweights = chkarray_int(
 *                 sourceweights, indegree, &isourceweight)
 */
  __pyx_t_1 = (__pyx_v_sourceweights != Py_None);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":987
 *         if sourceweights is not None:
 *             sourceweights = chkarray_int(
 *                 sourceweights, indegree, &isourceweight)             # <<<<<<<<<<<<<<
 *         if destinations is not None:
 *             destinations = getarray_int(destinations, &outdegree, &idest)
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_chkarray_int(__pyx_v_sourceweights, __pyx_v_indegree, (&__pyx_v_isourceweight)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_sourceweights);
    __pyx_v_sourceweights = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":988
 *             sourceweights = chkarray_int(
 *                 sourceweights, indegree, &isourceweight)
 *         if destinations is not None:             # <<<<<<<<<<<<<<
 *             destinations = getarray_int(destinations, &outdegree, &idest)
 *         if destweights is not None:
 */
  __pyx_t_1 = (__pyx_v_destinations != Py_None);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":989
 *                 sourceweights, indegree, &isourceweight)
 *         if destinations is not None:
 *             destinations = getarray_int(destinations, &outdegree, &idest)             # <<<<<<<<<<<<<<
 *         if destweights is not None:
 *             destweights = chkarray_int(destweights, outdegree, &idestweight)
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_getarray_int(__pyx_v_destinations, (&__pyx_v_outdegree), (&__pyx_v_idest)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_destinations);
    __pyx_v_destinations = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":990
 *         if destinations is not None:
 *             destinations = getarray_int(destinations, &outdegree, &idest)
 *         if destweights is not None:             # <<<<<<<<<<<<<<
 *             destweights = chkarray_int(destweights, outdegree, &idestweight)
 *         cdef MPI_Info cinfo = arg_Info(info)
 */
  __pyx_t_1 = (__pyx_v_destweights != Py_None);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":991
 *             destinations = getarray_int(destinations, &outdegree, &idest)
 *         if destweights is not None:
 *             destweights = chkarray_int(destweights, outdegree, &idestweight)             # <<<<<<<<<<<<<<
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         #
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_chkarray_int(__pyx_v_destweights, __pyx_v_outdegree, (&__pyx_v_idestweight)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_destweights);
    __pyx_v_destweights = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L9;
  }
  __pyx_L9:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":992
 *         if destweights is not None:
 *             destweights = chkarray_int(destweights, outdegree, &idestweight)
 *         cdef MPI_Info cinfo = arg_Info(info)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Distgraphcomm comm = \
 */
  __pyx_v_cinfo = __pyx_f_6mpi4py_3MPI_arg_Info(((PyObject *)__pyx_v_info));

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":995
 *         #
 *         cdef Distgraphcomm comm = \
 *             <Distgraphcomm>Distgraphcomm.__new__(Distgraphcomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Dist_graph_create_adjacent(
 *                 self.ob_mpi,
 */
  __pyx_t_2 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Distgraphcomm)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDistgraphcommObject *)__pyx_t_2)));
  __pyx_v_comm = ((struct PyMPIDistgraphcommObject *)__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":996
 *         cdef Distgraphcomm comm = \
 *             <Distgraphcomm>Distgraphcomm.__new__(Distgraphcomm)
 *         with nogil: CHKERR( MPI_Dist_graph_create_adjacent(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi,
 *                 indegree,  isource, isourceweight,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1000
 *                 indegree,  isource, isourceweight,
 *                 outdegree, idest,   idestweight,
 *                 cinfo, reorder, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Dist_graph_create_adjacent(((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi, __pyx_v_indegree, __pyx_v_isource, __pyx_v_isourceweight, __pyx_v_outdegree, __pyx_v_idest, __pyx_v_idestweight, __pyx_v_cinfo, __pyx_v_reorder, (&__pyx_v_comm->__pyx_base.__pyx_base.ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L11;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":996
 *         cdef Distgraphcomm comm = \
 *             <Distgraphcomm>Distgraphcomm.__new__(Distgraphcomm)
 *         with nogil: CHKERR( MPI_Dist_graph_create_adjacent(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi,
 *                 indegree,  isource, isourceweight,
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L12;
        __pyx_L11: __pyx_why = 4; goto __pyx_L12;
        __pyx_L12:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1001
 *                 outdegree, idest,   idestweight,
 *                 cinfo, reorder, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Create_dist_graph(self, sources, degrees, destinations, weights=None,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_dist_graph_adjacent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XDECREF(__pyx_v_sources);
  __Pyx_XDECREF(__pyx_v_destinations);
  __Pyx_XDECREF(__pyx_v_sourceweights);
  __Pyx_XDECREF(__pyx_v_destweights);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1003
 *         return comm
 * 
 *     def Create_dist_graph(self, sources, degrees, destinations, weights=None,             # <<<<<<<<<<<<<<
 *                           Info info=INFO_NULL, bint reorder=False):
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_7Create_dist_graph(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_7Create_dist_graph[] = "Intracomm.Create_dist_graph(self, sources, degrees, destinations, weights=None, Info info=INFO_NULL, int reorder=False)\n\n        Create distributed graph communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_7Create_dist_graph(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sources = 0;
  PyObject *__pyx_v_degrees = 0;
  PyObject *__pyx_v_destinations = 0;
  PyObject *__pyx_v_weights = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  int __pyx_v_reorder;
  int __pyx_v_nv;
  int __pyx_v_ne;
  int __pyx_v_i;
  int *__pyx_v_isource;
  int *__pyx_v_idegree;
  int *__pyx_v_idest;
  int *__pyx_v_iweight;
  MPI_Info __pyx_v_cinfo;
  struct PyMPIDistgraphcommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sources,&__pyx_n_s__degrees,&__pyx_n_s__destinations,&__pyx_n_s__weights,&__pyx_n_s__info,&__pyx_n_s__reorder,0};
  __Pyx_RefNannySetupContext("Create_dist_graph");
  {
    PyObject* values[6] = {0,0,0,0,0,0};
    values[3] = ((PyObject *)Py_None);
    values[4] = (PyObject *)__pyx_k_80;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sources);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__degrees);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_dist_graph", 0, 3, 6, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__destinations);
        if (likely(values[2])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_dist_graph", 0, 3, 6, 2); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__weights);
          if (value) { values[3] = value; kw_args--; }
        }
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__info);
          if (value) { values[4] = value; kw_args--; }
        }
        case  5:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__reorder);
          if (value) { values[5] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create_dist_graph") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sources = values[0];
    __pyx_v_degrees = values[1];
    __pyx_v_destinations = values[2];
    __pyx_v_weights = values[3];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[4]);
    if (values[5]) {
      __pyx_v_reorder = __Pyx_PyObject_IsTrue(values[5]); if (unlikely((__pyx_v_reorder == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1004
 * 
 *     def Create_dist_graph(self, sources, degrees, destinations, weights=None,
 *                           Info info=INFO_NULL, bint reorder=False):             # <<<<<<<<<<<<<<
 *         """
 *         Create distributed graph communicator
 */
      __pyx_v_reorder = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_dist_graph", 0, 3, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_dist_graph", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_sources);
  __Pyx_INCREF(__pyx_v_degrees);
  __Pyx_INCREF(__pyx_v_destinations);
  __Pyx_INCREF(__pyx_v_weights);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 1, "info", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1008
 *         Create distributed graph communicator
 *         """
 *         cdef int nv = 0, ne = 0, i = 0             # <<<<<<<<<<<<<<
 *         cdef int *isource = NULL, *idegree = NULL,
 *         cdef int *idest = NULL, *iweight = MPI_UNWEIGHTED
 */
  __pyx_v_nv = 0;
  __pyx_v_ne = 0;
  __pyx_v_i = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1009
 *         """
 *         cdef int nv = 0, ne = 0, i = 0
 *         cdef int *isource = NULL, *idegree = NULL,             # <<<<<<<<<<<<<<
 *         cdef int *idest = NULL, *iweight = MPI_UNWEIGHTED
 *         sources = getarray_int(sources, &nv, &isource)
 */
  __pyx_v_isource = NULL;
  __pyx_v_idegree = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1010
 *         cdef int nv = 0, ne = 0, i = 0
 *         cdef int *isource = NULL, *idegree = NULL,
 *         cdef int *idest = NULL, *iweight = MPI_UNWEIGHTED             # <<<<<<<<<<<<<<
 *         sources = getarray_int(sources, &nv, &isource)
 *         degrees = chkarray_int(degrees,  nv, &idegree)
 */
  __pyx_v_idest = NULL;
  __pyx_v_iweight = MPI_UNWEIGHTED;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1011
 *         cdef int *isource = NULL, *idegree = NULL,
 *         cdef int *idest = NULL, *iweight = MPI_UNWEIGHTED
 *         sources = getarray_int(sources, &nv, &isource)             # <<<<<<<<<<<<<<
 *         degrees = chkarray_int(degrees,  nv, &idegree)
 *         for i from 0 <= i < nv: ne += idegree[i]
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_getarray_int(__pyx_v_sources, (&__pyx_v_nv), (&__pyx_v_isource)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_sources);
  __pyx_v_sources = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1012
 *         cdef int *idest = NULL, *iweight = MPI_UNWEIGHTED
 *         sources = getarray_int(sources, &nv, &isource)
 *         degrees = chkarray_int(degrees,  nv, &idegree)             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < nv: ne += idegree[i]
 *         destinations = chkarray_int(destinations, ne, &idest)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_chkarray_int(__pyx_v_degrees, __pyx_v_nv, (&__pyx_v_idegree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_degrees);
  __pyx_v_degrees = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1013
 *         sources = getarray_int(sources, &nv, &isource)
 *         degrees = chkarray_int(degrees,  nv, &idegree)
 *         for i from 0 <= i < nv: ne += idegree[i]             # <<<<<<<<<<<<<<
 *         destinations = chkarray_int(destinations, ne, &idest)
 *         if weights is not None:
 */
  __pyx_t_2 = __pyx_v_nv;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {
    __pyx_v_ne = (__pyx_v_ne + (__pyx_v_idegree[__pyx_v_i]));
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1014
 *         degrees = chkarray_int(degrees,  nv, &idegree)
 *         for i from 0 <= i < nv: ne += idegree[i]
 *         destinations = chkarray_int(destinations, ne, &idest)             # <<<<<<<<<<<<<<
 *         if weights is not None:
 *             weights = chkarray_int(weights, ne, &iweight)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_chkarray_int(__pyx_v_destinations, __pyx_v_ne, (&__pyx_v_idest)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_destinations);
  __pyx_v_destinations = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1015
 *         for i from 0 <= i < nv: ne += idegree[i]
 *         destinations = chkarray_int(destinations, ne, &idest)
 *         if weights is not None:             # <<<<<<<<<<<<<<
 *             weights = chkarray_int(weights, ne, &iweight)
 *         cdef MPI_Info cinfo = arg_Info(info)
 */
  __pyx_t_3 = (__pyx_v_weights != Py_None);
  if (__pyx_t_3) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1016
 *         destinations = chkarray_int(destinations, ne, &idest)
 *         if weights is not None:
 *             weights = chkarray_int(weights, ne, &iweight)             # <<<<<<<<<<<<<<
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         #
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_chkarray_int(__pyx_v_weights, __pyx_v_ne, (&__pyx_v_iweight)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_weights);
    __pyx_v_weights = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1017
 *         if weights is not None:
 *             weights = chkarray_int(weights, ne, &iweight)
 *         cdef MPI_Info cinfo = arg_Info(info)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Distgraphcomm comm = \
 */
  __pyx_v_cinfo = __pyx_f_6mpi4py_3MPI_arg_Info(((PyObject *)__pyx_v_info));

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1020
 *         #
 *         cdef Distgraphcomm comm = \
 *             <Distgraphcomm>Distgraphcomm.__new__(Distgraphcomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Dist_graph_create(
 *                 self.ob_mpi,
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Distgraphcomm)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDistgraphcommObject *)__pyx_t_1)));
  __pyx_v_comm = ((struct PyMPIDistgraphcommObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1021
 *         cdef Distgraphcomm comm = \
 *             <Distgraphcomm>Distgraphcomm.__new__(Distgraphcomm)
 *         with nogil: CHKERR( MPI_Dist_graph_create(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi,
 *                 nv, isource, idegree, idest, iweight,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1024
 *                 self.ob_mpi,
 *                 nv, isource, idegree, idest, iweight,
 *                 cinfo, reorder, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Dist_graph_create(((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi, __pyx_v_nv, __pyx_v_isource, __pyx_v_idegree, __pyx_v_idest, __pyx_v_iweight, __pyx_v_cinfo, __pyx_v_reorder, (&__pyx_v_comm->__pyx_base.__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L10;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1021
 *         cdef Distgraphcomm comm = \
 *             <Distgraphcomm>Distgraphcomm.__new__(Distgraphcomm)
 *         with nogil: CHKERR( MPI_Dist_graph_create(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi,
 *                 nv, isource, idegree, idest, iweight,
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L11;
        __pyx_L10: __pyx_why = 4; goto __pyx_L11;
        __pyx_L11:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1025
 *                 nv, isource, idegree, idest, iweight,
 *                 cinfo, reorder, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Create_intercomm(self,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_dist_graph", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XDECREF(__pyx_v_sources);
  __Pyx_XDECREF(__pyx_v_degrees);
  __Pyx_XDECREF(__pyx_v_destinations);
  __Pyx_XDECREF(__pyx_v_weights);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1027
 *         return comm
 * 
 *     def Create_intercomm(self,             # <<<<<<<<<<<<<<
 *                          int local_leader,
 *                          Intracomm peer_comm not None,
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_8Create_intercomm(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_8Create_intercomm[] = "Intracomm.Create_intercomm(self, int local_leader, Intracomm peer_comm, int remote_leader, int tag=0)\n\n        Create intercommunicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_8Create_intercomm(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_local_leader;
  struct PyMPIIntracommObject *__pyx_v_peer_comm = 0;
  int __pyx_v_remote_leader;
  int __pyx_v_tag;
  struct PyMPIIntercommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__local_leader,&__pyx_n_s__peer_comm,&__pyx_n_s__remote_leader,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("Create_intercomm");
  {
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__local_leader);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__peer_comm);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_intercomm", 0, 3, 4, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__remote_leader);
        if (likely(values[2])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Create_intercomm", 0, 3, 4, 2); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create_intercomm") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_local_leader = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_local_leader == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1028; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_peer_comm = ((struct PyMPIIntracommObject *)values[1]);
    __pyx_v_remote_leader = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_remote_leader == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    if (values[3]) {
      __pyx_v_tag = __Pyx_PyInt_AsInt(values[3]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_intercomm", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_intercomm", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_peer_comm), __pyx_ptype_6mpi4py_3MPI_Intracomm, 0, "peer_comm", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1035
 *         Create intercommunicator
 *         """
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Intercomm_create(
 *             self.ob_mpi, local_leader,
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intercomm)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIIntercommObject *)__pyx_t_1)));
  __pyx_v_comm = ((struct PyMPIIntercommObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1036
 *         """
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 *         with nogil: CHKERR( MPI_Intercomm_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, local_leader,
 *             peer_comm.ob_mpi, remote_leader,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1039
 *             self.ob_mpi, local_leader,
 *             peer_comm.ob_mpi, remote_leader,
 *             tag, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Intercomm_create(((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi, __pyx_v_local_leader, __pyx_v_peer_comm->__pyx_base.ob_mpi, __pyx_v_remote_leader, __pyx_v_tag, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1036
 *         """
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 *         with nogil: CHKERR( MPI_Intercomm_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, local_leader,
 *             peer_comm.ob_mpi, remote_leader,
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1040
 *             peer_comm.ob_mpi, remote_leader,
 *             tag, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     # Global Reduction Operations
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_intercomm", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1047
 *     # Inclusive Scan
 * 
 *     def Scan(self, sendbuf, recvbuf, Op op not None=SUM):             # <<<<<<<<<<<<<<
 *         """
 *         Inclusive Scan
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_9Scan(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_9Scan[] = "Intracomm.Scan(self, sendbuf, recvbuf, Op op=SUM)\n\n        Inclusive Scan\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_9Scan(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendbuf,&__pyx_n_s__recvbuf,&__pyx_n_s__op,0};
  __Pyx_RefNannySetupContext("Scan");
  {
    PyObject* values[3] = {0,0,0};
    values[2] = (PyObject *)__pyx_k_81;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendbuf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvbuf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Scan", 0, 2, 3, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__op);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Scan") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Scan", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Scan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1051
 *         Inclusive Scan
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_scan(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Scan(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1052
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scan(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Scan(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_m->__pyx_vtab)->for_scan(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, ((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1053
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scan(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Scan(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1055
 *         with nogil: CHKERR( MPI_Scan(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Exclusive Scan
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Scan(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, ((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1053
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scan(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Scan(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Scan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1059
 *     # Exclusive Scan
 * 
 *     def Exscan(self, sendbuf, recvbuf, Op op not None=SUM):             # <<<<<<<<<<<<<<
 *         """
 *         Exclusive Scan
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_10Exscan(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_10Exscan[] = "Intracomm.Exscan(self, sendbuf, recvbuf, Op op=SUM)\n\n        Exclusive Scan\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_10Exscan(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendbuf,&__pyx_n_s__recvbuf,&__pyx_n_s__op,0};
  __Pyx_RefNannySetupContext("Exscan");
  {
    PyObject* values[3] = {0,0,0};
    values[2] = (PyObject *)__pyx_k_82;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendbuf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvbuf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Exscan", 0, 2, 3, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__op);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Exscan") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Exscan", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Exscan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1063
 *         Exclusive Scan
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_exscan(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Exscan(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1064
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_exscan(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Exscan(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_m->__pyx_vtab)->for_exscan(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, ((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1065
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_exscan(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Exscan(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1067
 *         with nogil: CHKERR( MPI_Exscan(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Python Communication
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Exscan(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, ((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1065; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1065
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_exscan(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Exscan(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Exscan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1071
 *     # Python Communication
 *     #
 *     def scan(self, sendobj=None, recvobj=None, op=SUM):             # <<<<<<<<<<<<<<
 *         """Inclusive Scan"""
 *         if op is None: op = SUM
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_11scan(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_11scan[] = "Intracomm.scan(self, sendobj=None, recvobj=None, op=SUM)\nInclusive Scan";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_11scan(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendobj = 0;
  PyObject *__pyx_v_recvobj = 0;
  PyObject *__pyx_v_op = 0;
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendobj,&__pyx_n_s__recvobj,&__pyx_n_s__op,0};
  __Pyx_RefNannySetupContext("scan");
  {
    PyObject* values[3] = {0,0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    values[2] = __pyx_k_83;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendobj);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvobj);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__op);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "scan") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_recvobj = values[1];
    __pyx_v_op = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scan", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.scan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_op);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1073
 *     def scan(self, sendobj=None, recvobj=None, op=SUM):
 *         """Inclusive Scan"""
 *         if op is None: op = SUM             # <<<<<<<<<<<<<<
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_scan(sendobj, recvobj, op, comm)
 */
  __pyx_t_1 = (__pyx_v_op == Py_None);
  if (__pyx_t_1) {
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__SUM); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1073; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_op);
    __pyx_v_op = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1074
 *         """Inclusive Scan"""
 *         if op is None: op = SUM
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_scan(sendobj, recvobj, op, comm)
 *     #
 */
  __pyx_v_comm = ((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1075
 *         if op is None: op = SUM
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_scan(sendobj, recvobj, op, comm)             # <<<<<<<<<<<<<<
 *     #
 *     def exscan(self, sendobj=None, recvobj=None, op=SUM):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_scan(__pyx_v_sendobj, __pyx_v_recvobj, __pyx_v_op, __pyx_v_comm); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.scan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_op);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1077
 *         return PyMPI_scan(sendobj, recvobj, op, comm)
 *     #
 *     def exscan(self, sendobj=None, recvobj=None, op=SUM):             # <<<<<<<<<<<<<<
 *         """Exclusive Scan"""
 *         if op is None: op = SUM
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_12exscan(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_12exscan[] = "Intracomm.exscan(self, sendobj=None, recvobj=None, op=SUM)\nExclusive Scan";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_12exscan(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendobj = 0;
  PyObject *__pyx_v_recvobj = 0;
  PyObject *__pyx_v_op = 0;
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sendobj,&__pyx_n_s__recvobj,&__pyx_n_s__op,0};
  __Pyx_RefNannySetupContext("exscan");
  {
    PyObject* values[3] = {0,0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    values[2] = __pyx_k_84;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sendobj);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recvobj);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__op);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "exscan") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1077; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_recvobj = values[1];
    __pyx_v_op = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("exscan", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1077; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.exscan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_op);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1079
 *     def exscan(self, sendobj=None, recvobj=None, op=SUM):
 *         """Exclusive Scan"""
 *         if op is None: op = SUM             # <<<<<<<<<<<<<<
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_exscan(sendobj, recvobj, op, comm)
 */
  __pyx_t_1 = (__pyx_v_op == Py_None);
  if (__pyx_t_1) {
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__SUM); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_op);
    __pyx_v_op = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1080
 *         """Exclusive Scan"""
 *         if op is None: op = SUM
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_exscan(sendobj, recvobj, op, comm)
 * 
 */
  __pyx_v_comm = ((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1081
 *         if op is None: op = SUM
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_exscan(sendobj, recvobj, op, comm)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_exscan(__pyx_v_sendobj, __pyx_v_recvobj, __pyx_v_op, __pyx_v_comm); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.exscan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_op);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1089
 *     # Starting Processes
 * 
 *     def Spawn(self, command, args=None, int maxprocs=1,             # <<<<<<<<<<<<<<
 *               Info info=INFO_NULL, int root=0, errcodes=None):
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_13Spawn(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_13Spawn[] = "Intracomm.Spawn(self, command, args=None, int maxprocs=1, Info info=INFO_NULL, int root=0, errcodes=None)\n\n        Spawn instances of a single MPI application\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_13Spawn(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_command = 0;
  PyObject *__pyx_v_args = 0;
  int __pyx_v_maxprocs;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  int __pyx_v_root;
  PyObject *__pyx_v_errcodes = 0;
  char *__pyx_v_cmd;
  char **__pyx_v_argv;
  MPI_Info __pyx_v_cinfo;
  int *__pyx_v_ierrcodes;
  int __pyx_v_rank;
  PyObject *__pyx_v_tmp1 = 0;
  PyObject *__pyx_v_tmp2 = 0;
  struct PyMPIIntercommObject *__pyx_v_comm = 0;
  int __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__command,&__pyx_n_s__args,&__pyx_n_s__maxprocs,&__pyx_n_s__info,&__pyx_n_s__root,&__pyx_n_s__errcodes,0};
  __Pyx_RefNannySetupContext("Spawn");
  {
    PyObject* values[6] = {0,0,0,0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[3] = (PyObject *)__pyx_k_85;

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1090
 * 
 *     def Spawn(self, command, args=None, int maxprocs=1,
 *               Info info=INFO_NULL, int root=0, errcodes=None):             # <<<<<<<<<<<<<<
 *         """
 *         Spawn instances of a single MPI application
 */
    values[5] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__command);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__args);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__maxprocs);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__info);
          if (value) { values[3] = value; kw_args--; }
        }
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__root);
          if (value) { values[4] = value; kw_args--; }
        }
        case  5:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__errcodes);
          if (value) { values[5] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Spawn") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1089; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_command = values[0];
    __pyx_v_args = values[1];
    if (values[2]) {
      __pyx_v_maxprocs = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_maxprocs == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1089; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_maxprocs = ((int)1);
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[3]);
    if (values[4]) {
      __pyx_v_root = __Pyx_PyInt_AsInt(values[4]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = ((int)0);
    }
    __pyx_v_errcodes = values[5];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Spawn", 0, 1, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1089; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Spawn", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_command);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 1, "info", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1094
 *         Spawn instances of a single MPI application
 *         """
 *         cdef char *cmd = NULL             # <<<<<<<<<<<<<<
 *         cdef char **argv = MPI_ARGV_NULL
 *         cdef MPI_Info cinfo = arg_Info(info)
 */
  __pyx_v_cmd = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1095
 *         """
 *         cdef char *cmd = NULL
 *         cdef char **argv = MPI_ARGV_NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         cdef int *ierrcodes = MPI_ERRCODES_IGNORE
 */
  __pyx_v_argv = MPI_ARGV_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1096
 *         cdef char *cmd = NULL
 *         cdef char **argv = MPI_ARGV_NULL
 *         cdef MPI_Info cinfo = arg_Info(info)             # <<<<<<<<<<<<<<
 *         cdef int *ierrcodes = MPI_ERRCODES_IGNORE
 *         #
 */
  __pyx_v_cinfo = __pyx_f_6mpi4py_3MPI_arg_Info(((PyObject *)__pyx_v_info));

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1097
 *         cdef char **argv = MPI_ARGV_NULL
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         cdef int *ierrcodes = MPI_ERRCODES_IGNORE             # <<<<<<<<<<<<<<
 *         #
 *         cdef int rank = MPI_UNDEFINED
 */
  __pyx_v_ierrcodes = MPI_ERRCODES_IGNORE;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1099
 *         cdef int *ierrcodes = MPI_ERRCODES_IGNORE
 *         #
 *         cdef int rank = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         cdef tmp1, tmp2
 */
  __pyx_v_rank = MPI_UNDEFINED;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1100
 *         #
 *         cdef int rank = MPI_UNDEFINED
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )             # <<<<<<<<<<<<<<
 *         cdef tmp1, tmp2
 *         if root == rank:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1102
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         cdef tmp1, tmp2
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             command = asmpistr(command, &cmd, NULL)
 *             if args is not None:
 */
  __pyx_t_2 = (__pyx_v_root == __pyx_v_rank);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1103
 *         cdef tmp1, tmp2
 *         if root == rank:
 *             command = asmpistr(command, &cmd, NULL)             # <<<<<<<<<<<<<<
 *             if args is not None:
 *                 tmp1 = asarray_argv(args, &argv)
 */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_command, (&__pyx_v_cmd), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_v_command);
    __pyx_v_command = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1104
 *         if root == rank:
 *             command = asmpistr(command, &cmd, NULL)
 *             if args is not None:             # <<<<<<<<<<<<<<
 *                 tmp1 = asarray_argv(args, &argv)
 *         if errcodes is not None:
 */
    __pyx_t_2 = (__pyx_v_args != Py_None);
    if (__pyx_t_2) {

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1105
 *             command = asmpistr(command, &cmd, NULL)
 *             if args is not None:
 *                 tmp1 = asarray_argv(args, &argv)             # <<<<<<<<<<<<<<
 *         if errcodes is not None:
 *             tmp2 = newarray_int(maxprocs, &ierrcodes)
 */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asarray_argv(__pyx_v_args, (&__pyx_v_argv)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_v_tmp1 = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L7;
    }
    __pyx_L7:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1106
 *             if args is not None:
 *                 tmp1 = asarray_argv(args, &argv)
 *         if errcodes is not None:             # <<<<<<<<<<<<<<
 *             tmp2 = newarray_int(maxprocs, &ierrcodes)
 *         #
 */
  __pyx_t_2 = (__pyx_v_errcodes != Py_None);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1107
 *                 tmp1 = asarray_argv(args, &argv)
 *         if errcodes is not None:
 *             tmp2 = newarray_int(maxprocs, &ierrcodes)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_maxprocs, (&__pyx_v_ierrcodes)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_tmp2 = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1109
 *             tmp2 = newarray_int(maxprocs, &ierrcodes)
 *         #
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_spawn(
 *             cmd, argv, maxprocs, cinfo, root,
 */
  __pyx_t_3 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intercomm)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(((PyObject *)((struct PyMPIIntercommObject *)__pyx_t_3)));
  __pyx_v_comm = ((struct PyMPIIntercommObject *)__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1110
 *         #
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_spawn(             # <<<<<<<<<<<<<<
 *             cmd, argv, maxprocs, cinfo, root,
 *             self.ob_mpi, &comm.ob_mpi, ierrcodes) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1112
 *         with nogil: CHKERR( MPI_Comm_spawn(
 *             cmd, argv, maxprocs, cinfo, root,
 *             self.ob_mpi, &comm.ob_mpi, ierrcodes) )             # <<<<<<<<<<<<<<
 *         #
 *         cdef int i=0
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_spawn(__pyx_v_cmd, __pyx_v_argv, __pyx_v_maxprocs, __pyx_v_cinfo, __pyx_v_root, ((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi, (&__pyx_v_comm->__pyx_base.ob_mpi), __pyx_v_ierrcodes)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L10;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1110
 *         #
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_spawn(             # <<<<<<<<<<<<<<
 *             cmd, argv, maxprocs, cinfo, root,
 *             self.ob_mpi, &comm.ob_mpi, ierrcodes) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L11;
        __pyx_L10: __pyx_why = 4; goto __pyx_L11;
        __pyx_L11:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1114
 *             self.ob_mpi, &comm.ob_mpi, ierrcodes) )
 *         #
 *         cdef int i=0             # <<<<<<<<<<<<<<
 *         if errcodes is not None:
 *             errcodes[:] = [ierrcodes[i] for i from 0<=i<maxprocs]
 */
  __pyx_v_i = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1115
 *         #
 *         cdef int i=0
 *         if errcodes is not None:             # <<<<<<<<<<<<<<
 *             errcodes[:] = [ierrcodes[i] for i from 0<=i<maxprocs]
 *         #
 */
  __pyx_t_2 = (__pyx_v_errcodes != Py_None);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1116
 *         cdef int i=0
 *         if errcodes is not None:
 *             errcodes[:] = [ierrcodes[i] for i from 0<=i<maxprocs]             # <<<<<<<<<<<<<<
 *         #
 *         return comm
 */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_1 = __pyx_v_maxprocs;
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
      __pyx_t_4 = PyInt_FromLong((__pyx_v_ierrcodes[__pyx_v_i])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      if (unlikely(PyList_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    if (__Pyx_PySequence_SetSlice(__pyx_v_errcodes, 0, PY_SSIZE_T_MAX, ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    goto __pyx_L13;
  }
  __pyx_L13:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1118
 *             errcodes[:] = [ierrcodes[i] for i from 0<=i<maxprocs]
 *         #
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Spawn_multiple(self, command, args=None, maxprocs=None,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Spawn", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XDECREF(__pyx_v_command);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1120
 *         return comm
 * 
 *     def Spawn_multiple(self, command, args=None, maxprocs=None,             # <<<<<<<<<<<<<<
 *                        info=INFO_NULL, int root=0, errcodes=None):
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_14Spawn_multiple(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_14Spawn_multiple[] = "Intracomm.Spawn_multiple(self, command, args=None, maxprocs=None, info=INFO_NULL, int root=0, errcodes=None)\n\n        Spawn instances of multiple MPI applications\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_14Spawn_multiple(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_command = 0;
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_maxprocs = 0;
  PyObject *__pyx_v_info = 0;
  int __pyx_v_root;
  PyObject *__pyx_v_errcodes = 0;
  int __pyx_v_count;
  char **__pyx_v_cmds;
  char ***__pyx_v_argvs;
  MPI_Info *__pyx_v_infos;
  int *__pyx_v_imaxprocs;
  int *__pyx_v_ierrcodes;
  int __pyx_v_rank;
  PyObject *__pyx_v_tmp1 = 0;
  PyObject *__pyx_v_tmp2 = 0;
  PyObject *__pyx_v_tmp3 = 0;
  PyObject *__pyx_v_tmp4 = 0;
  PyObject *__pyx_v_tmp5 = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  struct PyMPIIntercommObject *__pyx_v_comm = 0;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_p;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__command,&__pyx_n_s__args,&__pyx_n_s__maxprocs,&__pyx_n_s__info,&__pyx_n_s__root,&__pyx_n_s__errcodes,0};
  __Pyx_RefNannySetupContext("Spawn_multiple");
  {
    PyObject* values[6] = {0,0,0,0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_86;

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1121
 * 
 *     def Spawn_multiple(self, command, args=None, maxprocs=None,
 *                        info=INFO_NULL, int root=0, errcodes=None):             # <<<<<<<<<<<<<<
 *         """
 *         Spawn instances of multiple MPI applications
 */
    values[5] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__command);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__args);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__maxprocs);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__info);
          if (value) { values[3] = value; kw_args--; }
        }
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__root);
          if (value) { values[4] = value; kw_args--; }
        }
        case  5:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__errcodes);
          if (value) { values[5] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Spawn_multiple") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_command = values[0];
    __pyx_v_args = values[1];
    __pyx_v_maxprocs = values[2];
    __pyx_v_info = values[3];
    if (values[4]) {
      __pyx_v_root = __Pyx_PyInt_AsInt(values[4]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = ((int)0);
    }
    __pyx_v_errcodes = values[5];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Spawn_multiple", 0, 1, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Spawn_multiple", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1125
 *         Spawn instances of multiple MPI applications
 *         """
 *         cdef int count = 0             # <<<<<<<<<<<<<<
 *         cdef char **cmds = NULL
 *         cdef char ***argvs = MPI_ARGVS_NULL
 */
  __pyx_v_count = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1126
 *         """
 *         cdef int count = 0
 *         cdef char **cmds = NULL             # <<<<<<<<<<<<<<
 *         cdef char ***argvs = MPI_ARGVS_NULL
 *         cdef MPI_Info *infos = NULL
 */
  __pyx_v_cmds = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1127
 *         cdef int count = 0
 *         cdef char **cmds = NULL
 *         cdef char ***argvs = MPI_ARGVS_NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Info *infos = NULL
 *         cdef int *imaxprocs = NULL
 */
  __pyx_v_argvs = MPI_ARGVS_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1128
 *         cdef char **cmds = NULL
 *         cdef char ***argvs = MPI_ARGVS_NULL
 *         cdef MPI_Info *infos = NULL             # <<<<<<<<<<<<<<
 *         cdef int *imaxprocs = NULL
 *         cdef int *ierrcodes = MPI_ERRCODES_IGNORE
 */
  __pyx_v_infos = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1129
 *         cdef char ***argvs = MPI_ARGVS_NULL
 *         cdef MPI_Info *infos = NULL
 *         cdef int *imaxprocs = NULL             # <<<<<<<<<<<<<<
 *         cdef int *ierrcodes = MPI_ERRCODES_IGNORE
 *         #
 */
  __pyx_v_imaxprocs = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1130
 *         cdef MPI_Info *infos = NULL
 *         cdef int *imaxprocs = NULL
 *         cdef int *ierrcodes = MPI_ERRCODES_IGNORE             # <<<<<<<<<<<<<<
 *         #
 *         cdef int rank = MPI_UNDEFINED
 */
  __pyx_v_ierrcodes = MPI_ERRCODES_IGNORE;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1132
 *         cdef int *ierrcodes = MPI_ERRCODES_IGNORE
 *         #
 *         cdef int rank = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         cdef object tmp1, tmp2, tmp3, tmp4, tmp5
 */
  __pyx_v_rank = MPI_UNDEFINED;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1133
 *         #
 *         cdef int rank = MPI_UNDEFINED
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )             # <<<<<<<<<<<<<<
 *         cdef object tmp1, tmp2, tmp3, tmp4, tmp5
 *         cdef Py_ssize_t i=0, n=0
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1135
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         cdef object tmp1, tmp2, tmp3, tmp4, tmp5
 *         cdef Py_ssize_t i=0, n=0             # <<<<<<<<<<<<<<
 *         if root == rank:
 *             count = <int>len(command)
 */
  __pyx_v_i = 0;
  __pyx_v_n = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1136
 *         cdef object tmp1, tmp2, tmp3, tmp4, tmp5
 *         cdef Py_ssize_t i=0, n=0
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             count = <int>len(command)
 *             tmp1 = asarray_str(command, count, &cmds)
 */
  __pyx_t_2 = (__pyx_v_root == __pyx_v_rank);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1137
 *         cdef Py_ssize_t i=0, n=0
 *         if root == rank:
 *             count = <int>len(command)             # <<<<<<<<<<<<<<
 *             tmp1 = asarray_str(command, count, &cmds)
 *             tmp2 = asarray_argvs(args, count, &argvs)
 */
    __pyx_t_3 = PyObject_Length(__pyx_v_command); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_count = ((int)__pyx_t_3);

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1138
 *         if root == rank:
 *             count = <int>len(command)
 *             tmp1 = asarray_str(command, count, &cmds)             # <<<<<<<<<<<<<<
 *             tmp2 = asarray_argvs(args, count, &argvs)
 *             tmp3 = asarray_nprocs(maxprocs, count, &imaxprocs)
 */
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_asarray_str(__pyx_v_command, __pyx_v_count, (&__pyx_v_cmds)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_tmp1 = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1139
 *             count = <int>len(command)
 *             tmp1 = asarray_str(command, count, &cmds)
 *             tmp2 = asarray_argvs(args, count, &argvs)             # <<<<<<<<<<<<<<
 *             tmp3 = asarray_nprocs(maxprocs, count, &imaxprocs)
 *             tmp4 = asarray_Info(info, count, &infos)
 */
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_asarray_argvs(__pyx_v_args, __pyx_v_count, (&__pyx_v_argvs)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_tmp2 = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1140
 *             tmp1 = asarray_str(command, count, &cmds)
 *             tmp2 = asarray_argvs(args, count, &argvs)
 *             tmp3 = asarray_nprocs(maxprocs, count, &imaxprocs)             # <<<<<<<<<<<<<<
 *             tmp4 = asarray_Info(info, count, &infos)
 *         if errcodes is not None:
 */
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_asarray_nprocs(__pyx_v_maxprocs, __pyx_v_count, (&__pyx_v_imaxprocs)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_tmp3 = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1141
 *             tmp2 = asarray_argvs(args, count, &argvs)
 *             tmp3 = asarray_nprocs(maxprocs, count, &imaxprocs)
 *             tmp4 = asarray_Info(info, count, &infos)             # <<<<<<<<<<<<<<
 *         if errcodes is not None:
 *             if root != rank:
 */
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_asarray_Info(__pyx_v_info, __pyx_v_count, (&__pyx_v_infos)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_tmp4 = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1142
 *             tmp3 = asarray_nprocs(maxprocs, count, &imaxprocs)
 *             tmp4 = asarray_Info(info, count, &infos)
 *         if errcodes is not None:             # <<<<<<<<<<<<<<
 *             if root != rank:
 *                 count = <int>len(maxprocs)
 */
  __pyx_t_2 = (__pyx_v_errcodes != Py_None);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1143
 *             tmp4 = asarray_Info(info, count, &infos)
 *         if errcodes is not None:
 *             if root != rank:             # <<<<<<<<<<<<<<
 *                 count = <int>len(maxprocs)
 *                 tmp3 = asarray_nprocs(maxprocs, count, &imaxprocs)
 */
    __pyx_t_2 = (__pyx_v_root != __pyx_v_rank);
    if (__pyx_t_2) {

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1144
 *         if errcodes is not None:
 *             if root != rank:
 *                 count = <int>len(maxprocs)             # <<<<<<<<<<<<<<
 *                 tmp3 = asarray_nprocs(maxprocs, count, &imaxprocs)
 *             for i from 0 <= i < count:
 */
      __pyx_t_3 = PyObject_Length(__pyx_v_maxprocs); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_v_count = ((int)__pyx_t_3);

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1145
 *             if root != rank:
 *                 count = <int>len(maxprocs)
 *                 tmp3 = asarray_nprocs(maxprocs, count, &imaxprocs)             # <<<<<<<<<<<<<<
 *             for i from 0 <= i < count:
 *                 n += imaxprocs[i]
 */
      __pyx_t_4 = __pyx_f_6mpi4py_3MPI_asarray_nprocs(__pyx_v_maxprocs, __pyx_v_count, (&__pyx_v_imaxprocs)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_v_tmp3);
      __pyx_v_tmp3 = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1146
 *                 count = <int>len(maxprocs)
 *                 tmp3 = asarray_nprocs(maxprocs, count, &imaxprocs)
 *             for i from 0 <= i < count:             # <<<<<<<<<<<<<<
 *                 n += imaxprocs[i]
 *             tmp5 = newarray_int(n, &ierrcodes)
 */
    __pyx_t_1 = __pyx_v_count;
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1147
 *                 tmp3 = asarray_nprocs(maxprocs, count, &imaxprocs)
 *             for i from 0 <= i < count:
 *                 n += imaxprocs[i]             # <<<<<<<<<<<<<<
 *             tmp5 = newarray_int(n, &ierrcodes)
 *         #
 */
      __pyx_v_n = (__pyx_v_n + (__pyx_v_imaxprocs[__pyx_v_i]));
    }

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1148
 *             for i from 0 <= i < count:
 *                 n += imaxprocs[i]
 *             tmp5 = newarray_int(n, &ierrcodes)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 */
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_n, (&__pyx_v_ierrcodes)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_tmp5 = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1150
 *             tmp5 = newarray_int(n, &ierrcodes)
 *         #
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_spawn_multiple(
 *             count, cmds, argvs, imaxprocs, infos, root,
 */
  __pyx_t_4 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intercomm)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(((PyObject *)((struct PyMPIIntercommObject *)__pyx_t_4)));
  __pyx_v_comm = ((struct PyMPIIntercommObject *)__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1151
 *         #
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_spawn_multiple(             # <<<<<<<<<<<<<<
 *             count, cmds, argvs, imaxprocs, infos, root,
 *             self.ob_mpi, &comm.ob_mpi, ierrcodes) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1153
 *         with nogil: CHKERR( MPI_Comm_spawn_multiple(
 *             count, cmds, argvs, imaxprocs, infos, root,
 *             self.ob_mpi, &comm.ob_mpi, ierrcodes) )             # <<<<<<<<<<<<<<
 *         #
 *         cdef Py_ssize_t j=0, p=0
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_spawn_multiple(__pyx_v_count, __pyx_v_cmds, __pyx_v_argvs, __pyx_v_imaxprocs, __pyx_v_infos, __pyx_v_root, ((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi, (&__pyx_v_comm->__pyx_base.ob_mpi), __pyx_v_ierrcodes)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L12;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1151
 *         #
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_spawn_multiple(             # <<<<<<<<<<<<<<
 *             count, cmds, argvs, imaxprocs, infos, root,
 *             self.ob_mpi, &comm.ob_mpi, ierrcodes) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L13;
        __pyx_L12: __pyx_why = 4; goto __pyx_L13;
        __pyx_L13:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1155
 *             self.ob_mpi, &comm.ob_mpi, ierrcodes) )
 *         #
 *         cdef Py_ssize_t j=0, p=0             # <<<<<<<<<<<<<<
 *         if errcodes is not None:
 *             errcodes[:] = [[]] * count
 */
  __pyx_v_j = 0;
  __pyx_v_p = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1156
 *         #
 *         cdef Py_ssize_t j=0, p=0
 *         if errcodes is not None:             # <<<<<<<<<<<<<<
 *             errcodes[:] = [[]] * count
 *             for i from 0 <= i < count:
 */
  __pyx_t_2 = (__pyx_v_errcodes != Py_None);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1157
 *         cdef Py_ssize_t j=0, p=0
 *         if errcodes is not None:
 *             errcodes[:] = [[]] * count             # <<<<<<<<<<<<<<
 *             for i from 0 <= i < count:
 *                 n = imaxprocs[i]
 */
    __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyList_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_4));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
    __pyx_t_4 = 0;
    __pyx_t_4 = PyInt_FromLong(__pyx_v_count); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = PyNumber_Multiply(((PyObject *)__pyx_t_5), __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__Pyx_PySequence_SetSlice(__pyx_v_errcodes, 0, PY_SSIZE_T_MAX, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1158
 *         if errcodes is not None:
 *             errcodes[:] = [[]] * count
 *             for i from 0 <= i < count:             # <<<<<<<<<<<<<<
 *                 n = imaxprocs[i]
 *                 errcodes[i] = \
 */
    __pyx_t_1 = __pyx_v_count;
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1159
 *             errcodes[:] = [[]] * count
 *             for i from 0 <= i < count:
 *                 n = imaxprocs[i]             # <<<<<<<<<<<<<<
 *                 errcodes[i] = \
 *                     [ierrcodes[j] for j from p<=j<(p+n)]
 */
      __pyx_v_n = (__pyx_v_imaxprocs[__pyx_v_i]);

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1161
 *                 n = imaxprocs[i]
 *                 errcodes[i] = \
 *                     [ierrcodes[j] for j from p<=j<(p+n)]             # <<<<<<<<<<<<<<
 *                 p += n
 *         #
 */
      __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_6));
      __pyx_t_3 = (__pyx_v_p + __pyx_v_n);
      for (__pyx_v_j = __pyx_v_p; __pyx_v_j < __pyx_t_3; __pyx_v_j++) {
        __pyx_t_4 = PyInt_FromLong((__pyx_v_ierrcodes[__pyx_v_j])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        if (unlikely(PyList_Append(__pyx_t_6, (PyObject*)__pyx_t_4))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1160
 *             for i from 0 <= i < count:
 *                 n = imaxprocs[i]
 *                 errcodes[i] = \             # <<<<<<<<<<<<<<
 *                     [ierrcodes[j] for j from p<=j<(p+n)]
 *                 p += n
 */
      if (__Pyx_SetItemInt(__pyx_v_errcodes, __pyx_v_i, ((PyObject *)__pyx_t_6), sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1162
 *                 errcodes[i] = \
 *                     [ierrcodes[j] for j from p<=j<(p+n)]
 *                 p += n             # <<<<<<<<<<<<<<
 *         #
 *         return comm
 */
      __pyx_v_p = (__pyx_v_p + __pyx_v_n);
    }
    goto __pyx_L15;
  }
  __pyx_L15:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1164
 *                 p += n
 *         #
 *         return comm             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Spawn_multiple", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_XDECREF(__pyx_v_tmp3);
  __Pyx_XDECREF(__pyx_v_tmp4);
  __Pyx_XDECREF(__pyx_v_tmp5);
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1169
 *     # Server Routines
 * 
 *     def Accept(self, port_name, Info info=INFO_NULL, int root=0):             # <<<<<<<<<<<<<<
 *         """
 *         Accept a request to form a new intercommunicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_15Accept(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_15Accept[] = "Intracomm.Accept(self, port_name, Info info=INFO_NULL, int root=0)\n\n        Accept a request to form a new intercommunicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_15Accept(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_port_name = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  int __pyx_v_root;
  char *__pyx_v_cportname;
  MPI_Info __pyx_v_cinfo;
  int __pyx_v_rank;
  struct PyMPIIntercommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__port_name,&__pyx_n_s__info,&__pyx_n_s__root,0};
  __Pyx_RefNannySetupContext("Accept");
  {
    PyObject* values[3] = {0,0,0};
    values[1] = (PyObject *)__pyx_k_87;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__port_name);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__info);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__root);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Accept") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_port_name = values[0];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[1]);
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Accept", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Accept", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_port_name);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 1, "info", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1173
 *         Accept a request to form a new intercommunicator
 *         """
 *         cdef char *cportname = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Info cinfo = MPI_INFO_NULL
 *         cdef int rank = MPI_UNDEFINED
 */
  __pyx_v_cportname = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1174
 *         """
 *         cdef char *cportname = NULL
 *         cdef MPI_Info cinfo = MPI_INFO_NULL             # <<<<<<<<<<<<<<
 *         cdef int rank = MPI_UNDEFINED
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 */
  __pyx_v_cinfo = MPI_INFO_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1175
 *         cdef char *cportname = NULL
 *         cdef MPI_Info cinfo = MPI_INFO_NULL
 *         cdef int rank = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         if root == rank:
 */
  __pyx_v_rank = MPI_UNDEFINED;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1176
 *         cdef MPI_Info cinfo = MPI_INFO_NULL
 *         cdef int rank = MPI_UNDEFINED
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )             # <<<<<<<<<<<<<<
 *         if root == rank:
 *             port_name = asmpistr(port_name, &cportname, NULL)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1177
 *         cdef int rank = MPI_UNDEFINED
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             port_name = asmpistr(port_name, &cportname, NULL)
 *             cinfo = arg_Info(info)
 */
  __pyx_t_2 = (__pyx_v_root == __pyx_v_rank);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1178
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         if root == rank:
 *             port_name = asmpistr(port_name, &cportname, NULL)             # <<<<<<<<<<<<<<
 *             cinfo = arg_Info(info)
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_port_name, (&__pyx_v_cportname), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_v_port_name);
    __pyx_v_port_name = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1179
 *         if root == rank:
 *             port_name = asmpistr(port_name, &cportname, NULL)
 *             cinfo = arg_Info(info)             # <<<<<<<<<<<<<<
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_accept(
 */
    __pyx_v_cinfo = __pyx_f_6mpi4py_3MPI_arg_Info(((PyObject *)__pyx_v_info));
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1180
 *             port_name = asmpistr(port_name, &cportname, NULL)
 *             cinfo = arg_Info(info)
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_accept(
 *             cportname, cinfo, root,
 */
  __pyx_t_3 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intercomm)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(((PyObject *)((struct PyMPIIntercommObject *)__pyx_t_3)));
  __pyx_v_comm = ((struct PyMPIIntercommObject *)__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1181
 *             cinfo = arg_Info(info)
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_accept(             # <<<<<<<<<<<<<<
 *             cportname, cinfo, root,
 *             self.ob_mpi, &comm.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1183
 *         with nogil: CHKERR( MPI_Comm_accept(
 *             cportname, cinfo, root,
 *             self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_accept(__pyx_v_cportname, __pyx_v_cinfo, __pyx_v_root, ((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L8;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1181
 *             cinfo = arg_Info(info)
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_accept(             # <<<<<<<<<<<<<<
 *             cportname, cinfo, root,
 *             self.ob_mpi, &comm.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L9;
        __pyx_L8: __pyx_why = 4; goto __pyx_L9;
        __pyx_L9:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1184
 *             cportname, cinfo, root,
 *             self.ob_mpi, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     # Client Routines
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Accept", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XDECREF(__pyx_v_port_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1188
 *     # Client Routines
 * 
 *     def Connect(self, port_name, Info info=INFO_NULL, int root=0):             # <<<<<<<<<<<<<<
 *         """
 *         Make a request to form a new intercommunicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_16Connect(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_16Connect[] = "Intracomm.Connect(self, port_name, Info info=INFO_NULL, int root=0)\n\n        Make a request to form a new intercommunicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_16Connect(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_port_name = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  int __pyx_v_root;
  char *__pyx_v_cportname;
  MPI_Info __pyx_v_cinfo;
  int __pyx_v_rank;
  struct PyMPIIntercommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__port_name,&__pyx_n_s__info,&__pyx_n_s__root,0};
  __Pyx_RefNannySetupContext("Connect");
  {
    PyObject* values[3] = {0,0,0};
    values[1] = (PyObject *)__pyx_k_88;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__port_name);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__info);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__root);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Connect") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_port_name = values[0];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[1]);
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Connect", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Connect", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_port_name);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 1, "info", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1192
 *         Make a request to form a new intercommunicator
 *         """
 *         cdef char *cportname = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Info cinfo = MPI_INFO_NULL
 *         cdef int rank = MPI_UNDEFINED
 */
  __pyx_v_cportname = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1193
 *         """
 *         cdef char *cportname = NULL
 *         cdef MPI_Info cinfo = MPI_INFO_NULL             # <<<<<<<<<<<<<<
 *         cdef int rank = MPI_UNDEFINED
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 */
  __pyx_v_cinfo = MPI_INFO_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1194
 *         cdef char *cportname = NULL
 *         cdef MPI_Info cinfo = MPI_INFO_NULL
 *         cdef int rank = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         if root == rank:
 */
  __pyx_v_rank = MPI_UNDEFINED;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1195
 *         cdef MPI_Info cinfo = MPI_INFO_NULL
 *         cdef int rank = MPI_UNDEFINED
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )             # <<<<<<<<<<<<<<
 *         if root == rank:
 *             port_name = asmpistr(port_name, &cportname, NULL)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1196
 *         cdef int rank = MPI_UNDEFINED
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             port_name = asmpistr(port_name, &cportname, NULL)
 *             cinfo = arg_Info(info)
 */
  __pyx_t_2 = (__pyx_v_root == __pyx_v_rank);
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1197
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         if root == rank:
 *             port_name = asmpistr(port_name, &cportname, NULL)             # <<<<<<<<<<<<<<
 *             cinfo = arg_Info(info)
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_port_name, (&__pyx_v_cportname), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_v_port_name);
    __pyx_v_port_name = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1198
 *         if root == rank:
 *             port_name = asmpistr(port_name, &cportname, NULL)
 *             cinfo = arg_Info(info)             # <<<<<<<<<<<<<<
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_connect(
 */
    __pyx_v_cinfo = __pyx_f_6mpi4py_3MPI_arg_Info(((PyObject *)__pyx_v_info));
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1199
 *             port_name = asmpistr(port_name, &cportname, NULL)
 *             cinfo = arg_Info(info)
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_connect(
 *             cportname, cinfo, root,
 */
  __pyx_t_3 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intercomm)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(((PyObject *)((struct PyMPIIntercommObject *)__pyx_t_3)));
  __pyx_v_comm = ((struct PyMPIIntercommObject *)__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1200
 *             cinfo = arg_Info(info)
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_connect(             # <<<<<<<<<<<<<<
 *             cportname, cinfo, root,
 *             self.ob_mpi, &comm.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1202
 *         with nogil: CHKERR( MPI_Comm_connect(
 *             cportname, cinfo, root,
 *             self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_connect(__pyx_v_cportname, __pyx_v_cinfo, __pyx_v_root, ((struct PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1200; __pyx_clineno = __LINE__; goto __pyx_L8;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1200
 *             cinfo = arg_Info(info)
 *         cdef Intercomm comm = <Intercomm>Intercomm.__new__(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_connect(             # <<<<<<<<<<<<<<
 *             cportname, cinfo, root,
 *             self.ob_mpi, &comm.ob_mpi) )
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L9;
        __pyx_L8: __pyx_why = 4; goto __pyx_L9;
        __pyx_L9:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1203
 *             cportname, cinfo, root,
 *             self.ob_mpi, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Connect", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XDECREF(__pyx_v_port_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1212
 *     """
 * 
 *     def __cinit__(self, Comm comm=None):             # <<<<<<<<<<<<<<
 *         cdef int topo = MPI_CART
 *         if self.ob_mpi != MPI_COMM_NULL:
 */

static int __pyx_pf_6mpi4py_3MPI_8Cartcomm___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_8Cartcomm___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  int __pyx_v_topo;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__comm,0};
  __Pyx_RefNannySetupContext("__cinit__");
  {
    PyObject* values[1] = {0};
    values[0] = (PyObject *)((struct PyMPICommObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__comm);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1213
 * 
 *     def __cinit__(self, Comm comm=None):
 *         cdef int topo = MPI_CART             # <<<<<<<<<<<<<<
 *         if self.ob_mpi != MPI_COMM_NULL:
 *             CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 */
  __pyx_v_topo = MPI_CART;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1214
 *     def __cinit__(self, Comm comm=None):
 *         cdef int topo = MPI_CART
 *         if self.ob_mpi != MPI_COMM_NULL:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *             if topo != MPI_CART: raise TypeError(
 */
  __pyx_t_1 = (((struct PyMPICartcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi != MPI_COMM_NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1215
 *         cdef int topo = MPI_CART
 *         if self.ob_mpi != MPI_COMM_NULL:
 *             CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )             # <<<<<<<<<<<<<<
 *             if topo != MPI_CART: raise TypeError(
 *                 "expecting a Cartesian communicator")
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Topo_test(((struct PyMPICartcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_topo))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1216
 *         if self.ob_mpi != MPI_COMM_NULL:
 *             CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *             if topo != MPI_CART: raise TypeError(             # <<<<<<<<<<<<<<
 *                 "expecting a Cartesian communicator")
 * 
 */
    __pyx_t_1 = (__pyx_v_topo != MPI_CART);
    if (__pyx_t_1) {
      __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_90), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1222
 *     # -------------------------
 * 
 *     def Dup(self):             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate an existing communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_1Dup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Cartcomm_1Dup[] = "Cartcomm.Dup(self)\n\n        Duplicate an existing communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_1Dup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPICartcommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Dup");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Dup", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Dup", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1226
 *         Duplicate an existing communicator
 *         """
 *         cdef Cartcomm comm = <Cartcomm>type(self)()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )
 *         return comm
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPICartcommObject *)__pyx_t_1)));
  __pyx_v_comm = ((struct PyMPICartcommObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1227
 *         """
 *         cdef Cartcomm comm = <Cartcomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_dup(((struct PyMPICartcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_comm->__pyx_base.__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1227; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1228
 *         cdef Cartcomm comm = <Cartcomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     # Cartesian Inquiry Functions
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Dup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1233
 *     # ---------------------------
 * 
 *     def Get_dim(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return number of dimensions
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_2Get_dim(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Cartcomm_2Get_dim[] = "Cartcomm.Get_dim(self)\n\n        Return number of dimensions\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_2Get_dim(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_dim;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_dim");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_dim", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_dim", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1237
 *         Return number of dimensions
 *         """
 *         cdef int dim = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &dim) )
 *         return dim
 */
  __pyx_v_dim = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1238
 *         """
 *         cdef int dim = 0
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &dim) )             # <<<<<<<<<<<<<<
 *         return dim
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cartdim_get(((struct PyMPICartcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_dim))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1239
 *         cdef int dim = 0
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &dim) )
 *         return dim             # <<<<<<<<<<<<<<
 * 
 *     property dim:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_dim); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Get_dim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1243
 *     property dim:
 *         """number of dimensions"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_dim()
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_3dim___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_3dim___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1244
 *         """number of dimensions"""
 *         def __get__(self):
 *             return self.Get_dim()             # <<<<<<<<<<<<<<
 * 
 *     property ndim:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_dim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.dim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1248
 *     property ndim:
 *         """number of dimensions"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_dim()
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_4ndim___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_4ndim___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1249
 *         """number of dimensions"""
 *         def __get__(self):
 *             return self.Get_dim()             # <<<<<<<<<<<<<<
 * 
 *     def Get_topo(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_dim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.ndim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1251
 *             return self.Get_dim()
 * 
 *     def Get_topo(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return information on the cartesian topology
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_3Get_topo(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Cartcomm_3Get_topo[] = "Cartcomm.Get_topo(self)\n\n        Return information on the cartesian topology\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_3Get_topo(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_ndim;
  int *__pyx_v_idims;
  PyObject *__pyx_v_tmp1 = 0;
  int *__pyx_v_iperiods;
  PyObject *__pyx_v_tmp2 = 0;
  int *__pyx_v_icoords;
  PyObject *__pyx_v_tmp3 = 0;
  int __pyx_v_i;
  PyObject *__pyx_v_dims = 0;
  PyObject *__pyx_v_periods = 0;
  PyObject *__pyx_v_coords = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_topo");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_topo", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_topo", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1255
 *         Return information on the cartesian topology
 *         """
 *         cdef int ndim = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         cdef int *idims = NULL
 */
  __pyx_v_ndim = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1256
 *         """
 *         cdef int ndim = 0
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )             # <<<<<<<<<<<<<<
 *         cdef int *idims = NULL
 *         cdef tmp1 = newarray_int(ndim, &idims)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cartdim_get(((struct PyMPICartcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_ndim))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1257
 *         cdef int ndim = 0
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         cdef int *idims = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp1 = newarray_int(ndim, &idims)
 *         cdef int *iperiods = NULL
 */
  __pyx_v_idims = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1258
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         cdef int *idims = NULL
 *         cdef tmp1 = newarray_int(ndim, &idims)             # <<<<<<<<<<<<<<
 *         cdef int *iperiods = NULL
 *         cdef tmp2 = newarray_int(ndim, &iperiods)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_ndim, (&__pyx_v_idims)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1259
 *         cdef int *idims = NULL
 *         cdef tmp1 = newarray_int(ndim, &idims)
 *         cdef int *iperiods = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp2 = newarray_int(ndim, &iperiods)
 *         cdef int *icoords = NULL
 */
  __pyx_v_iperiods = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1260
 *         cdef tmp1 = newarray_int(ndim, &idims)
 *         cdef int *iperiods = NULL
 *         cdef tmp2 = newarray_int(ndim, &iperiods)             # <<<<<<<<<<<<<<
 *         cdef int *icoords = NULL
 *         cdef tmp3 = newarray_int(ndim, &icoords)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_ndim, (&__pyx_v_iperiods)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1261
 *         cdef int *iperiods = NULL
 *         cdef tmp2 = newarray_int(ndim, &iperiods)
 *         cdef int *icoords = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp3 = newarray_int(ndim, &icoords)
 *         CHKERR( MPI_Cart_get(self.ob_mpi, ndim, idims, iperiods, icoords) )
 */
  __pyx_v_icoords = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1262
 *         cdef tmp2 = newarray_int(ndim, &iperiods)
 *         cdef int *icoords = NULL
 *         cdef tmp3 = newarray_int(ndim, &icoords)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cart_get(self.ob_mpi, ndim, idims, iperiods, icoords) )
 *         cdef int i = 0
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_ndim, (&__pyx_v_icoords)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp3 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1263
 *         cdef int *icoords = NULL
 *         cdef tmp3 = newarray_int(ndim, &icoords)
 *         CHKERR( MPI_Cart_get(self.ob_mpi, ndim, idims, iperiods, icoords) )             # <<<<<<<<<<<<<<
 *         cdef int i = 0
 *         cdef object dims    = [idims[i]    for i from 0 <= i < ndim]
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cart_get(((struct PyMPICartcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, __pyx_v_ndim, __pyx_v_idims, __pyx_v_iperiods, __pyx_v_icoords)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1264
 *         cdef tmp3 = newarray_int(ndim, &icoords)
 *         CHKERR( MPI_Cart_get(self.ob_mpi, ndim, idims, iperiods, icoords) )
 *         cdef int i = 0             # <<<<<<<<<<<<<<
 *         cdef object dims    = [idims[i]    for i from 0 <= i < ndim]
 *         cdef object periods = [iperiods[i] for i from 0 <= i < ndim]
 */
  __pyx_v_i = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1265
 *         CHKERR( MPI_Cart_get(self.ob_mpi, ndim, idims, iperiods, icoords) )
 *         cdef int i = 0
 *         cdef object dims    = [idims[i]    for i from 0 <= i < ndim]             # <<<<<<<<<<<<<<
 *         cdef object periods = [iperiods[i] for i from 0 <= i < ndim]
 *         cdef object coords  = [icoords[i]  for i from 0 <= i < ndim]
 */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_1 = __pyx_v_ndim;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
    __pyx_t_3 = PyInt_FromLong((__pyx_v_idims[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __pyx_v_dims = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1266
 *         cdef int i = 0
 *         cdef object dims    = [idims[i]    for i from 0 <= i < ndim]
 *         cdef object periods = [iperiods[i] for i from 0 <= i < ndim]             # <<<<<<<<<<<<<<
 *         cdef object coords  = [icoords[i]  for i from 0 <= i < ndim]
 *         return (dims, periods, coords)
 */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_1 = __pyx_v_ndim;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
    __pyx_t_3 = PyInt_FromLong((__pyx_v_iperiods[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __pyx_v_periods = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1267
 *         cdef object dims    = [idims[i]    for i from 0 <= i < ndim]
 *         cdef object periods = [iperiods[i] for i from 0 <= i < ndim]
 *         cdef object coords  = [icoords[i]  for i from 0 <= i < ndim]             # <<<<<<<<<<<<<<
 *         return (dims, periods, coords)
 * 
 */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_1 = __pyx_v_ndim;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
    __pyx_t_3 = PyInt_FromLong((__pyx_v_icoords[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __pyx_v_coords = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1268
 *         cdef object periods = [iperiods[i] for i from 0 <= i < ndim]
 *         cdef object coords  = [icoords[i]  for i from 0 <= i < ndim]
 *         return (dims, periods, coords)             # <<<<<<<<<<<<<<
 * 
 *     property topo:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_dims);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_dims);
  __Pyx_GIVEREF(__pyx_v_dims);
  __Pyx_INCREF(__pyx_v_periods);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_periods);
  __Pyx_GIVEREF(__pyx_v_periods);
  __Pyx_INCREF(__pyx_v_coords);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_coords);
  __Pyx_GIVEREF(__pyx_v_coords);
  __pyx_r = ((PyObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Get_topo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_XDECREF(__pyx_v_tmp3);
  __Pyx_XDECREF(__pyx_v_dims);
  __Pyx_XDECREF(__pyx_v_periods);
  __Pyx_XDECREF(__pyx_v_coords);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1272
 *     property topo:
 *         """topology information"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_topo()
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_4topo___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_4topo___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1273
 *         """topology information"""
 *         def __get__(self):
 *             return self.Get_topo()             # <<<<<<<<<<<<<<
 * 
 *     property dims:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_topo); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.topo.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1277
 *     property dims:
 *         """dimensions"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_topo()[0]
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_4dims___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_4dims___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1278
 *         """dimensions"""
 *         def __get__(self):
 *             return self.Get_topo()[0]             # <<<<<<<<<<<<<<
 * 
 *     property periods:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_topo); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.dims.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1282
 *     property periods:
 *         """periodicity"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_topo()[1]
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_7periods___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_7periods___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1283
 *         """periodicity"""
 *         def __get__(self):
 *             return self.Get_topo()[1]             # <<<<<<<<<<<<<<
 * 
 *     property coords:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_topo); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.periods.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1287
 *     property coords:
 *         """coordinates"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_topo()[2]
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_6coords___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_6coords___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1288
 *         """coordinates"""
 *         def __get__(self):
 *             return self.Get_topo()[2]             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_topo); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.coords.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1294
 *     # ------------------------------
 * 
 *     def Get_cart_rank(self, coords):             # <<<<<<<<<<<<<<
 *         """
 *         Translate logical coordinates to ranks
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_4Get_cart_rank(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Cartcomm_4Get_cart_rank[] = "Cartcomm.Get_cart_rank(self, coords)\n\n        Translate logical coordinates to ranks\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_4Get_cart_rank(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_coords = 0;
  int __pyx_v_ndim;
  int *__pyx_v_icoords;
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__coords,0};
  __Pyx_RefNannySetupContext("Get_cart_rank");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__coords);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Get_cart_rank") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_coords = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_cart_rank", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Get_cart_rank", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_coords);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1298
 *         Translate logical coordinates to ranks
 *         """
 *         cdef int ndim = 0, *icoords = NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cartdim_get( self.ob_mpi, &ndim) )
 *         coords = chkarray_int(coords, ndim, &icoords)
 */
  __pyx_v_ndim = 0;
  __pyx_v_icoords = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1299
 *         """
 *         cdef int ndim = 0, *icoords = NULL
 *         CHKERR( MPI_Cartdim_get( self.ob_mpi, &ndim) )             # <<<<<<<<<<<<<<
 *         coords = chkarray_int(coords, ndim, &icoords)
 *         cdef int rank = MPI_PROC_NULL
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cartdim_get(((struct PyMPICartcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_ndim))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1300
 *         cdef int ndim = 0, *icoords = NULL
 *         CHKERR( MPI_Cartdim_get( self.ob_mpi, &ndim) )
 *         coords = chkarray_int(coords, ndim, &icoords)             # <<<<<<<<<<<<<<
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Cart_rank(self.ob_mpi, icoords, &rank) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_chkarray_int(__pyx_v_coords, __pyx_v_ndim, (&__pyx_v_icoords)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_coords);
  __pyx_v_coords = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1301
 *         CHKERR( MPI_Cartdim_get( self.ob_mpi, &ndim) )
 *         coords = chkarray_int(coords, ndim, &icoords)
 *         cdef int rank = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cart_rank(self.ob_mpi, icoords, &rank) )
 *         return rank
 */
  __pyx_v_rank = MPI_PROC_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1302
 *         coords = chkarray_int(coords, ndim, &icoords)
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Cart_rank(self.ob_mpi, icoords, &rank) )             # <<<<<<<<<<<<<<
 *         return rank
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cart_rank(((struct PyMPICartcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, __pyx_v_icoords, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1303
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Cart_rank(self.ob_mpi, icoords, &rank) )
 *         return rank             # <<<<<<<<<<<<<<
 * 
 *     def Get_coords(self, int rank):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_rank); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Get_cart_rank", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_coords);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1305
 *         return rank
 * 
 *     def Get_coords(self, int rank):             # <<<<<<<<<<<<<<
 *         """
 *         Translate ranks to logical coordinates
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_5Get_coords(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Cartcomm_5Get_coords[] = "Cartcomm.Get_coords(self, int rank)\n\n        Translate ranks to logical coordinates\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_5Get_coords(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_rank;
  int __pyx_v_ndim;
  int *__pyx_v_icoords;
  PyObject *__pyx_v_coords = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__rank,0};
  __Pyx_RefNannySetupContext("Get_coords");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__rank);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Get_coords") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_rank = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_coords", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Get_coords", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1309
 *         Translate ranks to logical coordinates
 *         """
 *         cdef int ndim = 0, *icoords = NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         cdef object coords = newarray_int(ndim, &icoords)
 */
  __pyx_v_ndim = 0;
  __pyx_v_icoords = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1310
 *         """
 *         cdef int ndim = 0, *icoords = NULL
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )             # <<<<<<<<<<<<<<
 *         cdef object coords = newarray_int(ndim, &icoords)
 *         CHKERR( MPI_Cart_coords(self.ob_mpi, rank, ndim, icoords) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cartdim_get(((struct PyMPICartcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_ndim))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1311
 *         cdef int ndim = 0, *icoords = NULL
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         cdef object coords = newarray_int(ndim, &icoords)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cart_coords(self.ob_mpi, rank, ndim, icoords) )
 *         return coords
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_ndim, (&__pyx_v_icoords)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_coords = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1312
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         cdef object coords = newarray_int(ndim, &icoords)
 *         CHKERR( MPI_Cart_coords(self.ob_mpi, rank, ndim, icoords) )             # <<<<<<<<<<<<<<
 *         return coords
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cart_coords(((struct PyMPICartcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, __pyx_v_rank, __pyx_v_ndim, __pyx_v_icoords)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1313
 *         cdef object coords = newarray_int(ndim, &icoords)
 *         CHKERR( MPI_Cart_coords(self.ob_mpi, rank, ndim, icoords) )
 *         return coords             # <<<<<<<<<<<<<<
 * 
 *     # Cartesian Shift Function
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_coords);
  __pyx_r = __pyx_v_coords;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Get_coords", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_coords);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1318
 *     # ------------------------
 * 
 *     def Shift(self, int direction, int disp):             # <<<<<<<<<<<<<<
 *         """
 *         Return a tuple (source,dest) of process ranks
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_6Shift(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Cartcomm_6Shift[] = "Cartcomm.Shift(self, int direction, int disp)\n\n        Return a tuple (source,dest) of process ranks\n        for data shifting with Comm.Sendrecv()\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_6Shift(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_direction;
  int __pyx_v_disp;
  int __pyx_v_source;
  int __pyx_v_dest;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__direction,&__pyx_n_s__disp,0};
  __Pyx_RefNannySetupContext("Shift");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__direction);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__disp);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Shift", 1, 2, 2, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Shift") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_direction = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_direction == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_disp = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_disp == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Shift", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Shift", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1323
 *         for data shifting with Comm.Sendrecv()
 *         """
 *         cdef int source = MPI_PROC_NULL, dest = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cart_shift(self.ob_mpi, direction, disp, &source, &dest) )
 *         return (source, dest)
 */
  __pyx_v_source = MPI_PROC_NULL;
  __pyx_v_dest = MPI_PROC_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1324
 *         """
 *         cdef int source = MPI_PROC_NULL, dest = MPI_PROC_NULL
 *         CHKERR( MPI_Cart_shift(self.ob_mpi, direction, disp, &source, &dest) )             # <<<<<<<<<<<<<<
 *         return (source, dest)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cart_shift(((struct PyMPICartcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, __pyx_v_direction, __pyx_v_disp, (&__pyx_v_source), (&__pyx_v_dest))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1325
 *         cdef int source = MPI_PROC_NULL, dest = MPI_PROC_NULL
 *         CHKERR( MPI_Cart_shift(self.ob_mpi, direction, disp, &source, &dest) )
 *         return (source, dest)             # <<<<<<<<<<<<<<
 * 
 *     # Cartesian Partition Function
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_source); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromLong(__pyx_v_dest); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_r = ((PyObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Shift", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1330
 *     # ----------------------------
 * 
 *     def Sub(self, remain_dims):             # <<<<<<<<<<<<<<
 *         """
 *         Return cartesian communicators
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_7Sub(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Cartcomm_7Sub[] = "Cartcomm.Sub(self, remain_dims)\n\n        Return cartesian communicators\n        that form lower-dimensional subgrids\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_7Sub(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_remain_dims = 0;
  int __pyx_v_ndim;
  int *__pyx_v_iremdims;
  struct PyMPICartcommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__remain_dims,0};
  __Pyx_RefNannySetupContext("Sub");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__remain_dims);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Sub") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_remain_dims = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Sub", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Sub", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_remain_dims);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1335
 *         that form lower-dimensional subgrids
 *         """
 *         cdef int ndim = 0, *iremdims = NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         remain_dims = chkarray_int(remain_dims, ndim, &iremdims)
 */
  __pyx_v_ndim = 0;
  __pyx_v_iremdims = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1336
 *         """
 *         cdef int ndim = 0, *iremdims = NULL
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )             # <<<<<<<<<<<<<<
 *         remain_dims = chkarray_int(remain_dims, ndim, &iremdims)
 *         cdef Cartcomm comm = <Cartcomm>Cartcomm.__new__(Cartcomm)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cartdim_get(((struct PyMPICartcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_ndim))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1337
 *         cdef int ndim = 0, *iremdims = NULL
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         remain_dims = chkarray_int(remain_dims, ndim, &iremdims)             # <<<<<<<<<<<<<<
 *         cdef Cartcomm comm = <Cartcomm>Cartcomm.__new__(Cartcomm)
 *         with nogil: CHKERR( MPI_Cart_sub(self.ob_mpi, iremdims, &comm.ob_mpi) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_chkarray_int(__pyx_v_remain_dims, __pyx_v_ndim, (&__pyx_v_iremdims)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_remain_dims);
  __pyx_v_remain_dims = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1338
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         remain_dims = chkarray_int(remain_dims, ndim, &iremdims)
 *         cdef Cartcomm comm = <Cartcomm>Cartcomm.__new__(Cartcomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Cart_sub(self.ob_mpi, iremdims, &comm.ob_mpi) )
 *         return comm
 */
  __pyx_t_2 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Cartcomm)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)((struct PyMPICartcommObject *)__pyx_t_2)));
  __pyx_v_comm = ((struct PyMPICartcommObject *)__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1339
 *         remain_dims = chkarray_int(remain_dims, ndim, &iremdims)
 *         cdef Cartcomm comm = <Cartcomm>Cartcomm.__new__(Cartcomm)
 *         with nogil: CHKERR( MPI_Cart_sub(self.ob_mpi, iremdims, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cart_sub(((struct PyMPICartcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, __pyx_v_iremdims, (&__pyx_v_comm->__pyx_base.__pyx_base.ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1340
 *         cdef Cartcomm comm = <Cartcomm>Cartcomm.__new__(Cartcomm)
 *         with nogil: CHKERR( MPI_Cart_sub(self.ob_mpi, iremdims, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Sub", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XDECREF(__pyx_v_remain_dims);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1346
 *     # -----------------------------
 * 
 *     def Map(self, dims, periods=None):             # <<<<<<<<<<<<<<
 *         """
 *         Return an optimal placement for the
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_8Map(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Cartcomm_8Map[] = "Cartcomm.Map(self, dims, periods=None)\n\n        Return an optimal placement for the\n        calling process on the physical machine\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_8Map(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_dims = 0;
  PyObject *__pyx_v_periods = 0;
  int __pyx_v_ndims;
  int *__pyx_v_idims;
  int *__pyx_v_iperiods;
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__dims,&__pyx_n_s__periods,0};
  __Pyx_RefNannySetupContext("Map");
  {
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dims);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__periods);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Map") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_dims = values[0];
    __pyx_v_periods = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Map", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Map", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_dims);
  __Pyx_INCREF(__pyx_v_periods);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1351
 *         calling process on the physical machine
 *         """
 *         cdef int ndims = 0, *idims = NULL, *iperiods = NULL             # <<<<<<<<<<<<<<
 *         dims = getarray_int(dims, &ndims, &idims)
 *         if periods is None: periods = [False] * ndims
 */
  __pyx_v_ndims = 0;
  __pyx_v_idims = NULL;
  __pyx_v_iperiods = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1352
 *         """
 *         cdef int ndims = 0, *idims = NULL, *iperiods = NULL
 *         dims = getarray_int(dims, &ndims, &idims)             # <<<<<<<<<<<<<<
 *         if periods is None: periods = [False] * ndims
 *         periods = chkarray_int(periods, ndims, &iperiods)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_getarray_int(__pyx_v_dims, (&__pyx_v_ndims), (&__pyx_v_idims)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_dims);
  __pyx_v_dims = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1353
 *         cdef int ndims = 0, *idims = NULL, *iperiods = NULL
 *         dims = getarray_int(dims, &ndims, &idims)
 *         if periods is None: periods = [False] * ndims             # <<<<<<<<<<<<<<
 *         periods = chkarray_int(periods, ndims, &iperiods)
 *         cdef int rank = MPI_PROC_NULL
 */
  __pyx_t_2 = (__pyx_v_periods == Py_None);
  if (__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromLong(__pyx_v_ndims); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyNumber_Multiply(((PyObject *)__pyx_t_3), __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_periods);
    __pyx_v_periods = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1354
 *         dims = getarray_int(dims, &ndims, &idims)
 *         if periods is None: periods = [False] * ndims
 *         periods = chkarray_int(periods, ndims, &iperiods)             # <<<<<<<<<<<<<<
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Cart_map(self.ob_mpi, ndims, idims, iperiods, &rank) )
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_chkarray_int(__pyx_v_periods, __pyx_v_ndims, (&__pyx_v_iperiods)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_v_periods);
  __pyx_v_periods = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1355
 *         if periods is None: periods = [False] * ndims
 *         periods = chkarray_int(periods, ndims, &iperiods)
 *         cdef int rank = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cart_map(self.ob_mpi, ndims, idims, iperiods, &rank) )
 *         return rank
 */
  __pyx_v_rank = MPI_PROC_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1356
 *         periods = chkarray_int(periods, ndims, &iperiods)
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Cart_map(self.ob_mpi, ndims, idims, iperiods, &rank) )             # <<<<<<<<<<<<<<
 *         return rank
 * 
 */
  __pyx_t_5 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cart_map(((struct PyMPICartcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, __pyx_v_ndims, __pyx_v_idims, __pyx_v_iperiods, (&__pyx_v_rank))); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1357
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Cart_map(self.ob_mpi, ndims, idims, iperiods, &rank) )
 *         return rank             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = PyInt_FromLong(__pyx_v_rank); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Map", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dims);
  __Pyx_XDECREF(__pyx_v_periods);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1362
 * # Cartesian Convenience Function
 * 
 * def Compute_dims(int nnodes, dims):             # <<<<<<<<<<<<<<
 *     """
 *     Return a balanced distribution of
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Compute_dims(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Compute_dims[] = "Compute_dims(int nnodes, dims)\n\n    Return a balanced distribution of\n    processes per coordinate direction\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Compute_dims = {__Pyx_NAMESTR("Compute_dims"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Compute_dims, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Compute_dims)};
static PyObject *__pyx_pf_6mpi4py_3MPI_6Compute_dims(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_nnodes;
  PyObject *__pyx_v_dims = 0;
  int __pyx_v_ndims;
  int *__pyx_v_idims;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__nnodes,&__pyx_n_s__dims,0};
  __Pyx_RefNannySetupContext("Compute_dims");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__nnodes);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dims);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Compute_dims", 1, 2, 2, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1362; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Compute_dims") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1362; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_nnodes = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_nnodes == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1362; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_dims = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Compute_dims", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1362; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Compute_dims", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_dims);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1367
 *     processes per coordinate direction
 *     """
 *     cdef int ndims=0, *idims = NULL             # <<<<<<<<<<<<<<
 *     try:
 *         ndims = <int>len(dims)
 */
  __pyx_v_ndims = 0;
  __pyx_v_idims = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1368
 *     """
 *     cdef int ndims=0, *idims = NULL
 *     try:             # <<<<<<<<<<<<<<
 *         ndims = <int>len(dims)
 *     except:
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1369
 *     cdef int ndims=0, *idims = NULL
 *     try:
 *         ndims = <int>len(dims)             # <<<<<<<<<<<<<<
 *     except:
 *         ndims = dims
 */
      __pyx_t_4 = PyObject_Length(__pyx_v_dims); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1369; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __pyx_v_ndims = ((int)__pyx_t_4);
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L13_try_end;
    __pyx_L6_error:;

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1370
 *     try:
 *         ndims = <int>len(dims)
 *     except:             # <<<<<<<<<<<<<<
 *         ndims = dims
 *         dims = [0] * ndims
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.Compute_dims", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_7);

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1371
 *         ndims = <int>len(dims)
 *     except:
 *         ndims = dims             # <<<<<<<<<<<<<<
 *         dims = [0] * ndims
 *     dims = chkarray_int(dims, ndims, &idims)
 */
      __pyx_t_8 = __Pyx_PyInt_AsInt(__pyx_v_dims); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1371; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __pyx_v_ndims = __pyx_t_8;

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1372
 *     except:
 *         ndims = dims
 *         dims = [0] * ndims             # <<<<<<<<<<<<<<
 *     dims = chkarray_int(dims, ndims, &idims)
 *     CHKERR( MPI_Dims_create(nnodes, ndims, idims) )
 */
      __pyx_t_9 = PyList_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1372; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_9));
      __Pyx_INCREF(__pyx_int_0);
      PyList_SET_ITEM(__pyx_t_9, 0, __pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      __pyx_t_10 = PyInt_FromLong(__pyx_v_ndims); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1372; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = PyNumber_Multiply(((PyObject *)__pyx_t_9), __pyx_t_10); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1372; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_v_dims);
      __pyx_v_dims = __pyx_t_11;
      __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L7_exception_handled;
    }
    __pyx_L8_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L13_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1373
 *         ndims = dims
 *         dims = [0] * ndims
 *     dims = chkarray_int(dims, ndims, &idims)             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Dims_create(nnodes, ndims, idims) )
 *     return dims
 */
  __pyx_t_7 = __pyx_f_6mpi4py_3MPI_chkarray_int(__pyx_v_dims, __pyx_v_ndims, (&__pyx_v_idims)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_v_dims);
  __pyx_v_dims = __pyx_t_7;
  __pyx_t_7 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1374
 *         dims = [0] * ndims
 *     dims = chkarray_int(dims, ndims, &idims)
 *     CHKERR( MPI_Dims_create(nnodes, ndims, idims) )             # <<<<<<<<<<<<<<
 *     return dims
 * 
 */
  __pyx_t_8 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Dims_create(__pyx_v_nnodes, __pyx_v_ndims, __pyx_v_idims)); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1375
 *     dims = chkarray_int(dims, ndims, &idims)
 *     CHKERR( MPI_Dims_create(nnodes, ndims, idims) )
 *     return dims             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_dims);
  __pyx_r = __pyx_v_dims;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("mpi4py.MPI.Compute_dims", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dims);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1384
 *     """
 * 
 *     def __cinit__(self, Comm comm=None):             # <<<<<<<<<<<<<<
 *         cdef int topo = MPI_GRAPH
 *         if self.ob_mpi != MPI_COMM_NULL:
 */

static int __pyx_pf_6mpi4py_3MPI_9Graphcomm___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_9Graphcomm___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  int __pyx_v_topo;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__comm,0};
  __Pyx_RefNannySetupContext("__cinit__");
  {
    PyObject* values[1] = {0};
    values[0] = (PyObject *)((struct PyMPICommObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__comm);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1384; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1384; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1385
 * 
 *     def __cinit__(self, Comm comm=None):
 *         cdef int topo = MPI_GRAPH             # <<<<<<<<<<<<<<
 *         if self.ob_mpi != MPI_COMM_NULL:
 *             CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 */
  __pyx_v_topo = MPI_GRAPH;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1386
 *     def __cinit__(self, Comm comm=None):
 *         cdef int topo = MPI_GRAPH
 *         if self.ob_mpi != MPI_COMM_NULL:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *             if topo != MPI_GRAPH: raise TypeError(
 */
  __pyx_t_1 = (((struct PyMPIGraphcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi != MPI_COMM_NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1387
 *         cdef int topo = MPI_GRAPH
 *         if self.ob_mpi != MPI_COMM_NULL:
 *             CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )             # <<<<<<<<<<<<<<
 *             if topo != MPI_GRAPH: raise TypeError(
 *                 "expecting a general graph communicator")
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Topo_test(((struct PyMPIGraphcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_topo))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1388
 *         if self.ob_mpi != MPI_COMM_NULL:
 *             CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *             if topo != MPI_GRAPH: raise TypeError(             # <<<<<<<<<<<<<<
 *                 "expecting a general graph communicator")
 * 
 */
    __pyx_t_1 = (__pyx_v_topo != MPI_GRAPH);
    if (__pyx_t_1) {
      __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_92), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1394
 *     # -------------------------
 * 
 *     def Dup(self):             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate an existing communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_1Dup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Graphcomm_1Dup[] = "Graphcomm.Dup(self)\n\n        Duplicate an existing communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_1Dup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIGraphcommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Dup");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Dup", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Dup", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1398
 *         Duplicate an existing communicator
 *         """
 *         cdef Graphcomm comm = <Graphcomm>type(self)()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_dup(
 *             self.ob_mpi, &comm.ob_mpi) )
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIGraphcommObject *)__pyx_t_1)));
  __pyx_v_comm = ((struct PyMPIGraphcommObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1399
 *         """
 *         cdef Graphcomm comm = <Graphcomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_dup(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &comm.ob_mpi) )
 *         return comm
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1400
 *         cdef Graphcomm comm = <Graphcomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_dup(
 *             self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_dup(((struct PyMPIGraphcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_comm->__pyx_base.__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1399; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1399
 *         """
 *         cdef Graphcomm comm = <Graphcomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_dup(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &comm.ob_mpi) )
 *         return comm
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1401
 *         with nogil: CHKERR( MPI_Comm_dup(
 *             self.ob_mpi, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     # Graph Inquiry Functions
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.Dup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1406
 *     # -----------------------
 * 
 *     def Get_dims(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of nodes and edges
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_2Get_dims(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Graphcomm_2Get_dims[] = "Graphcomm.Get_dims(self)\n\n        Return the number of nodes and edges\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_2Get_dims(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_nnodes;
  int __pyx_v_nedges;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_dims");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_dims", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_dims", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1410
 *         Return the number of nodes and edges
 *         """
 *         cdef int nnodes = 0, nedges = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Graphdims_get(self.ob_mpi, &nnodes, &nedges) )
 *         return (nnodes, nedges)
 */
  __pyx_v_nnodes = 0;
  __pyx_v_nedges = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1411
 *         """
 *         cdef int nnodes = 0, nedges = 0
 *         CHKERR( MPI_Graphdims_get(self.ob_mpi, &nnodes, &nedges) )             # <<<<<<<<<<<<<<
 *         return (nnodes, nedges)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graphdims_get(((struct PyMPIGraphcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_nnodes), (&__pyx_v_nedges))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1412
 *         cdef int nnodes = 0, nedges = 0
 *         CHKERR( MPI_Graphdims_get(self.ob_mpi, &nnodes, &nedges) )
 *         return (nnodes, nedges)             # <<<<<<<<<<<<<<
 * 
 *     property dims:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_nnodes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromLong(__pyx_v_nedges); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_r = ((PyObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.Get_dims", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1416
 *     property dims:
 *         """number of nodes and edges"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_topo()
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_4dims___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_4dims___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1417
 *         """number of nodes and edges"""
 *         def __get__(self):
 *             return self.Get_topo()             # <<<<<<<<<<<<<<
 * 
 *     property nnodes:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_topo); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.dims.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1421
 *     property nnodes:
 *         """number of nodes"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_topo()[0]
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_6nnodes___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_6nnodes___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1422
 *         """number of nodes"""
 *         def __get__(self):
 *             return self.Get_topo()[0]             # <<<<<<<<<<<<<<
 * 
 *     property nedges:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_topo); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.nnodes.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1426
 *     property nedges:
 *         """number of edges"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_topo()[1]
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_6nedges___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_6nedges___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1427
 *         """number of edges"""
 *         def __get__(self):
 *             return self.Get_topo()[1]             # <<<<<<<<<<<<<<
 * 
 *     def Get_topo(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_topo); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.nedges.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1429
 *             return self.Get_topo()[1]
 * 
 *     def Get_topo(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return index and edges
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_3Get_topo(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Graphcomm_3Get_topo[] = "Graphcomm.Get_topo(self)\n\n        Return index and edges\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_3Get_topo(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_nindex;
  int __pyx_v_nedges;
  int *__pyx_v_iindex;
  PyObject *__pyx_v_tmp1 = 0;
  int *__pyx_v_iedges;
  PyObject *__pyx_v_tmp2 = 0;
  int __pyx_v_i;
  PyObject *__pyx_v_index = 0;
  PyObject *__pyx_v_edges = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_topo");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_topo", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_topo", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1433
 *         Return index and edges
 *         """
 *         cdef int nindex = 0, nedges = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Graphdims_get( self.ob_mpi, &nindex, &nedges) )
 *         cdef int *iindex = NULL
 */
  __pyx_v_nindex = 0;
  __pyx_v_nedges = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1434
 *         """
 *         cdef int nindex = 0, nedges = 0
 *         CHKERR( MPI_Graphdims_get( self.ob_mpi, &nindex, &nedges) )             # <<<<<<<<<<<<<<
 *         cdef int *iindex = NULL
 *         cdef tmp1 = newarray_int(nindex, &iindex)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graphdims_get(((struct PyMPIGraphcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_nindex), (&__pyx_v_nedges))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1435
 *         cdef int nindex = 0, nedges = 0
 *         CHKERR( MPI_Graphdims_get( self.ob_mpi, &nindex, &nedges) )
 *         cdef int *iindex = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp1 = newarray_int(nindex, &iindex)
 *         cdef int *iedges = NULL
 */
  __pyx_v_iindex = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1436
 *         CHKERR( MPI_Graphdims_get( self.ob_mpi, &nindex, &nedges) )
 *         cdef int *iindex = NULL
 *         cdef tmp1 = newarray_int(nindex, &iindex)             # <<<<<<<<<<<<<<
 *         cdef int *iedges = NULL
 *         cdef tmp2 = newarray_int(nedges, &iedges)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_nindex, (&__pyx_v_iindex)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1437
 *         cdef int *iindex = NULL
 *         cdef tmp1 = newarray_int(nindex, &iindex)
 *         cdef int *iedges = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp2 = newarray_int(nedges, &iedges)
 *         CHKERR( MPI_Graph_get(self.ob_mpi, nindex, nedges, iindex, iedges) )
 */
  __pyx_v_iedges = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1438
 *         cdef tmp1 = newarray_int(nindex, &iindex)
 *         cdef int *iedges = NULL
 *         cdef tmp2 = newarray_int(nedges, &iedges)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Graph_get(self.ob_mpi, nindex, nedges, iindex, iedges) )
 *         cdef int i = 0
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_nedges, (&__pyx_v_iedges)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1439
 *         cdef int *iedges = NULL
 *         cdef tmp2 = newarray_int(nedges, &iedges)
 *         CHKERR( MPI_Graph_get(self.ob_mpi, nindex, nedges, iindex, iedges) )             # <<<<<<<<<<<<<<
 *         cdef int i = 0
 *         cdef object index = [iindex[i] for i from 0 <= i < nindex]
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graph_get(((struct PyMPIGraphcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, __pyx_v_nindex, __pyx_v_nedges, __pyx_v_iindex, __pyx_v_iedges)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1440
 *         cdef tmp2 = newarray_int(nedges, &iedges)
 *         CHKERR( MPI_Graph_get(self.ob_mpi, nindex, nedges, iindex, iedges) )
 *         cdef int i = 0             # <<<<<<<<<<<<<<
 *         cdef object index = [iindex[i] for i from 0 <= i < nindex]
 *         cdef object edges = [iedges[i] for i from 0 <= i < nedges]
 */
  __pyx_v_i = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1441
 *         CHKERR( MPI_Graph_get(self.ob_mpi, nindex, nedges, iindex, iedges) )
 *         cdef int i = 0
 *         cdef object index = [iindex[i] for i from 0 <= i < nindex]             # <<<<<<<<<<<<<<
 *         cdef object edges = [iedges[i] for i from 0 <= i < nedges]
 *         return (index, edges)
 */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_1 = __pyx_v_nindex;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
    __pyx_t_3 = PyInt_FromLong((__pyx_v_iindex[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __pyx_v_index = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1442
 *         cdef int i = 0
 *         cdef object index = [iindex[i] for i from 0 <= i < nindex]
 *         cdef object edges = [iedges[i] for i from 0 <= i < nedges]             # <<<<<<<<<<<<<<
 *         return (index, edges)
 * 
 */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_1 = __pyx_v_nedges;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
    __pyx_t_3 = PyInt_FromLong((__pyx_v_iedges[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __pyx_v_edges = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1443
 *         cdef object index = [iindex[i] for i from 0 <= i < nindex]
 *         cdef object edges = [iedges[i] for i from 0 <= i < nedges]
 *         return (index, edges)             # <<<<<<<<<<<<<<
 * 
 *     property topo:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_index);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_index);
  __Pyx_GIVEREF(__pyx_v_index);
  __Pyx_INCREF(__pyx_v_edges);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_edges);
  __Pyx_GIVEREF(__pyx_v_edges);
  __pyx_r = ((PyObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.Get_topo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_XDECREF(__pyx_v_index);
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1447
 *     property topo:
 *         """topology information"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_topo()
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_4topo___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_4topo___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1448
 *         """topology information"""
 *         def __get__(self):
 *             return self.Get_topo()             # <<<<<<<<<<<<<<
 * 
 *     property index:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_topo); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.topo.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1452
 *     property index:
 *         """index"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_topo()[0]
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_5index___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_5index___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1453
 *         """index"""
 *         def __get__(self):
 *             return self.Get_topo()[0]             # <<<<<<<<<<<<<<
 * 
 *     property edges:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_topo); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.index.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1457
 *     property edges:
 *         """edges"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_topo()
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_5edges___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_5edges___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1458
 *         """edges"""
 *         def __get__(self):
 *             return self.Get_topo()             # <<<<<<<<<<<<<<
 * 
 *     # Graph Information Functions
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_topo); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.edges.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1463
 *     # ---------------------------
 * 
 *     def Get_neighbors_count(self, int rank):             # <<<<<<<<<<<<<<
 *         """
 *         Return number of neighbors of a process
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_4Get_neighbors_count(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Graphcomm_4Get_neighbors_count[] = "Graphcomm.Get_neighbors_count(self, int rank)\n\n        Return number of neighbors of a process\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_4Get_neighbors_count(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_rank;
  int __pyx_v_nneighbors;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__rank,0};
  __Pyx_RefNannySetupContext("Get_neighbors_count");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__rank);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Get_neighbors_count") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1463; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_rank = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1463; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_neighbors_count", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1463; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.Get_neighbors_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1467
 *         Return number of neighbors of a process
 *         """
 *         cdef int nneighbors = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Graph_neighbors_count(self.ob_mpi, rank, &nneighbors) )
 *         return nneighbors
 */
  __pyx_v_nneighbors = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1468
 *         """
 *         cdef int nneighbors = 0
 *         CHKERR( MPI_Graph_neighbors_count(self.ob_mpi, rank, &nneighbors) )             # <<<<<<<<<<<<<<
 *         return nneighbors
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graph_neighbors_count(((struct PyMPIGraphcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, __pyx_v_rank, (&__pyx_v_nneighbors))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1469
 *         cdef int nneighbors = 0
 *         CHKERR( MPI_Graph_neighbors_count(self.ob_mpi, rank, &nneighbors) )
 *         return nneighbors             # <<<<<<<<<<<<<<
 * 
 *     property nneighbors:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_nneighbors); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.Get_neighbors_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1473
 *     property nneighbors:
 *         """number of neighbors"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef int rank = self.Get_rank()
 *             return self.Get_neighbors_count(rank)
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_10nneighbors___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_10nneighbors___get__(PyObject *__pyx_v_self) {
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1474
 *         """number of neighbors"""
 *         def __get__(self):
 *             cdef int rank = self.Get_rank()             # <<<<<<<<<<<<<<
 *             return self.Get_neighbors_count(rank)
 * 
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_rank); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_rank = __pyx_t_3;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1475
 *         def __get__(self):
 *             cdef int rank = self.Get_rank()
 *             return self.Get_neighbors_count(rank)             # <<<<<<<<<<<<<<
 * 
 *     def Get_neighbors(self, int rank):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_neighbors_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyInt_FromLong(__pyx_v_rank); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.nneighbors.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1477
 *             return self.Get_neighbors_count(rank)
 * 
 *     def Get_neighbors(self, int rank):             # <<<<<<<<<<<<<<
 *         """
 *         Return list of neighbors of a process
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_5Get_neighbors(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Graphcomm_5Get_neighbors[] = "Graphcomm.Get_neighbors(self, int rank)\n\n        Return list of neighbors of a process\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_5Get_neighbors(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_rank;
  int __pyx_v_nneighbors;
  int *__pyx_v_ineighbors;
  PyObject *__pyx_v_tmp = 0;
  int __pyx_v_i;
  PyObject *__pyx_v_neighbors = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__rank,0};
  __Pyx_RefNannySetupContext("Get_neighbors");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__rank);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Get_neighbors") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1477; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_rank = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1477; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_neighbors", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1477; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.Get_neighbors", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1481
 *         Return list of neighbors of a process
 *         """
 *         cdef int nneighbors = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Graph_neighbors_count(
 *                 self.ob_mpi, rank, &nneighbors) )
 */
  __pyx_v_nneighbors = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1483
 *         cdef int nneighbors = 0
 *         CHKERR( MPI_Graph_neighbors_count(
 *                 self.ob_mpi, rank, &nneighbors) )             # <<<<<<<<<<<<<<
 *         cdef int *ineighbors = NULL
 *         cdef tmp = newarray_int(nneighbors, &ineighbors)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graph_neighbors_count(((struct PyMPIGraphcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, __pyx_v_rank, (&__pyx_v_nneighbors))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1484
 *         CHKERR( MPI_Graph_neighbors_count(
 *                 self.ob_mpi, rank, &nneighbors) )
 *         cdef int *ineighbors = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp = newarray_int(nneighbors, &ineighbors)
 *         CHKERR( MPI_Graph_neighbors(
 */
  __pyx_v_ineighbors = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1485
 *                 self.ob_mpi, rank, &nneighbors) )
 *         cdef int *ineighbors = NULL
 *         cdef tmp = newarray_int(nneighbors, &ineighbors)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Graph_neighbors(
 *                 self.ob_mpi, rank, nneighbors, ineighbors) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_nneighbors, (&__pyx_v_ineighbors)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1487
 *         cdef tmp = newarray_int(nneighbors, &ineighbors)
 *         CHKERR( MPI_Graph_neighbors(
 *                 self.ob_mpi, rank, nneighbors, ineighbors) )             # <<<<<<<<<<<<<<
 *         cdef int i = 0
 *         cdef object neighbors = [ineighbors[i] for i from 0 <= i < nneighbors]
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graph_neighbors(((struct PyMPIGraphcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, __pyx_v_rank, __pyx_v_nneighbors, __pyx_v_ineighbors)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1488
 *         CHKERR( MPI_Graph_neighbors(
 *                 self.ob_mpi, rank, nneighbors, ineighbors) )
 *         cdef int i = 0             # <<<<<<<<<<<<<<
 *         cdef object neighbors = [ineighbors[i] for i from 0 <= i < nneighbors]
 *         return neighbors
 */
  __pyx_v_i = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1489
 *                 self.ob_mpi, rank, nneighbors, ineighbors) )
 *         cdef int i = 0
 *         cdef object neighbors = [ineighbors[i] for i from 0 <= i < nneighbors]             # <<<<<<<<<<<<<<
 *         return neighbors
 * 
 */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_1 = __pyx_v_nneighbors;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
    __pyx_t_3 = PyInt_FromLong((__pyx_v_ineighbors[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __pyx_v_neighbors = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1490
 *         cdef int i = 0
 *         cdef object neighbors = [ineighbors[i] for i from 0 <= i < nneighbors]
 *         return neighbors             # <<<<<<<<<<<<<<
 * 
 *     property neighbors:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_neighbors);
  __pyx_r = __pyx_v_neighbors;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.Get_neighbors", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_XDECREF(__pyx_v_neighbors);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1494
 *     property neighbors:
 *         """neighbors"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef int rank = self.Get_rank()
 *             return self.Get_neighbors(rank)
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_9neighbors___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_9neighbors___get__(PyObject *__pyx_v_self) {
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1495
 *         """neighbors"""
 *         def __get__(self):
 *             cdef int rank = self.Get_rank()             # <<<<<<<<<<<<<<
 *             return self.Get_neighbors(rank)
 * 
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_rank); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_rank = __pyx_t_3;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1496
 *         def __get__(self):
 *             cdef int rank = self.Get_rank()
 *             return self.Get_neighbors(rank)             # <<<<<<<<<<<<<<
 * 
 *     # Graph Low-Level Functions
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_neighbors); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyInt_FromLong(__pyx_v_rank); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.neighbors.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1501
 *     # -------------------------
 * 
 *     def Map(self, index, edges):             # <<<<<<<<<<<<<<
 *         """
 *         Return an optimal placement for the
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_6Map(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Graphcomm_6Map[] = "Graphcomm.Map(self, index, edges)\n\n        Return an optimal placement for the\n        calling process on the physical machine\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_6Map(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_index = 0;
  PyObject *__pyx_v_edges = 0;
  int __pyx_v_nnodes;
  int *__pyx_v_iindex;
  int __pyx_v_nedges;
  int *__pyx_v_iedges;
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__index,&__pyx_n_s__edges,0};
  __Pyx_RefNannySetupContext("Map");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__edges);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Map", 1, 2, 2, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1501; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Map") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1501; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_index = values[0];
    __pyx_v_edges = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Map", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1501; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.Map", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_index);
  __Pyx_INCREF(__pyx_v_edges);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1506
 *         calling process on the physical machine
 *         """
 *         cdef int nnodes = 0, *iindex = NULL             # <<<<<<<<<<<<<<
 *         index = getarray_int(index, &nnodes, &iindex)
 *         cdef int nedges = 0, *iedges = NULL
 */
  __pyx_v_nnodes = 0;
  __pyx_v_iindex = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1507
 *         """
 *         cdef int nnodes = 0, *iindex = NULL
 *         index = getarray_int(index, &nnodes, &iindex)             # <<<<<<<<<<<<<<
 *         cdef int nedges = 0, *iedges = NULL
 *         edges = getarray_int(edges, &nedges, &iedges)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_getarray_int(__pyx_v_index, (&__pyx_v_nnodes), (&__pyx_v_iindex)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_index);
  __pyx_v_index = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1508
 *         cdef int nnodes = 0, *iindex = NULL
 *         index = getarray_int(index, &nnodes, &iindex)
 *         cdef int nedges = 0, *iedges = NULL             # <<<<<<<<<<<<<<
 *         edges = getarray_int(edges, &nedges, &iedges)
 *         # extension: accept more 'standard' adjacency arrays
 */
  __pyx_v_nedges = 0;
  __pyx_v_iedges = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1509
 *         index = getarray_int(index, &nnodes, &iindex)
 *         cdef int nedges = 0, *iedges = NULL
 *         edges = getarray_int(edges, &nedges, &iedges)             # <<<<<<<<<<<<<<
 *         # extension: accept more 'standard' adjacency arrays
 *         if iindex[0]==0 and iindex[nnodes-1]==nedges:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_getarray_int(__pyx_v_edges, (&__pyx_v_nedges), (&__pyx_v_iedges)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_edges);
  __pyx_v_edges = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1511
 *         edges = getarray_int(edges, &nedges, &iedges)
 *         # extension: accept more 'standard' adjacency arrays
 *         if iindex[0]==0 and iindex[nnodes-1]==nedges:             # <<<<<<<<<<<<<<
 *             nnodes -= 1; iindex += 1;
 *         cdef int rank = MPI_PROC_NULL
 */
  __pyx_t_2 = ((__pyx_v_iindex[0]) == 0);
  if (__pyx_t_2) {
    __pyx_t_3 = ((__pyx_v_iindex[(__pyx_v_nnodes - 1)]) == __pyx_v_nedges);
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_2;
  }
  if (__pyx_t_4) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1512
 *         # extension: accept more 'standard' adjacency arrays
 *         if iindex[0]==0 and iindex[nnodes-1]==nedges:
 *             nnodes -= 1; iindex += 1;             # <<<<<<<<<<<<<<
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Graph_map(self.ob_mpi, nnodes, iindex, iedges, &rank) )
 */
    __pyx_v_nnodes = (__pyx_v_nnodes - 1);
    __pyx_v_iindex = (__pyx_v_iindex + 1);
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1513
 *         if iindex[0]==0 and iindex[nnodes-1]==nedges:
 *             nnodes -= 1; iindex += 1;
 *         cdef int rank = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Graph_map(self.ob_mpi, nnodes, iindex, iedges, &rank) )
 *         return rank
 */
  __pyx_v_rank = MPI_PROC_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1514
 *             nnodes -= 1; iindex += 1;
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Graph_map(self.ob_mpi, nnodes, iindex, iedges, &rank) )             # <<<<<<<<<<<<<<
 *         return rank
 * 
 */
  __pyx_t_5 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graph_map(((struct PyMPIGraphcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, __pyx_v_nnodes, __pyx_v_iindex, __pyx_v_iedges, (&__pyx_v_rank))); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1515
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Graph_map(self.ob_mpi, nnodes, iindex, iedges, &rank) )
 *         return rank             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyInt_FromLong(__pyx_v_rank); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.Map", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_index);
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1524
 *     """
 * 
 *     def __cinit__(self, Comm comm=None):             # <<<<<<<<<<<<<<
 *         cdef int topo = MPI_DIST_GRAPH
 *         if self.ob_mpi != MPI_COMM_NULL:
 */

static int __pyx_pf_6mpi4py_3MPI_13Distgraphcomm___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_13Distgraphcomm___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  int __pyx_v_topo;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__comm,0};
  __Pyx_RefNannySetupContext("__cinit__");
  {
    PyObject* values[1] = {0};
    values[0] = (PyObject *)((struct PyMPICommObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__comm);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1524; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1524; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Distgraphcomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1525
 * 
 *     def __cinit__(self, Comm comm=None):
 *         cdef int topo = MPI_DIST_GRAPH             # <<<<<<<<<<<<<<
 *         if self.ob_mpi != MPI_COMM_NULL:
 *             CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 */
  __pyx_v_topo = MPI_DIST_GRAPH;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1526
 *     def __cinit__(self, Comm comm=None):
 *         cdef int topo = MPI_DIST_GRAPH
 *         if self.ob_mpi != MPI_COMM_NULL:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *             if topo != MPI_DIST_GRAPH: raise TypeError(
 */
  __pyx_t_1 = (((struct PyMPIDistgraphcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi != MPI_COMM_NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1527
 *         cdef int topo = MPI_DIST_GRAPH
 *         if self.ob_mpi != MPI_COMM_NULL:
 *             CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )             # <<<<<<<<<<<<<<
 *             if topo != MPI_DIST_GRAPH: raise TypeError(
 *                 "expecting a distributed graph communicator")
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Topo_test(((struct PyMPIDistgraphcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_topo))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1528
 *         if self.ob_mpi != MPI_COMM_NULL:
 *             CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *             if topo != MPI_DIST_GRAPH: raise TypeError(             # <<<<<<<<<<<<<<
 *                 "expecting a distributed graph communicator")
 * 
 */
    __pyx_t_1 = (__pyx_v_topo != MPI_DIST_GRAPH);
    if (__pyx_t_1) {
      __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_94), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Distgraphcomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1534
 *     # -------------------------
 * 
 *     def Dup(self):             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate an existing communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_13Distgraphcomm_1Dup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_13Distgraphcomm_1Dup[] = "Distgraphcomm.Dup(self)\n\n        Duplicate an existing communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_13Distgraphcomm_1Dup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIDistgraphcommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Dup");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Dup", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Dup", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1538
 *         Duplicate an existing communicator
 *         """
 *         cdef Distgraphcomm comm = <Distgraphcomm>type(self)()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_dup(
 *             self.ob_mpi, &comm.ob_mpi) )
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDistgraphcommObject *)__pyx_t_1)));
  __pyx_v_comm = ((struct PyMPIDistgraphcommObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1539
 *         """
 *         cdef Distgraphcomm comm = <Distgraphcomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_dup(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &comm.ob_mpi) )
 *         return comm
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1540
 *         cdef Distgraphcomm comm = <Distgraphcomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_dup(
 *             self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_dup(((struct PyMPIDistgraphcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_comm->__pyx_base.__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1539; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1539
 *         """
 *         cdef Distgraphcomm comm = <Distgraphcomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_dup(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &comm.ob_mpi) )
 *         return comm
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1541
 *         with nogil: CHKERR( MPI_Comm_dup(
 *             self.ob_mpi, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     # Topology Inquiry Functions
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Distgraphcomm.Dup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1546
 *     # --------------------------
 * 
 *     def Get_dist_neighbors_count(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return adjacency information for a distributed graph topology
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_13Distgraphcomm_2Get_dist_neighbors_count(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_13Distgraphcomm_2Get_dist_neighbors_count[] = "Distgraphcomm.Get_dist_neighbors_count(self)\n\n        Return adjacency information for a distributed graph topology\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_13Distgraphcomm_2Get_dist_neighbors_count(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_indegree;
  int __pyx_v_outdegree;
  int __pyx_v_weighted;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_dist_neighbors_count");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_dist_neighbors_count", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_dist_neighbors_count", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1550
 *         Return adjacency information for a distributed graph topology
 *         """
 *         cdef int indegree = 0             # <<<<<<<<<<<<<<
 *         cdef int outdegree = 0
 *         cdef int weighted = 0
 */
  __pyx_v_indegree = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1551
 *         """
 *         cdef int indegree = 0
 *         cdef int outdegree = 0             # <<<<<<<<<<<<<<
 *         cdef int weighted = 0
 *         CHKERR( MPI_Dist_graph_neighbors_count(
 */
  __pyx_v_outdegree = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1552
 *         cdef int indegree = 0
 *         cdef int outdegree = 0
 *         cdef int weighted = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Dist_graph_neighbors_count(
 *                 self.ob_mpi, &indegree, &outdegree, &weighted) )
 */
  __pyx_v_weighted = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1554
 *         cdef int weighted = 0
 *         CHKERR( MPI_Dist_graph_neighbors_count(
 *                 self.ob_mpi, &indegree, &outdegree, &weighted) )             # <<<<<<<<<<<<<<
 *         return (indegree, outdegree, <bint>weighted)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Dist_graph_neighbors_count(((struct PyMPIDistgraphcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_indegree), (&__pyx_v_outdegree), (&__pyx_v_weighted))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1555
 *         CHKERR( MPI_Dist_graph_neighbors_count(
 *                 self.ob_mpi, &indegree, &outdegree, &weighted) )
 *         return (indegree, outdegree, <bint>weighted)             # <<<<<<<<<<<<<<
 * 
 *     def Get_dist_neighbors(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_indegree); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromLong(__pyx_v_outdegree); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyBool_FromLong(((int)__pyx_v_weighted)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_r = ((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Distgraphcomm.Get_dist_neighbors_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1557
 *         return (indegree, outdegree, <bint>weighted)
 * 
 *     def Get_dist_neighbors(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return adjacency information for a distributed graph topology
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_13Distgraphcomm_3Get_dist_neighbors(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_13Distgraphcomm_3Get_dist_neighbors[] = "Distgraphcomm.Get_dist_neighbors(self)\n\n        Return adjacency information for a distributed graph topology\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_13Distgraphcomm_3Get_dist_neighbors(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_maxindegree;
  int __pyx_v_maxoutdegree;
  int __pyx_v_weighted;
  int *__pyx_v_sources;
  int *__pyx_v_destinations;
  int *__pyx_v_sourceweights;
  int *__pyx_v_destweights;
  PyObject *__pyx_v_tmp1 = 0;
  PyObject *__pyx_v_tmp2 = 0;
  PyObject *__pyx_v_tmp3 = 0;
  PyObject *__pyx_v_tmp4 = 0;
  int __pyx_v_i;
  PyObject *__pyx_v_src = 0;
  PyObject *__pyx_v_dst = 0;
  PyObject *__pyx_v_sw = 0;
  PyObject *__pyx_v_dw = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_dist_neighbors");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_dist_neighbors", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_dist_neighbors", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1561
 *         Return adjacency information for a distributed graph topology
 *         """
 *         cdef int maxindegree = 0, maxoutdegree = 0, weighted = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Dist_graph_neighbors_count(
 *                 self.ob_mpi, &maxindegree, &maxoutdegree, &weighted) )
 */
  __pyx_v_maxindegree = 0;
  __pyx_v_maxoutdegree = 0;
  __pyx_v_weighted = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1563
 *         cdef int maxindegree = 0, maxoutdegree = 0, weighted = 0
 *         CHKERR( MPI_Dist_graph_neighbors_count(
 *                 self.ob_mpi, &maxindegree, &maxoutdegree, &weighted) )             # <<<<<<<<<<<<<<
 *         #
 *         cdef int *sources = NULL, *destinations = NULL
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Dist_graph_neighbors_count(((struct PyMPIDistgraphcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_maxindegree), (&__pyx_v_maxoutdegree), (&__pyx_v_weighted))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1565
 *                 self.ob_mpi, &maxindegree, &maxoutdegree, &weighted) )
 *         #
 *         cdef int *sources = NULL, *destinations = NULL             # <<<<<<<<<<<<<<
 *         cdef int *sourceweights = MPI_UNWEIGHTED
 *         cdef int *destweights   = MPI_UNWEIGHTED
 */
  __pyx_v_sources = NULL;
  __pyx_v_destinations = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1566
 *         #
 *         cdef int *sources = NULL, *destinations = NULL
 *         cdef int *sourceweights = MPI_UNWEIGHTED             # <<<<<<<<<<<<<<
 *         cdef int *destweights   = MPI_UNWEIGHTED
 *         cdef tmp1, tmp2, tmp3, tmp4
 */
  __pyx_v_sourceweights = MPI_UNWEIGHTED;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1567
 *         cdef int *sources = NULL, *destinations = NULL
 *         cdef int *sourceweights = MPI_UNWEIGHTED
 *         cdef int *destweights   = MPI_UNWEIGHTED             # <<<<<<<<<<<<<<
 *         cdef tmp1, tmp2, tmp3, tmp4
 *         tmp1 = newarray_int(maxindegree,  &sources)
 */
  __pyx_v_destweights = MPI_UNWEIGHTED;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1569
 *         cdef int *destweights   = MPI_UNWEIGHTED
 *         cdef tmp1, tmp2, tmp3, tmp4
 *         tmp1 = newarray_int(maxindegree,  &sources)             # <<<<<<<<<<<<<<
 *         tmp2 = newarray_int(maxoutdegree, &destinations)
 *         cdef int i = 0
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_maxindegree, (&__pyx_v_sources)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1570
 *         cdef tmp1, tmp2, tmp3, tmp4
 *         tmp1 = newarray_int(maxindegree,  &sources)
 *         tmp2 = newarray_int(maxoutdegree, &destinations)             # <<<<<<<<<<<<<<
 *         cdef int i = 0
 *         if weighted:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_maxoutdegree, (&__pyx_v_destinations)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1571
 *         tmp1 = newarray_int(maxindegree,  &sources)
 *         tmp2 = newarray_int(maxoutdegree, &destinations)
 *         cdef int i = 0             # <<<<<<<<<<<<<<
 *         if weighted:
 *             tmp3 = newarray_int(maxindegree,  &sourceweights)
 */
  __pyx_v_i = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1572
 *         tmp2 = newarray_int(maxoutdegree, &destinations)
 *         cdef int i = 0
 *         if weighted:             # <<<<<<<<<<<<<<
 *             tmp3 = newarray_int(maxindegree,  &sourceweights)
 *             for i from 0 <= i < maxindegree:  sourceweights[i] = 1
 */
  if (__pyx_v_weighted) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1573
 *         cdef int i = 0
 *         if weighted:
 *             tmp3 = newarray_int(maxindegree,  &sourceweights)             # <<<<<<<<<<<<<<
 *             for i from 0 <= i < maxindegree:  sourceweights[i] = 1
 *             tmp4 = newarray_int(maxoutdegree, &destweights)
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_maxindegree, (&__pyx_v_sourceweights)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_tmp3 = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1574
 *         if weighted:
 *             tmp3 = newarray_int(maxindegree,  &sourceweights)
 *             for i from 0 <= i < maxindegree:  sourceweights[i] = 1             # <<<<<<<<<<<<<<
 *             tmp4 = newarray_int(maxoutdegree, &destweights)
 *             for i from 0 <= i < maxoutdegree: destweights[i]   = 1
 */
    __pyx_t_1 = __pyx_v_maxindegree;
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
      (__pyx_v_sourceweights[__pyx_v_i]) = 1;
    }

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1575
 *             tmp3 = newarray_int(maxindegree,  &sourceweights)
 *             for i from 0 <= i < maxindegree:  sourceweights[i] = 1
 *             tmp4 = newarray_int(maxoutdegree, &destweights)             # <<<<<<<<<<<<<<
 *             for i from 0 <= i < maxoutdegree: destweights[i]   = 1
 *         #
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_maxoutdegree, (&__pyx_v_destweights)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_tmp4 = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1576
 *             for i from 0 <= i < maxindegree:  sourceweights[i] = 1
 *             tmp4 = newarray_int(maxoutdegree, &destweights)
 *             for i from 0 <= i < maxoutdegree: destweights[i]   = 1             # <<<<<<<<<<<<<<
 *         #
 *         CHKERR( MPI_Dist_graph_neighbors(
 */
    __pyx_t_1 = __pyx_v_maxoutdegree;
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
      (__pyx_v_destweights[__pyx_v_i]) = 1;
    }
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1581
 *                 self.ob_mpi,
 *                 maxindegree,  sources,      sourceweights,
 *                 maxoutdegree, destinations, destweights) )             # <<<<<<<<<<<<<<
 *         #
 *         cdef object src = [sources[i]      for i from 0 <= i < maxindegree]
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Dist_graph_neighbors(((struct PyMPIDistgraphcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, __pyx_v_maxindegree, __pyx_v_sources, __pyx_v_sourceweights, __pyx_v_maxoutdegree, __pyx_v_destinations, __pyx_v_destweights)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1583
 *                 maxoutdegree, destinations, destweights) )
 *         #
 *         cdef object src = [sources[i]      for i from 0 <= i < maxindegree]             # <<<<<<<<<<<<<<
 *         cdef object dst = [destinations[i] for i from 0 <= i < maxoutdegree]
 *         if not weighted: return (src, dst, None)
 */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1583; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_1 = __pyx_v_maxindegree;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
    __pyx_t_3 = PyInt_FromLong((__pyx_v_sources[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1583; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1583; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __pyx_v_src = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1584
 *         #
 *         cdef object src = [sources[i]      for i from 0 <= i < maxindegree]
 *         cdef object dst = [destinations[i] for i from 0 <= i < maxoutdegree]             # <<<<<<<<<<<<<<
 *         if not weighted: return (src, dst, None)
 *         #
 */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_1 = __pyx_v_maxoutdegree;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
    __pyx_t_3 = PyInt_FromLong((__pyx_v_destinations[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __pyx_v_dst = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1585
 *         cdef object src = [sources[i]      for i from 0 <= i < maxindegree]
 *         cdef object dst = [destinations[i] for i from 0 <= i < maxoutdegree]
 *         if not weighted: return (src, dst, None)             # <<<<<<<<<<<<<<
 *         #
 *         cdef object sw = [sourceweights[i] for i from 0 <= i < maxindegree]
 */
  __pyx_t_4 = (!__pyx_v_weighted);
  if (__pyx_t_4) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_INCREF(__pyx_v_src);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_src);
    __Pyx_GIVEREF(__pyx_v_src);
    __Pyx_INCREF(__pyx_v_dst);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_dst);
    __Pyx_GIVEREF(__pyx_v_dst);
    __Pyx_INCREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __Pyx_GIVEREF(Py_None);
    __pyx_r = ((PyObject *)__pyx_t_2);
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L14;
  }
  __pyx_L14:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1587
 *         if not weighted: return (src, dst, None)
 *         #
 *         cdef object sw = [sourceweights[i] for i from 0 <= i < maxindegree]             # <<<<<<<<<<<<<<
 *         cdef object dw = [destweights[i]   for i from 0 <= i < maxoutdegree]
 *         return (src, dst, (sw, dw))
 */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_1 = __pyx_v_maxindegree;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
    __pyx_t_3 = PyInt_FromLong((__pyx_v_sourceweights[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __pyx_v_sw = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1588
 *         #
 *         cdef object sw = [sourceweights[i] for i from 0 <= i < maxindegree]
 *         cdef object dw = [destweights[i]   for i from 0 <= i < maxoutdegree]             # <<<<<<<<<<<<<<
 *         return (src, dst, (sw, dw))
 * 
 */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_1 = __pyx_v_maxoutdegree;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
    __pyx_t_3 = PyInt_FromLong((__pyx_v_destweights[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __pyx_v_dw = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1589
 *         cdef object sw = [sourceweights[i] for i from 0 <= i < maxindegree]
 *         cdef object dw = [destweights[i]   for i from 0 <= i < maxoutdegree]
 *         return (src, dst, (sw, dw))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_sw);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_sw);
  __Pyx_GIVEREF(__pyx_v_sw);
  __Pyx_INCREF(__pyx_v_dw);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_dw);
  __Pyx_GIVEREF(__pyx_v_dw);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  __Pyx_INCREF(__pyx_v_src);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_src);
  __Pyx_GIVEREF(__pyx_v_src);
  __Pyx_INCREF(__pyx_v_dst);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_dst);
  __Pyx_GIVEREF(__pyx_v_dst);
  PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_t_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
  __pyx_t_2 = 0;
  __pyx_r = ((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Distgraphcomm.Get_dist_neighbors", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_XDECREF(__pyx_v_tmp3);
  __Pyx_XDECREF(__pyx_v_tmp4);
  __Pyx_XDECREF(__pyx_v_src);
  __Pyx_XDECREF(__pyx_v_dst);
  __Pyx_XDECREF(__pyx_v_sw);
  __Pyx_XDECREF(__pyx_v_dw);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1598
 *     """
 * 
 *     def __cinit__(self, Comm comm=None):             # <<<<<<<<<<<<<<
 *         cdef int inter = 1
 *         if self.ob_mpi != MPI_COMM_NULL:
 */

static int __pyx_pf_6mpi4py_3MPI_9Intercomm___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_9Intercomm___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  int __pyx_v_inter;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__comm,0};
  __Pyx_RefNannySetupContext("__cinit__");
  {
    PyObject* values[1] = {0};
    values[0] = (PyObject *)((struct PyMPICommObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__comm);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1599
 * 
 *     def __cinit__(self, Comm comm=None):
 *         cdef int inter = 1             # <<<<<<<<<<<<<<
 *         if self.ob_mpi != MPI_COMM_NULL:
 *             CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 */
  __pyx_v_inter = 1;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1600
 *     def __cinit__(self, Comm comm=None):
 *         cdef int inter = 1
 *         if self.ob_mpi != MPI_COMM_NULL:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 *             if not inter: raise TypeError(
 */
  __pyx_t_1 = (((struct PyMPIIntercommObject *)__pyx_v_self)->__pyx_base.ob_mpi != MPI_COMM_NULL);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1601
 *         cdef int inter = 1
 *         if self.ob_mpi != MPI_COMM_NULL:
 *             CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )             # <<<<<<<<<<<<<<
 *             if not inter: raise TypeError(
 *                 "expecting an intercommunicator")
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(((struct PyMPIIntercommObject *)__pyx_v_self)->__pyx_base.ob_mpi, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1602
 *         if self.ob_mpi != MPI_COMM_NULL:
 *             CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 *             if not inter: raise TypeError(             # <<<<<<<<<<<<<<
 *                 "expecting an intercommunicator")
 * 
 */
    __pyx_t_1 = (!__pyx_v_inter);
    if (__pyx_t_1) {
      __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_96), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1608
 *     # ---------------------------
 * 
 *     def Get_remote_group(self):             # <<<<<<<<<<<<<<
 *         """
 *         Access the remote group associated
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_1Get_remote_group(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intercomm_1Get_remote_group[] = "Intercomm.Get_remote_group(self)\n\n        Access the remote group associated\n        with the inter-communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_1Get_remote_group(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_remote_group");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_remote_group", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_remote_group", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1613
 *         with the inter-communicator
 *         """
 *         cdef Group group = <Group>Group.__new__(Group)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_remote_group(self.ob_mpi, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Group)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIGroupObject *)__pyx_t_1)));
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1614
 *         """
 *         cdef Group group = <Group>Group.__new__(Group)
 *         CHKERR( MPI_Comm_remote_group(self.ob_mpi, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_group(((struct PyMPIIntercommObject *)__pyx_v_self)->__pyx_base.ob_mpi, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1615
 *         cdef Group group = <Group>Group.__new__(Group)
 *         CHKERR( MPI_Comm_remote_group(self.ob_mpi, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     property remote_group:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_group));
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.Get_remote_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1619
 *     property remote_group:
 *         """remote group"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_remote_group()
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_12remote_group___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_12remote_group___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1620
 *         """remote group"""
 *         def __get__(self):
 *             return self.Get_remote_group()             # <<<<<<<<<<<<<<
 * 
 *     def Get_remote_size(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_remote_group); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.remote_group.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1622
 *             return self.Get_remote_group()
 * 
 *     def Get_remote_size(self):             # <<<<<<<<<<<<<<
 *         """
 *         Intercommunicator remote size
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_2Get_remote_size(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intercomm_2Get_remote_size[] = "Intercomm.Get_remote_size(self)\n\n        Intercommunicator remote size\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_2Get_remote_size(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_remote_size");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_remote_size", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_remote_size", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1626
 *         Intercommunicator remote size
 *         """
 *         cdef int size = -1             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_remote_size(self.ob_mpi, &size) )
 *         return size
 */
  __pyx_v_size = -1;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1627
 *         """
 *         cdef int size = -1
 *         CHKERR( MPI_Comm_remote_size(self.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *         return size
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_size(((struct PyMPIIntercommObject *)__pyx_v_self)->__pyx_base.ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1628
 *         cdef int size = -1
 *         CHKERR( MPI_Comm_remote_size(self.ob_mpi, &size) )
 *         return size             # <<<<<<<<<<<<<<
 * 
 *     property remote_size:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.Get_remote_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1632
 *     property remote_size:
 *         """number of remote processes"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_remote_size()
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_11remote_size___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_11remote_size___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1633
 *         """number of remote processes"""
 *         def __get__(self):
 *             return self.Get_remote_size()             # <<<<<<<<<<<<<<
 * 
 *     # Communicator Constructors
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_remote_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.remote_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1638
 *     # -------------------------
 * 
 *     def Dup(self):             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate an existing intercommunicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_3Dup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intercomm_3Dup[] = "Intercomm.Dup(self)\n\n        Duplicate an existing intercommunicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_3Dup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIIntercommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Dup");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Dup", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Dup", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1642
 *         Duplicate an existing intercommunicator
 *         """
 *         cdef Intercomm comm = <Intercomm>type(self)()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )
 *         return comm
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIIntercommObject *)__pyx_t_1)));
  __pyx_v_comm = ((struct PyMPIIntercommObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1643
 *         """
 *         cdef Intercomm comm = <Intercomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_dup(((struct PyMPIIntercommObject *)__pyx_v_self)->__pyx_base.ob_mpi, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1644
 *         cdef Intercomm comm = <Intercomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Create(self, Group group not None):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.Dup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1646
 *         return comm
 * 
 *     def Create(self, Group group not None):             # <<<<<<<<<<<<<<
 *         """
 *         Create intercommunicator from group
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_4Create(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intercomm_4Create[] = "Intercomm.Create(self, Group group)\n\n        Create intercommunicator from group\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_4Create(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  struct PyMPIIntercommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__group,0};
  __Pyx_RefNannySetupContext("Create");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__group);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1646; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_group = ((struct PyMPIGroupObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1646; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.Create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1650
 *         Create intercommunicator from group
 *         """
 *         cdef Intercomm comm = <Intercomm>type(self)()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_create(
 *             self.ob_mpi, group.ob_mpi, &comm.ob_mpi) )
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIIntercommObject *)__pyx_t_1)));
  __pyx_v_comm = ((struct PyMPIIntercommObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1651
 *         """
 *         cdef Intercomm comm = <Intercomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, group.ob_mpi, &comm.ob_mpi) )
 *         return comm
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1652
 *         cdef Intercomm comm = <Intercomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_create(
 *             self.ob_mpi, group.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_create(((struct PyMPIIntercommObject *)__pyx_v_self)->__pyx_base.ob_mpi, __pyx_v_group->ob_mpi, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1651; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1651
 *         """
 *         cdef Intercomm comm = <Intercomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, group.ob_mpi, &comm.ob_mpi) )
 *         return comm
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1653
 *         with nogil: CHKERR( MPI_Comm_create(
 *             self.ob_mpi, group.ob_mpi, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Split(self, int color=0, int key=0):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.Create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1655
 *         return comm
 * 
 *     def Split(self, int color=0, int key=0):             # <<<<<<<<<<<<<<
 *         """
 *         Split intercommunicator by color and key
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_5Split(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intercomm_5Split[] = "Intercomm.Split(self, int color=0, int key=0)\n\n        Split intercommunicator by color and key\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_5Split(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_color;
  int __pyx_v_key;
  struct PyMPIIntercommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__color,&__pyx_n_s__key,0};
  __Pyx_RefNannySetupContext("Split");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__color);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__key);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Split") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1655; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_color = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_color == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1655; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_color = ((int)0);
    }
    if (values[1]) {
      __pyx_v_key = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_key == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1655; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_key = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Split", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1655; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.Split", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1659
 *         Split intercommunicator by color and key
 *         """
 *         cdef Intercomm comm = <Intercomm>type(self)()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_split(
 *             self.ob_mpi, color, key, &comm.ob_mpi) )
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIIntercommObject *)__pyx_t_1)));
  __pyx_v_comm = ((struct PyMPIIntercommObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1660
 *         """
 *         cdef Intercomm comm = <Intercomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_split(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, color, key, &comm.ob_mpi) )
 *         return comm
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1661
 *         cdef Intercomm comm = <Intercomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_split(
 *             self.ob_mpi, color, key, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_split(((struct PyMPIIntercommObject *)__pyx_v_self)->__pyx_base.ob_mpi, __pyx_v_color, __pyx_v_key, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1660; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1660
 *         """
 *         cdef Intercomm comm = <Intercomm>type(self)()
 *         with nogil: CHKERR( MPI_Comm_split(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, color, key, &comm.ob_mpi) )
 *         return comm
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1662
 *         with nogil: CHKERR( MPI_Comm_split(
 *             self.ob_mpi, color, key, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Merge(self, bint high=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.Split", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1664
 *         return comm
 * 
 *     def Merge(self, bint high=False):             # <<<<<<<<<<<<<<
 *         """
 *         Merge intercommunicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_6Merge(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intercomm_6Merge[] = "Intercomm.Merge(self, int high=False)\n\n        Merge intercommunicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_6Merge(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_high;
  struct PyMPIIntracommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__high,0};
  __Pyx_RefNannySetupContext("Merge");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__high);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Merge") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1664; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_high = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_high == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1664; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_high = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Merge", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1664; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.Merge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1668
 *         Merge intercommunicator
 *         """
 *         cdef Intracomm comm = <Intracomm>Intracomm.__new__(Intracomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Intercomm_merge(
 *             self.ob_mpi, high, &comm.ob_mpi) )
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intracomm)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIIntracommObject *)__pyx_t_1)));
  __pyx_v_comm = ((struct PyMPIIntracommObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1669
 *         """
 *         cdef Intracomm comm = <Intracomm>Intracomm.__new__(Intracomm)
 *         with nogil: CHKERR( MPI_Intercomm_merge(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, high, &comm.ob_mpi) )
 *         return comm
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1670
 *         cdef Intracomm comm = <Intracomm>Intracomm.__new__(Intracomm)
 *         with nogil: CHKERR( MPI_Intercomm_merge(
 *             self.ob_mpi, high, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Intercomm_merge(((struct PyMPIIntercommObject *)__pyx_v_self)->__pyx_base.ob_mpi, __pyx_v_high, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1669; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1669
 *         """
 *         cdef Intracomm comm = <Intracomm>Intracomm.__new__(Intracomm)
 *         with nogil: CHKERR( MPI_Intercomm_merge(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, high, &comm.ob_mpi) )
 *         return comm
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1671
 *         with nogil: CHKERR( MPI_Intercomm_merge(
 *             self.ob_mpi, high, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_comm));
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.Merge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1695
 * #: Upper bound of memory overhead for sending in buffered mode
 * 
 * def Attach_buffer(memory):             # <<<<<<<<<<<<<<
 *     """
 *     Attach a user-provided buffer for
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Attach_buffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Attach_buffer[] = "Attach_buffer(memory)\n\n    Attach a user-provided buffer for\n    sending in buffered mode\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Attach_buffer = {__Pyx_NAMESTR("Attach_buffer"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Attach_buffer, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Attach_buffer)};
static PyObject *__pyx_pf_6mpi4py_3MPI_7Attach_buffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_memory = 0;
  void *__pyx_v_base;
  int __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__memory,0};
  __Pyx_RefNannySetupContext("Attach_buffer");
  __pyx_self = __pyx_self;
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__memory);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Attach_buffer") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1695; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_memory = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Attach_buffer", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1695; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Attach_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1700
 *     sending in buffered mode
 *     """
 *     cdef void *base = NULL             # <<<<<<<<<<<<<<
 *     cdef int size = 0
 *     attach_buffer(memory, &base, &size)
 */
  __pyx_v_base = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1701
 *     """
 *     cdef void *base = NULL
 *     cdef int size = 0             # <<<<<<<<<<<<<<
 *     attach_buffer(memory, &base, &size)
 *     with nogil: CHKERR( MPI_Buffer_attach(base, size) )
 */
  __pyx_v_size = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1702
 *     cdef void *base = NULL
 *     cdef int size = 0
 *     attach_buffer(memory, &base, &size)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Buffer_attach(base, size) )
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_attach_buffer(__pyx_v_memory, (&__pyx_v_base), (&__pyx_v_size)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1703
 *     cdef int size = 0
 *     attach_buffer(memory, &base, &size)
 *     with nogil: CHKERR( MPI_Buffer_attach(base, size) )             # <<<<<<<<<<<<<<
 * 
 * def Detach_buffer():
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Buffer_attach(__pyx_v_base, __pyx_v_size)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1703; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Attach_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1705
 *     with nogil: CHKERR( MPI_Buffer_attach(base, size) )
 * 
 * def Detach_buffer():             # <<<<<<<<<<<<<<
 *     """
 *     Remove an existing attached buffer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Detach_buffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Detach_buffer[] = "Detach_buffer()\n\n    Remove an existing attached buffer\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Detach_buffer = {__Pyx_NAMESTR("Detach_buffer"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Detach_buffer, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Detach_buffer)};
static PyObject *__pyx_pf_6mpi4py_3MPI_8Detach_buffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  void *__pyx_v_base;
  int __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Detach_buffer");
  __pyx_self = __pyx_self;
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Detach_buffer", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Detach_buffer", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1709
 *     Remove an existing attached buffer
 *     """
 *     cdef void *base = NULL             # <<<<<<<<<<<<<<
 *     cdef int size = 0
 *     with nogil: CHKERR( MPI_Buffer_detach(&base, &size) )
 */
  __pyx_v_base = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1710
 *     """
 *     cdef void *base = NULL
 *     cdef int size = 0             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Buffer_detach(&base, &size) )
 *     return detach_buffer(base, size)
 */
  __pyx_v_size = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1711
 *     cdef void *base = NULL
 *     cdef int size = 0
 *     with nogil: CHKERR( MPI_Buffer_detach(&base, &size) )             # <<<<<<<<<<<<<<
 *     return detach_buffer(base, size)
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Buffer_detach((&__pyx_v_base), (&__pyx_v_size))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1711; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1712
 *     cdef int size = 0
 *     with nogil: CHKERR( MPI_Buffer_detach(&base, &size) )
 *     return detach_buffer(base, size)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_detach_buffer(__pyx_v_base, __pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Detach_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1722
 * # -----------------------
 * 
 * def Open_port(Info info=INFO_NULL):             # <<<<<<<<<<<<<<
 *     """
 *     Return an address that can be used to establish
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Open_port(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Open_port[] = "Open_port(Info info=INFO_NULL)\n\n    Return an address that can be used to establish\n    connections between groups of MPI processes\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Open_port = {__Pyx_NAMESTR("Open_port"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Open_port, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Open_port)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Open_port(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  MPI_Info __pyx_v_cinfo;
  char __pyx_v_cportname[(MPI_MAX_PORT_NAME + 1)];
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__info,0};
  __Pyx_RefNannySetupContext("Open_port");
  __pyx_self = __pyx_self;
  {
    PyObject* values[1] = {0};
    values[0] = (PyObject *)__pyx_k_97;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__info);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Open_port") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1722; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Open_port", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1722; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Open_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 1, "info", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1727
 *     connections between groups of MPI processes
 *     """
 *     cdef MPI_Info cinfo = arg_Info(info)             # <<<<<<<<<<<<<<
 *     cdef char cportname[MPI_MAX_PORT_NAME+1]
 *     with nogil: CHKERR( MPI_Open_port(cinfo, cportname) )
 */
  __pyx_v_cinfo = __pyx_f_6mpi4py_3MPI_arg_Info(((PyObject *)__pyx_v_info));

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1729
 *     cdef MPI_Info cinfo = arg_Info(info)
 *     cdef char cportname[MPI_MAX_PORT_NAME+1]
 *     with nogil: CHKERR( MPI_Open_port(cinfo, cportname) )             # <<<<<<<<<<<<<<
 *     cportname[MPI_MAX_PORT_NAME] = 0 # just in case
 *     return mpistr(cportname)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Open_port(__pyx_v_cinfo, __pyx_v_cportname)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1729; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1730
 *     cdef char cportname[MPI_MAX_PORT_NAME+1]
 *     with nogil: CHKERR( MPI_Open_port(cinfo, cportname) )
 *     cportname[MPI_MAX_PORT_NAME] = 0 # just in case             # <<<<<<<<<<<<<<
 *     return mpistr(cportname)
 * 
 */
  (__pyx_v_cportname[MPI_MAX_PORT_NAME]) = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1731
 *     with nogil: CHKERR( MPI_Open_port(cinfo, cportname) )
 *     cportname[MPI_MAX_PORT_NAME] = 0 # just in case
 *     return mpistr(cportname)             # <<<<<<<<<<<<<<
 * 
 * def Close_port(port_name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_cportname); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1731; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Open_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1733
 *     return mpistr(cportname)
 * 
 * def Close_port(port_name):             # <<<<<<<<<<<<<<
 *     """
 *     Close a port
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_10Close_port(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_10Close_port[] = "Close_port(port_name)\n\n    Close a port\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_10Close_port = {__Pyx_NAMESTR("Close_port"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_10Close_port, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_10Close_port)};
static PyObject *__pyx_pf_6mpi4py_3MPI_10Close_port(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_port_name = 0;
  char *__pyx_v_cportname;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__port_name,0};
  __Pyx_RefNannySetupContext("Close_port");
  __pyx_self = __pyx_self;
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__port_name);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Close_port") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_port_name = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Close_port", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Close_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_port_name);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1737
 *     Close a port
 *     """
 *     cdef char *cportname = NULL             # <<<<<<<<<<<<<<
 *     port_name = asmpistr(port_name, &cportname, NULL)
 *     with nogil: CHKERR( MPI_Close_port(cportname) )
 */
  __pyx_v_cportname = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1738
 *     """
 *     cdef char *cportname = NULL
 *     port_name = asmpistr(port_name, &cportname, NULL)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Close_port(cportname) )
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_port_name, (&__pyx_v_cportname), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_port_name);
  __pyx_v_port_name = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1739
 *     cdef char *cportname = NULL
 *     port_name = asmpistr(port_name, &cportname, NULL)
 *     with nogil: CHKERR( MPI_Close_port(cportname) )             # <<<<<<<<<<<<<<
 * 
 * # [5.4.4] Name Publishing
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Close_port(__pyx_v_cportname)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1739; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Close_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_port_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1744
 * # -----------------------
 * 
 * def Publish_name(service_name, Info info, port_name):             # <<<<<<<<<<<<<<
 *     """
 *     Publish a service name
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_11Publish_name(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_11Publish_name[] = "Publish_name(service_name, Info info, port_name)\n\n    Publish a service name\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_11Publish_name = {__Pyx_NAMESTR("Publish_name"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_11Publish_name, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_11Publish_name)};
static PyObject *__pyx_pf_6mpi4py_3MPI_11Publish_name(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_service_name = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  PyObject *__pyx_v_port_name = 0;
  char *__pyx_v_csrvcname;
  char *__pyx_v_cportname;
  MPI_Info __pyx_v_cinfo;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__service_name,&__pyx_n_s__info,&__pyx_n_s__port_name,0};
  __Pyx_RefNannySetupContext("Publish_name");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__service_name);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__info);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Publish_name", 1, 3, 3, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1744; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__port_name);
        if (likely(values[2])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Publish_name", 1, 3, 3, 2); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1744; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Publish_name") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1744; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_service_name = values[0];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[1]);
    __pyx_v_port_name = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Publish_name", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1744; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Publish_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_service_name);
  __Pyx_INCREF(__pyx_v_port_name);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 1, "info", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1748
 *     Publish a service name
 *     """
 *     cdef char *csrvcname = NULL             # <<<<<<<<<<<<<<
 *     service_name = asmpistr(service_name, &csrvcname, NULL)
 *     cdef char *cportname = NULL
 */
  __pyx_v_csrvcname = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1749
 *     """
 *     cdef char *csrvcname = NULL
 *     service_name = asmpistr(service_name, &csrvcname, NULL)             # <<<<<<<<<<<<<<
 *     cdef char *cportname = NULL
 *     port_name = asmpistr(port_name, &cportname, NULL)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_service_name, (&__pyx_v_csrvcname), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_service_name);
  __pyx_v_service_name = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1750
 *     cdef char *csrvcname = NULL
 *     service_name = asmpistr(service_name, &csrvcname, NULL)
 *     cdef char *cportname = NULL             # <<<<<<<<<<<<<<
 *     port_name = asmpistr(port_name, &cportname, NULL)
 *     cdef MPI_Info cinfo = arg_Info(info)
 */
  __pyx_v_cportname = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1751
 *     service_name = asmpistr(service_name, &csrvcname, NULL)
 *     cdef char *cportname = NULL
 *     port_name = asmpistr(port_name, &cportname, NULL)             # <<<<<<<<<<<<<<
 *     cdef MPI_Info cinfo = arg_Info(info)
 *     with nogil: CHKERR( MPI_Publish_name(csrvcname, cinfo, cportname) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_port_name, (&__pyx_v_cportname), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_port_name);
  __pyx_v_port_name = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1752
 *     cdef char *cportname = NULL
 *     port_name = asmpistr(port_name, &cportname, NULL)
 *     cdef MPI_Info cinfo = arg_Info(info)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Publish_name(csrvcname, cinfo, cportname) )
 * 
 */
  __pyx_v_cinfo = __pyx_f_6mpi4py_3MPI_arg_Info(((PyObject *)__pyx_v_info));

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1753
 *     port_name = asmpistr(port_name, &cportname, NULL)
 *     cdef MPI_Info cinfo = arg_Info(info)
 *     with nogil: CHKERR( MPI_Publish_name(csrvcname, cinfo, cportname) )             # <<<<<<<<<<<<<<
 * 
 * def Unpublish_name(service_name, Info info, port_name):
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Publish_name(__pyx_v_csrvcname, __pyx_v_cinfo, __pyx_v_cportname)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1753; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Publish_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_service_name);
  __Pyx_XDECREF(__pyx_v_port_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1755
 *     with nogil: CHKERR( MPI_Publish_name(csrvcname, cinfo, cportname) )
 * 
 * def Unpublish_name(service_name, Info info, port_name):             # <<<<<<<<<<<<<<
 *     """
 *     Unpublish a service name
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_12Unpublish_name(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_12Unpublish_name[] = "Unpublish_name(service_name, Info info, port_name)\n\n    Unpublish a service name\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_12Unpublish_name = {__Pyx_NAMESTR("Unpublish_name"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_12Unpublish_name, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_12Unpublish_name)};
static PyObject *__pyx_pf_6mpi4py_3MPI_12Unpublish_name(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_service_name = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  PyObject *__pyx_v_port_name = 0;
  char *__pyx_v_csrvcname;
  char *__pyx_v_cportname;
  MPI_Info __pyx_v_cinfo;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__service_name,&__pyx_n_s__info,&__pyx_n_s__port_name,0};
  __Pyx_RefNannySetupContext("Unpublish_name");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__service_name);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__info);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Unpublish_name", 1, 3, 3, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1755; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__port_name);
        if (likely(values[2])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Unpublish_name", 1, 3, 3, 2); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1755; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Unpublish_name") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1755; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_service_name = values[0];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[1]);
    __pyx_v_port_name = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Unpublish_name", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1755; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Unpublish_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_service_name);
  __Pyx_INCREF(__pyx_v_port_name);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 1, "info", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1755; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1759
 *     Unpublish a service name
 *     """
 *     cdef char *csrvcname = NULL             # <<<<<<<<<<<<<<
 *     service_name = asmpistr(service_name, &csrvcname, NULL)
 *     cdef char *cportname = NULL
 */
  __pyx_v_csrvcname = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1760
 *     """
 *     cdef char *csrvcname = NULL
 *     service_name = asmpistr(service_name, &csrvcname, NULL)             # <<<<<<<<<<<<<<
 *     cdef char *cportname = NULL
 *     port_name = asmpistr(port_name, &cportname, NULL)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_service_name, (&__pyx_v_csrvcname), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_service_name);
  __pyx_v_service_name = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1761
 *     cdef char *csrvcname = NULL
 *     service_name = asmpistr(service_name, &csrvcname, NULL)
 *     cdef char *cportname = NULL             # <<<<<<<<<<<<<<
 *     port_name = asmpistr(port_name, &cportname, NULL)
 *     cdef MPI_Info cinfo = arg_Info(info)
 */
  __pyx_v_cportname = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1762
 *     service_name = asmpistr(service_name, &csrvcname, NULL)
 *     cdef char *cportname = NULL
 *     port_name = asmpistr(port_name, &cportname, NULL)             # <<<<<<<<<<<<<<
 *     cdef MPI_Info cinfo = arg_Info(info)
 *     with nogil: CHKERR( MPI_Unpublish_name(csrvcname, cinfo, cportname) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_port_name, (&__pyx_v_cportname), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1762; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_port_name);
  __pyx_v_port_name = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1763
 *     cdef char *cportname = NULL
 *     port_name = asmpistr(port_name, &cportname, NULL)
 *     cdef MPI_Info cinfo = arg_Info(info)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Unpublish_name(csrvcname, cinfo, cportname) )
 * 
 */
  __pyx_v_cinfo = __pyx_f_6mpi4py_3MPI_arg_Info(((PyObject *)__pyx_v_info));

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1764
 *     port_name = asmpistr(port_name, &cportname, NULL)
 *     cdef MPI_Info cinfo = arg_Info(info)
 *     with nogil: CHKERR( MPI_Unpublish_name(csrvcname, cinfo, cportname) )             # <<<<<<<<<<<<<<
 * 
 * def Lookup_name(service_name, Info info=INFO_NULL):
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Unpublish_name(__pyx_v_csrvcname, __pyx_v_cinfo, __pyx_v_cportname)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1764; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Unpublish_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_service_name);
  __Pyx_XDECREF(__pyx_v_port_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1766
 *     with nogil: CHKERR( MPI_Unpublish_name(csrvcname, cinfo, cportname) )
 * 
 * def Lookup_name(service_name, Info info=INFO_NULL):             # <<<<<<<<<<<<<<
 *     """
 *     Lookup a port name given a service name
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_13Lookup_name(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_13Lookup_name[] = "Lookup_name(service_name, Info info=INFO_NULL)\n\n    Lookup a port name given a service name\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_13Lookup_name = {__Pyx_NAMESTR("Lookup_name"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_13Lookup_name, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_13Lookup_name)};
static PyObject *__pyx_pf_6mpi4py_3MPI_13Lookup_name(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_service_name = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  char *__pyx_v_csrvcname;
  MPI_Info __pyx_v_cinfo;
  char __pyx_v_cportname[(MPI_MAX_PORT_NAME + 1)];
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__service_name,&__pyx_n_s__info,0};
  __Pyx_RefNannySetupContext("Lookup_name");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)__pyx_k_98;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__service_name);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__info);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Lookup_name") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1766; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_service_name = values[0];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Lookup_name", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1766; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Lookup_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_service_name);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 1, "info", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1770
 *     Lookup a port name given a service name
 *     """
 *     cdef char *csrvcname = NULL             # <<<<<<<<<<<<<<
 *     service_name = asmpistr(service_name, &csrvcname, NULL)
 *     cdef MPI_Info cinfo = arg_Info(info)
 */
  __pyx_v_csrvcname = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1771
 *     """
 *     cdef char *csrvcname = NULL
 *     service_name = asmpistr(service_name, &csrvcname, NULL)             # <<<<<<<<<<<<<<
 *     cdef MPI_Info cinfo = arg_Info(info)
 *     cdef char cportname[MPI_MAX_PORT_NAME+1]
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_service_name, (&__pyx_v_csrvcname), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_service_name);
  __pyx_v_service_name = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1772
 *     cdef char *csrvcname = NULL
 *     service_name = asmpistr(service_name, &csrvcname, NULL)
 *     cdef MPI_Info cinfo = arg_Info(info)             # <<<<<<<<<<<<<<
 *     cdef char cportname[MPI_MAX_PORT_NAME+1]
 *     with nogil: CHKERR( MPI_Lookup_name(csrvcname, cinfo, cportname) )
 */
  __pyx_v_cinfo = __pyx_f_6mpi4py_3MPI_arg_Info(((PyObject *)__pyx_v_info));

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1774
 *     cdef MPI_Info cinfo = arg_Info(info)
 *     cdef char cportname[MPI_MAX_PORT_NAME+1]
 *     with nogil: CHKERR( MPI_Lookup_name(csrvcname, cinfo, cportname) )             # <<<<<<<<<<<<<<
 *     cportname[MPI_MAX_PORT_NAME] = 0 # just in case
 *     return mpistr(cportname)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Lookup_name(__pyx_v_csrvcname, __pyx_v_cinfo, __pyx_v_cportname)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1774; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1775
 *     cdef char cportname[MPI_MAX_PORT_NAME+1]
 *     with nogil: CHKERR( MPI_Lookup_name(csrvcname, cinfo, cportname) )
 *     cportname[MPI_MAX_PORT_NAME] = 0 # just in case             # <<<<<<<<<<<<<<
 *     return mpistr(cportname)
 */
  (__pyx_v_cportname[MPI_MAX_PORT_NAME]) = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1776
 *     with nogil: CHKERR( MPI_Lookup_name(csrvcname, cinfo, cportname) )
 *     cportname[MPI_MAX_PORT_NAME] = 0 # just in case
 *     return mpistr(cportname)             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_cportname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Lookup_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_service_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":23
 *     """
 * 
 *     def __cinit__(self, Win win=None):             # <<<<<<<<<<<<<<
 *         self.ob_mpi = MPI_WIN_NULL
 *         if win is not None:
 */

static int __pyx_pf_6mpi4py_3MPI_3Win___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_3Win___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIWinObject *__pyx_v_win = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__win,0};
  __Pyx_RefNannySetupContext("__cinit__");
  {
    PyObject* values[1] = {0};
    values[0] = (PyObject *)((struct PyMPIWinObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__win);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_win = ((struct PyMPIWinObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_win), __pyx_ptype_6mpi4py_3MPI_Win, 1, "win", 0))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":24
 * 
 *     def __cinit__(self, Win win=None):
 *         self.ob_mpi = MPI_WIN_NULL             # <<<<<<<<<<<<<<
 *         if win is not None:
 *             self.ob_mpi =  win.ob_mpi
 */
  ((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi = MPI_WIN_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":25
 *     def __cinit__(self, Win win=None):
 *         self.ob_mpi = MPI_WIN_NULL
 *         if win is not None:             # <<<<<<<<<<<<<<
 *             self.ob_mpi =  win.ob_mpi
 * 
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_win) != Py_None);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":26
 *         self.ob_mpi = MPI_WIN_NULL
 *         if win is not None:
 *             self.ob_mpi =  win.ob_mpi             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
    ((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi = __pyx_v_win->ob_mpi;
    goto __pyx_L6;
  }
  __pyx_L6:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":28
 *             self.ob_mpi =  win.ob_mpi
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( del_Win(&self.ob_mpi) )
 */

static void __pyx_pf_6mpi4py_3MPI_3Win_1__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_6mpi4py_3MPI_3Win_1__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":29
 * 
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return             # <<<<<<<<<<<<<<
 *         CHKERR( del_Win(&self.ob_mpi) )
 * 
 */
  __pyx_t_1 = (!(((struct PyMPIWinObject *)__pyx_v_self)->flags & __pyx_e_6mpi4py_3MPI_PyMPI_OWNED));
  if (__pyx_t_1) {
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":30
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( del_Win(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_f_6mpi4py_3MPI_del_Win((&((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":32
 *         CHKERR( del_Win(&self.ob_mpi) )
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(self,  Win): return NotImplemented
 *         if not isinstance(other, Win): return NotImplemented
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  struct PyMPIWinObject *__pyx_v_s = 0;
  struct PyMPIWinObject *__pyx_v_o = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":33
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Win): return NotImplemented             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Win): return NotImplemented
 *         cdef Win s = <Win>self, o = <Win>other
 */
  __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Win));
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_self, __pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":34
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Win): return NotImplemented
 *         if not isinstance(other, Win): return NotImplemented             # <<<<<<<<<<<<<<
 *         cdef Win s = <Win>self, o = <Win>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 */
  __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Win));
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_other, __pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = (!__pyx_t_3);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":35
 *         if not isinstance(self,  Win): return NotImplemented
 *         if not isinstance(other, Win): return NotImplemented
 *         cdef Win s = <Win>self, o = <Win>other             # <<<<<<<<<<<<<<
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 */
  __Pyx_INCREF(((PyObject *)((struct PyMPIWinObject *)__pyx_v_self)));
  __pyx_v_s = ((struct PyMPIWinObject *)__pyx_v_self);
  __Pyx_INCREF(((PyObject *)((struct PyMPIWinObject *)__pyx_v_other)));
  __pyx_v_o = ((struct PyMPIWinObject *)__pyx_v_other);

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":37
 *         cdef Win s = <Win>self, o = <Win>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError("only '==' and '!='")
 * 
 */
  switch (__pyx_v_op) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":36
 *         if not isinstance(other, Win): return NotImplemented
 *         cdef Win s = <Win>self, o = <Win>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)             # <<<<<<<<<<<<<<
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")
 */
    case Py_EQ:
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi == __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":37
 *         cdef Win s = <Win>self, o = <Win>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError("only '==' and '!='")
 * 
 */
    case Py_NE:
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi != __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    break;
    default:

    /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":38
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
    __pyx_t_1 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_99), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[25]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    break;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_s);
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":40
 *         else: raise TypeError("only '==' and '!='")
 * 
 *     def __bool__(self):             # <<<<<<<<<<<<<<
 *         return self.ob_mpi != MPI_WIN_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_3Win_3__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_3Win_3__bool__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":41
 * 
 *     def __bool__(self):
 *         return self.ob_mpi != MPI_WIN_NULL             # <<<<<<<<<<<<<<
 * 
 *     # [6.2] Initialization
 */
  __pyx_r = (((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi != MPI_WIN_NULL);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":50
 * 
 *     @classmethod
 *     def Create(cls, memory, int disp_unit=1,             # <<<<<<<<<<<<<<
 *                Info info=INFO_NULL, Intracomm comm not None=COMM_SELF):
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_4Create(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_4Create[] = "Win.Create(type cls, memory, int disp_unit=1, Info info=INFO_NULL, Intracomm comm=COMM_SELF)\n\n        Create an window object for one-sided communication\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_4Create(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_memory = 0;
  int __pyx_v_disp_unit;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  struct PyMPIIntracommObject *__pyx_v_comm = 0;
  void *__pyx_v_base;
  MPI_Aint __pyx_v_size;
  MPI_Info __pyx_v_cinfo;
  struct PyMPIWinObject *__pyx_v_win = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__memory,&__pyx_n_s__disp_unit,&__pyx_n_s__info,&__pyx_n_s__comm,0};
  __Pyx_RefNannySetupContext("Create");
  {
    PyObject* values[4] = {0,0,0,0};
    values[2] = (PyObject *)__pyx_k_100;
    values[3] = (PyObject *)__pyx_k_101;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__memory);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__disp_unit);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__info);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__comm);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create") < 0)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_memory = values[0];
    if (values[1]) {
      __pyx_v_disp_unit = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_disp_unit == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_disp_unit = ((int)1);
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[2]);
    __pyx_v_comm = ((struct PyMPIIntracommObject *)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_memory);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 1, "info", 0))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Intracomm, 0, "comm", 0))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":55
 *         Create an window object for one-sided communication
 *         """
 *         cdef void *base = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint size = 0
 *         if memory is __BOTTOM__:
 */
  __pyx_v_base = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":56
 *         """
 *         cdef void *base = NULL
 *         cdef MPI_Aint size = 0             # <<<<<<<<<<<<<<
 *         if memory is __BOTTOM__:
 *             base = MPI_BOTTOM
 */
  __pyx_v_size = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":57
 *         cdef void *base = NULL
 *         cdef MPI_Aint size = 0
 *         if memory is __BOTTOM__:             # <<<<<<<<<<<<<<
 *             base = MPI_BOTTOM
 *             memory = None
 */
  __pyx_t_1 = (__pyx_v_memory == __pyx_v_6mpi4py_3MPI___BOTTOM__);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":58
 *         cdef MPI_Aint size = 0
 *         if memory is __BOTTOM__:
 *             base = MPI_BOTTOM             # <<<<<<<<<<<<<<
 *             memory = None
 *         elif memory is not None:
 */
    __pyx_v_base = MPI_BOTTOM;

    /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":59
 *         if memory is __BOTTOM__:
 *             base = MPI_BOTTOM
 *             memory = None             # <<<<<<<<<<<<<<
 *         elif memory is not None:
 *             memory = getbuffer_w(memory, &base, &size)
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF(__pyx_v_memory);
    __pyx_v_memory = Py_None;
    goto __pyx_L6;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":60
 *             base = MPI_BOTTOM
 *             memory = None
 *         elif memory is not None:             # <<<<<<<<<<<<<<
 *             memory = getbuffer_w(memory, &base, &size)
 *         cdef MPI_Info cinfo = arg_Info(info)
 */
  __pyx_t_1 = (__pyx_v_memory != Py_None);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":61
 *             memory = None
 *         elif memory is not None:
 *             memory = getbuffer_w(memory, &base, &size)             # <<<<<<<<<<<<<<
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         cdef Win win = <Win>cls()
 */
    __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer_w(__pyx_v_memory, (&__pyx_v_base), (&__pyx_v_size))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_memory);
    __pyx_v_memory = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":62
 *         elif memory is not None:
 *             memory = getbuffer_w(memory, &base, &size)
 *         cdef MPI_Info cinfo = arg_Info(info)             # <<<<<<<<<<<<<<
 *         cdef Win win = <Win>cls()
 *         with nogil:
 */
  __pyx_v_cinfo = __pyx_f_6mpi4py_3MPI_arg_Info(((PyObject *)__pyx_v_info));

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":63
 *             memory = getbuffer_w(memory, &base, &size)
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         cdef Win win = <Win>cls()             # <<<<<<<<<<<<<<
 *         with nogil:
 *             CHKERR( MPI_Win_create(
 */
  __pyx_t_2 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)((struct PyMPIWinObject *)__pyx_t_2)));
  __pyx_v_win = ((struct PyMPIWinObject *)__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":64
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         cdef Win win = <Win>cls()
 *         with nogil:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Win_create(
 *                     base, size, disp_unit,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":67
 *             CHKERR( MPI_Win_create(
 *                     base, size, disp_unit,
 *                     cinfo, comm.ob_mpi, &win.ob_mpi) )             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Win_set_errhandler(
 *                     win.ob_mpi, MPI_ERRORS_RETURN) )
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_create(__pyx_v_base, __pyx_v_size, __pyx_v_disp_unit, __pyx_v_cinfo, __pyx_v_comm->__pyx_base.ob_mpi, (&__pyx_v_win->ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L8;}

        /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":69
 *                     cinfo, comm.ob_mpi, &win.ob_mpi) )
 *             CHKERR( MPI_Win_set_errhandler(
 *                     win.ob_mpi, MPI_ERRORS_RETURN) )             # <<<<<<<<<<<<<<
 *         CHKERR( PyMPI_Win_setup(win.ob_mpi, memory) )
 *         return win
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_set_errhandler(__pyx_v_win->ob_mpi, MPI_ERRORS_RETURN)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L8;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":64
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         cdef Win win = <Win>cls()
 *         with nogil:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Win_create(
 *                     base, size, disp_unit,
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L9;
        __pyx_L8: __pyx_why = 4; goto __pyx_L9;
        __pyx_L9:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":70
 *             CHKERR( MPI_Win_set_errhandler(
 *                     win.ob_mpi, MPI_ERRORS_RETURN) )
 *         CHKERR( PyMPI_Win_setup(win.ob_mpi, memory) )             # <<<<<<<<<<<<<<
 *         return win
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_f_6mpi4py_3MPI_PyMPI_Win_setup(__pyx_v_win->ob_mpi, __pyx_v_memory)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":71
 *                     win.ob_mpi, MPI_ERRORS_RETURN) )
 *         CHKERR( PyMPI_Win_setup(win.ob_mpi, memory) )
 *         return win             # <<<<<<<<<<<<<<
 * 
 *     def Free(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_win));
  __pyx_r = ((PyObject *)__pyx_v_win);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_win);
  __Pyx_XDECREF(__pyx_v_memory);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":73
 *         return win
 * 
 *     def Free(self):             # <<<<<<<<<<<<<<
 *         """
 *         Free a window
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_5Free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_5Free[] = "Win.Free(self)\n\n        Free a window\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_5Free(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Free");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Free", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Free", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":77
 *         Free a window
 *         """
 *         with nogil: CHKERR( MPI_Win_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # [6.2.2] Window Attributes
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_free((&((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":82
 *     # -------------------------
 * 
 *     def Get_group(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return a duplicate of the group of the
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_6Get_group(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_6Get_group[] = "Win.Get_group(self)\n\n        Return a duplicate of the group of the\n        communicator used to create the window\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_6Get_group(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_group");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_group", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_group", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":87
 *         communicator used to create the window
 *         """
 *         cdef Group group = Group()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Win_get_group(self.ob_mpi, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Group)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":88
 *         """
 *         cdef Group group = Group()
 *         with nogil: CHKERR( MPI_Win_get_group(self.ob_mpi, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_group(((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":89
 *         cdef Group group = Group()
 *         with nogil: CHKERR( MPI_Win_get_group(self.ob_mpi, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     property group:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_group));
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Get_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":93
 *     property group:
 *         """window group"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_group()
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_5group___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_5group___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":94
 *         """window group"""
 *         def __get__(self):
 *             return self.Get_group()             # <<<<<<<<<<<<<<
 * 
 *     def Get_attr(self, int keyval):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_group); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Win.group.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":96
 *             return self.Get_group()
 * 
 *     def Get_attr(self, int keyval):             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve attribute value by key
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_7Get_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_7Get_attr[] = "Win.Get_attr(self, int keyval)\n\n        Retrieve attribute value by key\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_7Get_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_keyval;
  void *__pyx_v_attrval;
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__keyval,0};
  __Pyx_RefNannySetupContext("Get_attr");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__keyval);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Get_attr") < 0)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_keyval = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_attr", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Get_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":100
 *         Retrieve attribute value by key
 *         """
 *         cdef void *attrval = NULL             # <<<<<<<<<<<<<<
 *         cdef int flag = 0
 *         CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 */
  __pyx_v_attrval = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":101
 *         """
 *         cdef void *attrval = NULL
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 *         if not flag: return None
 */
  __pyx_v_flag = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":102
 *         cdef void *attrval = NULL
 *         cdef int flag = 0
 *         CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval, &attrval, &flag) )             # <<<<<<<<<<<<<<
 *         if not flag: return None
 *         if not attrval: return 0
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_attr(((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi, __pyx_v_keyval, (&__pyx_v_attrval), (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":103
 *         cdef int flag = 0
 *         CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 *         if not flag: return None             # <<<<<<<<<<<<<<
 *         if not attrval: return 0
 *         # handle predefined keyvals
 */
  __pyx_t_2 = (!__pyx_v_flag);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":104
 *         CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 *         if not flag: return None
 *         if not attrval: return 0             # <<<<<<<<<<<<<<
 *         # handle predefined keyvals
 *         if (keyval == <int>MPI_WIN_BASE):
 */
  __pyx_t_2 = (!(__pyx_v_attrval != 0));
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_int_0);
    __pyx_r = __pyx_int_0;
    goto __pyx_L0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":106
 *         if not attrval: return 0
 *         # handle predefined keyvals
 *         if (keyval == <int>MPI_WIN_BASE):             # <<<<<<<<<<<<<<
 *             return <MPI_Aint>attrval
 *         elif (keyval == <int>MPI_WIN_SIZE):
 */
  __pyx_t_2 = (__pyx_v_keyval == ((int)MPI_WIN_BASE));
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":107
 *         # handle predefined keyvals
 *         if (keyval == <int>MPI_WIN_BASE):
 *             return <MPI_Aint>attrval             # <<<<<<<<<<<<<<
 *         elif (keyval == <int>MPI_WIN_SIZE):
 *             return (<MPI_Aint*>attrval)[0]
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_to_py_MPI_Aint(((MPI_Aint)__pyx_v_attrval)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L8;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":108
 *         if (keyval == <int>MPI_WIN_BASE):
 *             return <MPI_Aint>attrval
 *         elif (keyval == <int>MPI_WIN_SIZE):             # <<<<<<<<<<<<<<
 *             return (<MPI_Aint*>attrval)[0]
 *         elif (keyval == <int>MPI_WIN_DISP_UNIT):
 */
  __pyx_t_2 = (__pyx_v_keyval == ((int)MPI_WIN_SIZE));
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":109
 *             return <MPI_Aint>attrval
 *         elif (keyval == <int>MPI_WIN_SIZE):
 *             return (<MPI_Aint*>attrval)[0]             # <<<<<<<<<<<<<<
 *         elif (keyval == <int>MPI_WIN_DISP_UNIT):
 *             return (<int*>attrval)[0]
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_to_py_MPI_Aint((((MPI_Aint *)__pyx_v_attrval)[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L8;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":110
 *         elif (keyval == <int>MPI_WIN_SIZE):
 *             return (<MPI_Aint*>attrval)[0]
 *         elif (keyval == <int>MPI_WIN_DISP_UNIT):             # <<<<<<<<<<<<<<
 *             return (<int*>attrval)[0]
 *         # likely be a user-defined keyval
 */
  __pyx_t_2 = (__pyx_v_keyval == ((int)MPI_WIN_DISP_UNIT));
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":111
 *             return (<MPI_Aint*>attrval)[0]
 *         elif (keyval == <int>MPI_WIN_DISP_UNIT):
 *             return (<int*>attrval)[0]             # <<<<<<<<<<<<<<
 *         # likely be a user-defined keyval
 *         elif keyval in win_keyval:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = PyInt_FromLong((((int *)__pyx_v_attrval)[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L8;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":113
 *             return (<int*>attrval)[0]
 *         # likely be a user-defined keyval
 *         elif keyval in win_keyval:             # <<<<<<<<<<<<<<
 *             return <object>attrval
 *         else:
 */
  __pyx_t_3 = PyInt_FromLong(__pyx_v_keyval); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (unlikely(((PyObject *)__pyx_v_6mpi4py_3MPI_win_keyval) == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_2 = ((PyDict_Contains(((PyObject *)__pyx_v_6mpi4py_3MPI_win_keyval), __pyx_t_3))); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":114
 *         # likely be a user-defined keyval
 *         elif keyval in win_keyval:
 *             return <object>attrval             # <<<<<<<<<<<<<<
 *         else:
 *             return PyLong_FromVoidPtr(attrval)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_attrval));
    __pyx_r = ((PyObject *)__pyx_v_attrval);
    goto __pyx_L0;
    goto __pyx_L8;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":116
 *             return <object>attrval
 *         else:
 *             return PyLong_FromVoidPtr(attrval)             # <<<<<<<<<<<<<<
 * 
 *     def Set_attr(self, int keyval, object attrval):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = PyLong_FromVoidPtr(__pyx_v_attrval); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }
  __pyx_L8:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Get_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":118
 *             return PyLong_FromVoidPtr(attrval)
 * 
 *     def Set_attr(self, int keyval, object attrval):             # <<<<<<<<<<<<<<
 *         """
 *         Store attribute value associated with a key
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_8Set_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_8Set_attr[] = "Win.Set_attr(self, int keyval, attrval)\n\n        Store attribute value associated with a key\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_8Set_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_keyval;
  PyObject *__pyx_v_attrval = 0;
  void *__pyx_v_ptrval;
  int __pyx_v_incref;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__keyval,&__pyx_n_s__attrval,0};
  __Pyx_RefNannySetupContext("Set_attr");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__keyval);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__attrval);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Set_attr", 1, 2, 2, 1); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Set_attr") < 0)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_keyval = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_attrval = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_attr", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Set_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":122
 *         Store attribute value associated with a key
 *         """
 *         cdef void *ptrval = NULL             # <<<<<<<<<<<<<<
 *         cdef int incref = 0
 *         if keyval in win_keyval:
 */
  __pyx_v_ptrval = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":123
 *         """
 *         cdef void *ptrval = NULL
 *         cdef int incref = 0             # <<<<<<<<<<<<<<
 *         if keyval in win_keyval:
 *             ptrval = <void*>attrval
 */
  __pyx_v_incref = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":124
 *         cdef void *ptrval = NULL
 *         cdef int incref = 0
 *         if keyval in win_keyval:             # <<<<<<<<<<<<<<
 *             ptrval = <void*>attrval
 *             incref = 1
 */
  __pyx_t_1 = PyInt_FromLong(__pyx_v_keyval); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely(((PyObject *)__pyx_v_6mpi4py_3MPI_win_keyval) == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_2 = ((PyDict_Contains(((PyObject *)__pyx_v_6mpi4py_3MPI_win_keyval), __pyx_t_1))); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":125
 *         cdef int incref = 0
 *         if keyval in win_keyval:
 *             ptrval = <void*>attrval             # <<<<<<<<<<<<<<
 *             incref = 1
 *         else:
 */
    __pyx_v_ptrval = ((void *)__pyx_v_attrval);

    /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":126
 *         if keyval in win_keyval:
 *             ptrval = <void*>attrval
 *             incref = 1             # <<<<<<<<<<<<<<
 *         else:
 *             ptrval = PyLong_AsVoidPtr(attrval)
 */
    __pyx_v_incref = 1;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":128
 *             incref = 1
 *         else:
 *             ptrval = PyLong_AsVoidPtr(attrval)             # <<<<<<<<<<<<<<
 *             incref = 0
 *         CHKERR(MPI_Win_set_attr(self.ob_mpi, keyval, ptrval) )
 */
    __pyx_v_ptrval = PyLong_AsVoidPtr(__pyx_v_attrval);

    /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":129
 *         else:
 *             ptrval = PyLong_AsVoidPtr(attrval)
 *             incref = 0             # <<<<<<<<<<<<<<
 *         CHKERR(MPI_Win_set_attr(self.ob_mpi, keyval, ptrval) )
 *         if incref: Py_INCREF(attrval)
 */
    __pyx_v_incref = 0;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":130
 *             ptrval = PyLong_AsVoidPtr(attrval)
 *             incref = 0
 *         CHKERR(MPI_Win_set_attr(self.ob_mpi, keyval, ptrval) )             # <<<<<<<<<<<<<<
 *         if incref: Py_INCREF(attrval)
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_set_attr(((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi, __pyx_v_keyval, __pyx_v_ptrval)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":131
 *             incref = 0
 *         CHKERR(MPI_Win_set_attr(self.ob_mpi, keyval, ptrval) )
 *         if incref: Py_INCREF(attrval)             # <<<<<<<<<<<<<<
 * 
 *     def Delete_attr(self, int keyval):
 */
  if (__pyx_v_incref) {
    Py_INCREF(__pyx_v_attrval);
    goto __pyx_L7;
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Set_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":133
 *         if incref: Py_INCREF(attrval)
 * 
 *     def Delete_attr(self, int keyval):             # <<<<<<<<<<<<<<
 *         """
 *         Delete attribute value associated with a key
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_9Delete_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_9Delete_attr[] = "Win.Delete_attr(self, int keyval)\n\n        Delete attribute value associated with a key\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_9Delete_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_keyval;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__keyval,0};
  __Pyx_RefNannySetupContext("Delete_attr");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__keyval);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Delete_attr") < 0)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_keyval = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Delete_attr", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Delete_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":137
 *         Delete attribute value associated with a key
 *         """
 *         CHKERR(MPI_Win_delete_attr(self.ob_mpi, keyval) )             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_delete_attr(((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi, __pyx_v_keyval)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Delete_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":140
 * 
 *     @classmethod
 *     def Create_keyval(cls, copy_fn=None, delete_fn=None):             # <<<<<<<<<<<<<<
 *         """
 *         Create a new attribute key for windows
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_10Create_keyval(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_10Create_keyval[] = "Win.Create_keyval(type cls, copy_fn=None, delete_fn=None)\n\n        Create a new attribute key for windows\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_10Create_keyval(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_copy_fn = 0;
  PyObject *__pyx_v_delete_fn = 0;
  int __pyx_v_keyval;
  MPI_Win_copy_attr_function *__pyx_v__copy;
  MPI_Win_delete_attr_function *__pyx_v__del;
  void *__pyx_v_extra_state;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__copy_fn,&__pyx_n_s__delete_fn,0};
  __Pyx_RefNannySetupContext("Create_keyval");
  {
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__copy_fn);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__delete_fn);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Create_keyval") < 0)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_copy_fn = values[0];
    __pyx_v_delete_fn = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_keyval", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Create_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":144
 *         Create a new attribute key for windows
 *         """
 *         cdef int keyval = MPI_KEYVAL_INVALID             # <<<<<<<<<<<<<<
 *         cdef MPI_Win_copy_attr_function *_copy = win_attr_copy_fn
 *         cdef MPI_Win_delete_attr_function *_del = win_attr_delete_fn
 */
  __pyx_v_keyval = MPI_KEYVAL_INVALID;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":145
 *         """
 *         cdef int keyval = MPI_KEYVAL_INVALID
 *         cdef MPI_Win_copy_attr_function *_copy = win_attr_copy_fn             # <<<<<<<<<<<<<<
 *         cdef MPI_Win_delete_attr_function *_del = win_attr_delete_fn
 *         cdef void *extra_state = NULL
 */
  __pyx_v__copy = __pyx_f_6mpi4py_3MPI_win_attr_copy_fn;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":146
 *         cdef int keyval = MPI_KEYVAL_INVALID
 *         cdef MPI_Win_copy_attr_function *_copy = win_attr_copy_fn
 *         cdef MPI_Win_delete_attr_function *_del = win_attr_delete_fn             # <<<<<<<<<<<<<<
 *         cdef void *extra_state = NULL
 *         CHKERR( MPI_Win_create_keyval(_copy, _del, &keyval, extra_state) )
 */
  __pyx_v__del = __pyx_f_6mpi4py_3MPI_win_attr_delete_fn;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":147
 *         cdef MPI_Win_copy_attr_function *_copy = win_attr_copy_fn
 *         cdef MPI_Win_delete_attr_function *_del = win_attr_delete_fn
 *         cdef void *extra_state = NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Win_create_keyval(_copy, _del, &keyval, extra_state) )
 *         win_keyval_new(keyval, copy_fn, delete_fn)
 */
  __pyx_v_extra_state = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":148
 *         cdef MPI_Win_delete_attr_function *_del = win_attr_delete_fn
 *         cdef void *extra_state = NULL
 *         CHKERR( MPI_Win_create_keyval(_copy, _del, &keyval, extra_state) )             # <<<<<<<<<<<<<<
 *         win_keyval_new(keyval, copy_fn, delete_fn)
 *         return keyval
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_create_keyval(__pyx_v__copy, __pyx_v__del, (&__pyx_v_keyval), __pyx_v_extra_state)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":149
 *         cdef void *extra_state = NULL
 *         CHKERR( MPI_Win_create_keyval(_copy, _del, &keyval, extra_state) )
 *         win_keyval_new(keyval, copy_fn, delete_fn)             # <<<<<<<<<<<<<<
 *         return keyval
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_win_keyval_new(__pyx_v_keyval, __pyx_v_copy_fn, __pyx_v_delete_fn); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":150
 *         CHKERR( MPI_Win_create_keyval(_copy, _del, &keyval, extra_state) )
 *         win_keyval_new(keyval, copy_fn, delete_fn)
 *         return keyval             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Create_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":153
 * 
 *     @classmethod
 *     def Free_keyval(cls, int keyval):             # <<<<<<<<<<<<<<
 *         """
 *         Free and attribute key for windows
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_11Free_keyval(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_11Free_keyval[] = "Win.Free_keyval(type cls, int keyval)\n\n        Free and attribute key for windows\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_11Free_keyval(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_keyval;
  int __pyx_v_keyval_save;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__keyval,0};
  __Pyx_RefNannySetupContext("Free_keyval");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__keyval);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Free_keyval") < 0)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_keyval = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Free_keyval", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Free_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":157
 *         Free and attribute key for windows
 *         """
 *         cdef int keyval_save = keyval             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Win_free_keyval (&keyval) )
 *         win_keyval_del(keyval_save)
 */
  __pyx_v_keyval_save = __pyx_v_keyval;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":158
 *         """
 *         cdef int keyval_save = keyval
 *         CHKERR( MPI_Win_free_keyval (&keyval) )             # <<<<<<<<<<<<<<
 *         win_keyval_del(keyval_save)
 *         return keyval
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_free_keyval((&__pyx_v_keyval))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":159
 *         cdef int keyval_save = keyval
 *         CHKERR( MPI_Win_free_keyval (&keyval) )
 *         win_keyval_del(keyval_save)             # <<<<<<<<<<<<<<
 *         return keyval
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_win_keyval_del(__pyx_v_keyval_save); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":160
 *         CHKERR( MPI_Win_free_keyval (&keyval) )
 *         win_keyval_del(keyval_save)
 *         return keyval             # <<<<<<<<<<<<<<
 * 
 *     property attrs:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Free_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":164
 *     property attrs:
 *         "window attributes"
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef MPI_Win win = self.ob_mpi
 *             cdef void *base = NULL, *pbase = NULL
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_5attrs___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_5attrs___get__(PyObject *__pyx_v_self) {
  MPI_Win __pyx_v_win;
  void *__pyx_v_base;
  void *__pyx_v_pbase;
  MPI_Aint __pyx_v_size;
  MPI_Aint *__pyx_v_psize;
  int __pyx_v_disp;
  int *__pyx_v_pdisp;
  int __pyx_v_attr;
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":165
 *         "window attributes"
 *         def __get__(self):
 *             cdef MPI_Win win = self.ob_mpi             # <<<<<<<<<<<<<<
 *             cdef void *base = NULL, *pbase = NULL
 *             cdef MPI_Aint size = 0, *psize = NULL
 */
  __pyx_v_win = ((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":166
 *         def __get__(self):
 *             cdef MPI_Win win = self.ob_mpi
 *             cdef void *base = NULL, *pbase = NULL             # <<<<<<<<<<<<<<
 *             cdef MPI_Aint size = 0, *psize = NULL
 *             cdef int      disp = 0, *pdisp = NULL
 */
  __pyx_v_base = NULL;
  __pyx_v_pbase = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":167
 *             cdef MPI_Win win = self.ob_mpi
 *             cdef void *base = NULL, *pbase = NULL
 *             cdef MPI_Aint size = 0, *psize = NULL             # <<<<<<<<<<<<<<
 *             cdef int      disp = 0, *pdisp = NULL
 *             cdef int attr = MPI_KEYVAL_INVALID
 */
  __pyx_v_size = 0;
  __pyx_v_psize = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":168
 *             cdef void *base = NULL, *pbase = NULL
 *             cdef MPI_Aint size = 0, *psize = NULL
 *             cdef int      disp = 0, *pdisp = NULL             # <<<<<<<<<<<<<<
 *             cdef int attr = MPI_KEYVAL_INVALID
 *             cdef int flag = 0
 */
  __pyx_v_disp = 0;
  __pyx_v_pdisp = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":169
 *             cdef MPI_Aint size = 0, *psize = NULL
 *             cdef int      disp = 0, *pdisp = NULL
 *             cdef int attr = MPI_KEYVAL_INVALID             # <<<<<<<<<<<<<<
 *             cdef int flag = 0
 *             #
 */
  __pyx_v_attr = MPI_KEYVAL_INVALID;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":170
 *             cdef int      disp = 0, *pdisp = NULL
 *             cdef int attr = MPI_KEYVAL_INVALID
 *             cdef int flag = 0             # <<<<<<<<<<<<<<
 *             #
 *             attr = MPI_WIN_BASE
 */
  __pyx_v_flag = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":172
 *             cdef int flag = 0
 *             #
 *             attr = MPI_WIN_BASE             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Win_get_attr(win, attr, &pbase, &flag) )
 *             if flag and pbase != NULL: base = pbase
 */
  __pyx_v_attr = MPI_WIN_BASE;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":173
 *             #
 *             attr = MPI_WIN_BASE
 *             CHKERR( MPI_Win_get_attr(win, attr, &pbase, &flag) )             # <<<<<<<<<<<<<<
 *             if flag and pbase != NULL: base = pbase
 *             #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_attr(__pyx_v_win, __pyx_v_attr, (&__pyx_v_pbase), (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":174
 *             attr = MPI_WIN_BASE
 *             CHKERR( MPI_Win_get_attr(win, attr, &pbase, &flag) )
 *             if flag and pbase != NULL: base = pbase             # <<<<<<<<<<<<<<
 *             #
 *             attr = MPI_WIN_SIZE
 */
  if (__pyx_v_flag) {
    __pyx_t_2 = (__pyx_v_pbase != NULL);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_v_flag;
  }
  if (__pyx_t_3) {
    __pyx_v_base = __pyx_v_pbase;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":176
 *             if flag and pbase != NULL: base = pbase
 *             #
 *             attr = MPI_WIN_SIZE             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Win_get_attr(win, attr, &psize, &flag) )
 *             if flag and psize != NULL: size = psize[0]
 */
  __pyx_v_attr = MPI_WIN_SIZE;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":177
 *             #
 *             attr = MPI_WIN_SIZE
 *             CHKERR( MPI_Win_get_attr(win, attr, &psize, &flag) )             # <<<<<<<<<<<<<<
 *             if flag and psize != NULL: size = psize[0]
 *             #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_attr(__pyx_v_win, __pyx_v_attr, (&__pyx_v_psize), (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":178
 *             attr = MPI_WIN_SIZE
 *             CHKERR( MPI_Win_get_attr(win, attr, &psize, &flag) )
 *             if flag and psize != NULL: size = psize[0]             # <<<<<<<<<<<<<<
 *             #
 *             attr = MPI_WIN_DISP_UNIT
 */
  if (__pyx_v_flag) {
    __pyx_t_3 = (__pyx_v_psize != NULL);
    __pyx_t_2 = __pyx_t_3;
  } else {
    __pyx_t_2 = __pyx_v_flag;
  }
  if (__pyx_t_2) {
    __pyx_v_size = (__pyx_v_psize[0]);
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":180
 *             if flag and psize != NULL: size = psize[0]
 *             #
 *             attr = MPI_WIN_DISP_UNIT             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Win_get_attr(win, attr, &pdisp, &flag) )
 *             if flag and pdisp != NULL: disp = pdisp[0]
 */
  __pyx_v_attr = MPI_WIN_DISP_UNIT;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":181
 *             #
 *             attr = MPI_WIN_DISP_UNIT
 *             CHKERR( MPI_Win_get_attr(win, attr, &pdisp, &flag) )             # <<<<<<<<<<<<<<
 *             if flag and pdisp != NULL: disp = pdisp[0]
 *             #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_attr(__pyx_v_win, __pyx_v_attr, (&__pyx_v_pdisp), (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":182
 *             attr = MPI_WIN_DISP_UNIT
 *             CHKERR( MPI_Win_get_attr(win, attr, &pdisp, &flag) )
 *             if flag and pdisp != NULL: disp = pdisp[0]             # <<<<<<<<<<<<<<
 *             #
 *             return (<MPI_Aint>base, size, disp)
 */
  if (__pyx_v_flag) {
    __pyx_t_2 = (__pyx_v_pdisp != NULL);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_v_flag;
  }
  if (__pyx_t_3) {
    __pyx_v_disp = (__pyx_v_pdisp[0]);
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":184
 *             if flag and pdisp != NULL: disp = pdisp[0]
 *             #
 *             return (<MPI_Aint>base, size, disp)             # <<<<<<<<<<<<<<
 * 
 *     property memory:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_to_py_MPI_Aint(((MPI_Aint)__pyx_v_base)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyInt_FromLong(__pyx_v_disp); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_7));
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_r = ((PyObject *)__pyx_t_7);
  __pyx_t_7 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI.Win.attrs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":188
 *     property memory:
 *         """window memory buffer"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef MPI_Win win = self.ob_mpi
 *             cdef void *base = NULL, *pbase = NULL
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_6memory___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_6memory___get__(PyObject *__pyx_v_self) {
  MPI_Win __pyx_v_win;
  void *__pyx_v_base;
  void *__pyx_v_pbase;
  MPI_Aint __pyx_v_size;
  MPI_Aint *__pyx_v_psize;
  int __pyx_v_attr;
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":189
 *         """window memory buffer"""
 *         def __get__(self):
 *             cdef MPI_Win win = self.ob_mpi             # <<<<<<<<<<<<<<
 *             cdef void *base = NULL, *pbase = NULL
 *             cdef MPI_Aint size = 0, *psize = NULL
 */
  __pyx_v_win = ((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":190
 *         def __get__(self):
 *             cdef MPI_Win win = self.ob_mpi
 *             cdef void *base = NULL, *pbase = NULL             # <<<<<<<<<<<<<<
 *             cdef MPI_Aint size = 0, *psize = NULL
 *             cdef int attr = MPI_KEYVAL_INVALID
 */
  __pyx_v_base = NULL;
  __pyx_v_pbase = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":191
 *             cdef MPI_Win win = self.ob_mpi
 *             cdef void *base = NULL, *pbase = NULL
 *             cdef MPI_Aint size = 0, *psize = NULL             # <<<<<<<<<<<<<<
 *             cdef int attr = MPI_KEYVAL_INVALID
 *             cdef int flag = 0
 */
  __pyx_v_size = 0;
  __pyx_v_psize = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":192
 *             cdef void *base = NULL, *pbase = NULL
 *             cdef MPI_Aint size = 0, *psize = NULL
 *             cdef int attr = MPI_KEYVAL_INVALID             # <<<<<<<<<<<<<<
 *             cdef int flag = 0
 *             #
 */
  __pyx_v_attr = MPI_KEYVAL_INVALID;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":193
 *             cdef MPI_Aint size = 0, *psize = NULL
 *             cdef int attr = MPI_KEYVAL_INVALID
 *             cdef int flag = 0             # <<<<<<<<<<<<<<
 *             #
 *             attr = MPI_WIN_BASE
 */
  __pyx_v_flag = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":195
 *             cdef int flag = 0
 *             #
 *             attr = MPI_WIN_BASE             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Win_get_attr(win, attr, &pbase, &flag) )
 *             if flag and pbase != NULL: base = pbase
 */
  __pyx_v_attr = MPI_WIN_BASE;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":196
 *             #
 *             attr = MPI_WIN_BASE
 *             CHKERR( MPI_Win_get_attr(win, attr, &pbase, &flag) )             # <<<<<<<<<<<<<<
 *             if flag and pbase != NULL: base = pbase
 *             #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_attr(__pyx_v_win, __pyx_v_attr, (&__pyx_v_pbase), (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":197
 *             attr = MPI_WIN_BASE
 *             CHKERR( MPI_Win_get_attr(win, attr, &pbase, &flag) )
 *             if flag and pbase != NULL: base = pbase             # <<<<<<<<<<<<<<
 *             #
 *             attr = MPI_WIN_SIZE
 */
  if (__pyx_v_flag) {
    __pyx_t_2 = (__pyx_v_pbase != NULL);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_v_flag;
  }
  if (__pyx_t_3) {
    __pyx_v_base = __pyx_v_pbase;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":199
 *             if flag and pbase != NULL: base = pbase
 *             #
 *             attr = MPI_WIN_SIZE             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Win_get_attr(win, attr, &psize, &flag) )
 *             if flag and psize != NULL: size = psize[0]
 */
  __pyx_v_attr = MPI_WIN_SIZE;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":200
 *             #
 *             attr = MPI_WIN_SIZE
 *             CHKERR( MPI_Win_get_attr(win, attr, &psize, &flag) )             # <<<<<<<<<<<<<<
 *             if flag and psize != NULL: size = psize[0]
 *             #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_attr(__pyx_v_win, __pyx_v_attr, (&__pyx_v_psize), (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":201
 *             attr = MPI_WIN_SIZE
 *             CHKERR( MPI_Win_get_attr(win, attr, &psize, &flag) )
 *             if flag and psize != NULL: size = psize[0]             # <<<<<<<<<<<<<<
 *             #
 *             return tomemory(base, size)
 */
  if (__pyx_v_flag) {
    __pyx_t_3 = (__pyx_v_psize != NULL);
    __pyx_t_2 = __pyx_t_3;
  } else {
    __pyx_t_2 = __pyx_v_flag;
  }
  if (__pyx_t_2) {
    __pyx_v_size = (__pyx_v_psize[0]);
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":203
 *             if flag and psize != NULL: size = psize[0]
 *             #
 *             return tomemory(base, size)             # <<<<<<<<<<<<<<
 * 
 *     # [6.3] Communication Calls
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_tomemory(__pyx_v_base, __pyx_v_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Win.memory.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":211
 *     # -----------
 * 
 *     def Put(self, origin, int target_rank, target=None):             # <<<<<<<<<<<<<<
 *         """
 *         Put data into a memory window on a remote process.
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_12Put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_12Put[] = "Win.Put(self, origin, int target_rank, target=None)\n\n        Put data into a memory window on a remote process.\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_12Put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_origin = 0;
  int __pyx_v_target_rank;
  PyObject *__pyx_v_target = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__origin,&__pyx_n_s__target_rank,&__pyx_n_s__target,0};
  __Pyx_RefNannySetupContext("Put");
  {
    PyObject* values[3] = {0,0,0};
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__origin);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__target_rank);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Put", 0, 2, 3, 1); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__target);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Put") < 0)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_origin = values[0];
    __pyx_v_target_rank = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_target = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Put", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Put", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":215
 *         Put data into a memory window on a remote process.
 *         """
 *         cdef _p_msg_rma msg = message_rma()             # <<<<<<<<<<<<<<
 *         msg.for_put(origin, target_rank, target)
 *         with nogil: CHKERR( MPI_Put(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_rma()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":216
 *         """
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_put(origin, target_rank, target)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Put(
 *             msg.oaddr, msg.ocount, msg.otype,
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_rma *)__pyx_v_msg->__pyx_vtab)->for_put(__pyx_v_msg, __pyx_v_origin, __pyx_v_target_rank, __pyx_v_target); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":217
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_put(origin, target_rank, target)
 *         with nogil: CHKERR( MPI_Put(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             target_rank,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":221
 *             target_rank,
 *             msg.tdisp, msg.tcount, msg.ttype,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # [6.3.2] Get
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Put(__pyx_v_msg->oaddr, __pyx_v_msg->ocount, __pyx_v_msg->otype, __pyx_v_target_rank, __pyx_v_msg->tdisp, __pyx_v_msg->tcount, __pyx_v_msg->ttype, ((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":217
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_put(origin, target_rank, target)
 *         with nogil: CHKERR( MPI_Put(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             target_rank,
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Put", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":226
 *     # -----------
 * 
 *     def Get(self, origin, int target_rank, target=None):             # <<<<<<<<<<<<<<
 *         """
 *         Get data from a memory window on a remote process.
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_13Get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_13Get[] = "Win.Get(self, origin, int target_rank, target=None)\n\n        Get data from a memory window on a remote process.\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_13Get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_origin = 0;
  int __pyx_v_target_rank;
  PyObject *__pyx_v_target = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__origin,&__pyx_n_s__target_rank,&__pyx_n_s__target,0};
  __Pyx_RefNannySetupContext("Get");
  {
    PyObject* values[3] = {0,0,0};
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__origin);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__target_rank);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Get", 0, 2, 3, 1); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__target);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Get") < 0)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_origin = values[0];
    __pyx_v_target_rank = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_target = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":230
 *         Get data from a memory window on a remote process.
 *         """
 *         cdef _p_msg_rma msg = message_rma()             # <<<<<<<<<<<<<<
 *         msg.for_get(origin, target_rank, target)
 *         with nogil: CHKERR( MPI_Get(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_rma()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":231
 *         """
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_get(origin, target_rank, target)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Get(
 *             msg.oaddr, msg.ocount, msg.otype,
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_rma *)__pyx_v_msg->__pyx_vtab)->for_get(__pyx_v_msg, __pyx_v_origin, __pyx_v_target_rank, __pyx_v_target); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":232
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_get(origin, target_rank, target)
 *         with nogil: CHKERR( MPI_Get(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             target_rank,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":236
 *             target_rank,
 *             msg.tdisp, msg.tcount, msg.ttype,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # [6.3.4] Accumulate Functions
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get(__pyx_v_msg->oaddr, __pyx_v_msg->ocount, __pyx_v_msg->otype, __pyx_v_target_rank, __pyx_v_msg->tdisp, __pyx_v_msg->tcount, __pyx_v_msg->ttype, ((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":232
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_get(origin, target_rank, target)
 *         with nogil: CHKERR( MPI_Get(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             target_rank,
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":241
 *     # ----------------------------
 * 
 *     def Accumulate(self, origin, int target_rank,             # <<<<<<<<<<<<<<
 *                    target=None, Op op not None=SUM):
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_14Accumulate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_14Accumulate[] = "Win.Accumulate(self, origin, int target_rank, target=None, Op op=SUM)\n\n        Accumulate data into the target process\n        using remote memory access.\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_14Accumulate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_origin = 0;
  int __pyx_v_target_rank;
  PyObject *__pyx_v_target = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__origin,&__pyx_n_s__target_rank,&__pyx_n_s__target,&__pyx_n_s__op,0};
  __Pyx_RefNannySetupContext("Accumulate");
  {
    PyObject* values[4] = {0,0,0,0};

    /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":242
 * 
 *     def Accumulate(self, origin, int target_rank,
 *                    target=None, Op op not None=SUM):             # <<<<<<<<<<<<<<
 *         """
 *         Accumulate data into the target process
 */
    values[2] = ((PyObject *)Py_None);
    values[3] = (PyObject *)__pyx_k_102;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__origin);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__target_rank);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Accumulate", 0, 2, 4, 1); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__target);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__op);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Accumulate") < 0)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_origin = values[0];
    __pyx_v_target_rank = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_target = values[2];
    __pyx_v_op = ((struct PyMPIOpObject *)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Accumulate", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Accumulate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":247
 *         using remote memory access.
 *         """
 *         cdef _p_msg_rma msg = message_rma()             # <<<<<<<<<<<<<<
 *         msg.for_acc(origin, target_rank, target)
 *         with nogil: CHKERR( MPI_Accumulate(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_rma()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":248
 *         """
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_acc(origin, target_rank, target)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Accumulate(
 *             msg.oaddr, msg.ocount, msg.otype,
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_rma *)__pyx_v_msg->__pyx_vtab)->for_acc(__pyx_v_msg, __pyx_v_origin, __pyx_v_target_rank, __pyx_v_target); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":249
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_acc(origin, target_rank, target)
 *         with nogil: CHKERR( MPI_Accumulate(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             target_rank,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":253
 *             target_rank,
 *             msg.tdisp, msg.tcount, msg.ttype,
 *             op.ob_mpi, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # [6.4] Synchronization Calls
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Accumulate(__pyx_v_msg->oaddr, __pyx_v_msg->ocount, __pyx_v_msg->otype, __pyx_v_target_rank, __pyx_v_msg->tdisp, __pyx_v_msg->tcount, __pyx_v_msg->ttype, __pyx_v_op->ob_mpi, ((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":249
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_acc(origin, target_rank, target)
 *         with nogil: CHKERR( MPI_Accumulate(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             target_rank,
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Accumulate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":261
 *     # -------------
 * 
 *     def Fence(self, int assertion=0):             # <<<<<<<<<<<<<<
 *         """
 *         Perform an MPI fence synchronization on a window
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_15Fence(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_15Fence[] = "Win.Fence(self, int assertion=0)\n\n        Perform an MPI fence synchronization on a window\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_15Fence(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_assertion;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__assertion,0};
  __Pyx_RefNannySetupContext("Fence");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__assertion);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Fence") < 0)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_assertion = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_assertion = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Fence", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Fence", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":265
 *         Perform an MPI fence synchronization on a window
 *         """
 *         with nogil: CHKERR( MPI_Win_fence(assertion, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # [6.4.2] General Active Target Synchronization
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_fence(__pyx_v_assertion, ((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Fence", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":270
 *     # ---------------------------------------------
 * 
 *     def Start(self, Group group not None, int assertion=0):             # <<<<<<<<<<<<<<
 *         """
 *         Start an RMA access epoch for MPI
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_16Start(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_16Start[] = "Win.Start(self, Group group, int assertion=0)\n\n        Start an RMA access epoch for MPI\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_16Start(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  int __pyx_v_assertion;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__group,&__pyx_n_s__assertion,0};
  __Pyx_RefNannySetupContext("Start");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__group);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__assertion);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Start") < 0)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_group = ((struct PyMPIGroupObject *)values[0]);
    if (values[1]) {
      __pyx_v_assertion = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_assertion = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Start", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Start", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group", 0))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":274
 *         Start an RMA access epoch for MPI
 *         """
 *         with nogil: CHKERR( MPI_Win_start(             # <<<<<<<<<<<<<<
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":275
 *         """
 *         with nogil: CHKERR( MPI_Win_start(
 *             group.ob_mpi, assertion, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Complete(self):
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_start(__pyx_v_group->ob_mpi, __pyx_v_assertion, ((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":274
 *         Start an RMA access epoch for MPI
 *         """
 *         with nogil: CHKERR( MPI_Win_start(             # <<<<<<<<<<<<<<
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Start", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":277
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
 *     def Complete(self):             # <<<<<<<<<<<<<<
 *         """
 *         Completes an RMA operations begun after an `Win.Start()`
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_17Complete(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_17Complete[] = "Win.Complete(self)\n\n        Completes an RMA operations begun after an `Win.Start()`\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_17Complete(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Complete");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Complete", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Complete", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":281
 *         Completes an RMA operations begun after an `Win.Start()`
 *         """
 *         with nogil: CHKERR( MPI_Win_complete(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Post(self, Group group not None, int assertion=0):
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_complete(((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Complete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":283
 *         with nogil: CHKERR( MPI_Win_complete(self.ob_mpi) )
 * 
 *     def Post(self, Group group not None, int assertion=0):             # <<<<<<<<<<<<<<
 *         """
 *         Start an RMA exposure epoch
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_18Post(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_18Post[] = "Win.Post(self, Group group, int assertion=0)\n\n        Start an RMA exposure epoch\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_18Post(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  int __pyx_v_assertion;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__group,&__pyx_n_s__assertion,0};
  __Pyx_RefNannySetupContext("Post");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__group);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__assertion);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Post") < 0)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_group = ((struct PyMPIGroupObject *)values[0]);
    if (values[1]) {
      __pyx_v_assertion = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_assertion = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Post", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Post", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group", 0))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":287
 *         Start an RMA exposure epoch
 *         """
 *         with nogil: CHKERR( MPI_Win_post(             # <<<<<<<<<<<<<<
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":288
 *         """
 *         with nogil: CHKERR( MPI_Win_post(
 *             group.ob_mpi, assertion, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Wait(self):
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_post(__pyx_v_group->ob_mpi, __pyx_v_assertion, ((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":287
 *         Start an RMA exposure epoch
 *         """
 *         with nogil: CHKERR( MPI_Win_post(             # <<<<<<<<<<<<<<
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Post", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":290
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
 *     def Wait(self):             # <<<<<<<<<<<<<<
 *         """
 *         Complete an RMA exposure epoch begun with `Win.Post()`
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_19Wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_19Wait[] = "Win.Wait(self)\n\n        Complete an RMA exposure epoch begun with `Win.Post()`\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_19Wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Wait");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Wait", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Wait", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":294
 *         Complete an RMA exposure epoch begun with `Win.Post()`
 *         """
 *         with nogil: CHKERR( MPI_Win_wait(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Test(self):
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_wait(((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Wait", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":296
 *         with nogil: CHKERR( MPI_Win_wait(self.ob_mpi) )
 * 
 *     def Test(self):             # <<<<<<<<<<<<<<
 *         """
 *         Test whether an RMA exposure epoch has completed
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_20Test(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_20Test[] = "Win.Test(self)\n\n        Test whether an RMA exposure epoch has completed\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_20Test(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Test");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Test", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Test", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":300
 *         Test whether an RMA exposure epoch has completed
 *         """
 *         cdef bint flag = 0             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Win_test(self.ob_mpi, &flag) )
 *         return flag
 */
  __pyx_v_flag = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":301
 *         """
 *         cdef bint flag = 0
 *         with nogil: CHKERR( MPI_Win_test(self.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return flag
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_test(((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi, ((int *)(&__pyx_v_flag)))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":302
 *         cdef bint flag = 0
 *         with nogil: CHKERR( MPI_Win_test(self.ob_mpi, &flag) )
 *         return flag             # <<<<<<<<<<<<<<
 * 
 *     # [6.4.3] Lock
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_flag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Test", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":307
 *     # ------------
 * 
 *     def Lock(self, int lock_type, int rank, int assertion=0):             # <<<<<<<<<<<<<<
 *         """
 *         Begin an RMA access epoch at the target process
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_21Lock(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_21Lock[] = "Win.Lock(self, int lock_type, int rank, int assertion=0)\n\n        Begin an RMA access epoch at the target process\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_21Lock(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_lock_type;
  int __pyx_v_rank;
  int __pyx_v_assertion;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__lock_type,&__pyx_n_s__rank,&__pyx_n_s__assertion,0};
  __Pyx_RefNannySetupContext("Lock");
  {
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lock_type);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__rank);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Lock", 0, 2, 3, 1); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__assertion);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Lock") < 0)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_lock_type = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_lock_type == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_rank = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    if (values[2]) {
      __pyx_v_assertion = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_assertion = ((int)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Lock", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Lock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":311
 *         Begin an RMA access epoch at the target process
 *         """
 *         with nogil: CHKERR( MPI_Win_lock(             # <<<<<<<<<<<<<<
 *             lock_type, rank, assertion, self.ob_mpi) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":312
 *         """
 *         with nogil: CHKERR( MPI_Win_lock(
 *             lock_type, rank, assertion, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Unlock(self, int rank):
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_lock(__pyx_v_lock_type, __pyx_v_rank, __pyx_v_assertion, ((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":311
 *         Begin an RMA access epoch at the target process
 *         """
 *         with nogil: CHKERR( MPI_Win_lock(             # <<<<<<<<<<<<<<
 *             lock_type, rank, assertion, self.ob_mpi) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Lock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":314
 *             lock_type, rank, assertion, self.ob_mpi) )
 * 
 *     def Unlock(self, int rank):             # <<<<<<<<<<<<<<
 *         """
 *         Complete an RMA access epoch at the target process
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_22Unlock(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_22Unlock[] = "Win.Unlock(self, int rank)\n\n        Complete an RMA access epoch at the target process\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_22Unlock(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__rank,0};
  __Pyx_RefNannySetupContext("Unlock");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__rank);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Unlock") < 0)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_rank = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Unlock", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Unlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":318
 *         Complete an RMA access epoch at the target process
 *         """
 *         with nogil: CHKERR( MPI_Win_unlock(rank, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # [6.6] Error Handling
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_unlock(__pyx_v_rank, ((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Unlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":323
 *     # --------------------
 * 
 *     def Get_errhandler(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a window
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_23Get_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_23Get_errhandler[] = "Win.Get_errhandler(self)\n\n        Get the error handler for a window\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_23Get_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_errhandler");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_errhandler", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_errhandler", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":327
 *         Get the error handler for a window
 *         """
 *         cdef Errhandler errhandler = <Errhandler>Errhandler.__new__(Errhandler)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Win_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )
 *         return errhandler
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Errhandler)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIErrhandlerObject *)__pyx_t_1)));
  __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":328
 *         """
 *         cdef Errhandler errhandler = <Errhandler>Errhandler.__new__(Errhandler)
 *         CHKERR( MPI_Win_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return errhandler
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_errhandler(((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_errhandler->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":329
 *         cdef Errhandler errhandler = <Errhandler>Errhandler.__new__(Errhandler)
 *         CHKERR( MPI_Win_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )
 *         return errhandler             # <<<<<<<<<<<<<<
 * 
 *     def Set_errhandler(self, Errhandler errhandler not None):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_errhandler));
  __pyx_r = ((PyObject *)__pyx_v_errhandler);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Get_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_errhandler);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":331
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler not None):             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a window
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_24Set_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_24Set_errhandler[] = "Win.Set_errhandler(self, Errhandler errhandler)\n\n        Set the error handler for a window\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_24Set_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__errhandler,0};
  __Pyx_RefNannySetupContext("Set_errhandler");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__errhandler);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Set_errhandler") < 0)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_errhandler", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Set_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_errhandler), __pyx_ptype_6mpi4py_3MPI_Errhandler, 0, "errhandler", 0))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":335
 *         Set the error handler for a window
 *         """
 *         CHKERR( MPI_Win_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Call_errhandler(self, int errorcode):
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_set_errhandler(((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi, __pyx_v_errhandler->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Set_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":337
 *         CHKERR( MPI_Win_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )
 * 
 *     def Call_errhandler(self, int errorcode):             # <<<<<<<<<<<<<<
 *         """
 *         Call the error handler installed on a window
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_25Call_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_25Call_errhandler[] = "Win.Call_errhandler(self, int errorcode)\n\n        Call the error handler installed on a window\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_25Call_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_errorcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__errorcode,0};
  __Pyx_RefNannySetupContext("Call_errhandler");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__errorcode);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Call_errhandler") < 0)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_errorcode = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Call_errhandler", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Call_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":341
 *         Call the error handler installed on a window
 *         """
 *         CHKERR( MPI_Win_call_errhandler(self.ob_mpi, errorcode) )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_call_errhandler(((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi, __pyx_v_errorcode)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Call_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":347
 *     # --------------------
 * 
 *     def Get_name(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get the print name associated with the window
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_26Get_name(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_26Get_name[] = "Win.Get_name(self)\n\n        Get the print name associated with the window\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_26Get_name(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  char __pyx_v_name[(MPI_MAX_OBJECT_NAME + 1)];
  int __pyx_v_nlen;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_name");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_name", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_name", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":352
 *         """
 *         cdef char name[MPI_MAX_OBJECT_NAME+1]
 *         cdef int nlen = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Win_get_name(self.ob_mpi, name, &nlen) )
 *         return tompistr(name, nlen)
 */
  __pyx_v_nlen = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":353
 *         cdef char name[MPI_MAX_OBJECT_NAME+1]
 *         cdef int nlen = 0
 *         CHKERR( MPI_Win_get_name(self.ob_mpi, name, &nlen) )             # <<<<<<<<<<<<<<
 *         return tompistr(name, nlen)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_name(((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi, __pyx_v_name, (&__pyx_v_nlen))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":354
 *         cdef int nlen = 0
 *         CHKERR( MPI_Win_get_name(self.ob_mpi, name, &nlen) )
 *         return tompistr(name, nlen)             # <<<<<<<<<<<<<<
 * 
 *     def Set_name(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_tompistr(__pyx_v_name, __pyx_v_nlen); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Get_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":356
 *         return tompistr(name, nlen)
 * 
 *     def Set_name(self, name):             # <<<<<<<<<<<<<<
 *         """
 *         Set the print name associated with the window
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_27Set_name(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_27Set_name[] = "Win.Set_name(self, name)\n\n        Set the print name associated with the window\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_27Set_name(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  char *__pyx_v_cname;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__name,0};
  __Pyx_RefNannySetupContext("Set_name");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Set_name") < 0)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_name = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_name", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Set_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_name);

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":360
 *         Set the print name associated with the window
 *         """
 *         cdef char *cname = NULL             # <<<<<<<<<<<<<<
 *         name = asmpistr(name, &cname, NULL)
 *         CHKERR( MPI_Win_set_name(self.ob_mpi, cname) )
 */
  __pyx_v_cname = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":361
 *         """
 *         cdef char *cname = NULL
 *         name = asmpistr(name, &cname, NULL)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Win_set_name(self.ob_mpi, cname) )
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_name, (&__pyx_v_cname), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_name);
  __pyx_v_name = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":362
 *         cdef char *cname = NULL
 *         name = asmpistr(name, &cname, NULL)
 *         CHKERR( MPI_Win_set_name(self.ob_mpi, cname) )             # <<<<<<<<<<<<<<
 * 
 *     property name:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_set_name(((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi, __pyx_v_cname)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Set_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":366
 *     property name:
 *         """window name"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_name()
 *         def __set__(self, value):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_4name___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_4name___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":367
 *         """window name"""
 *         def __get__(self):
 *             return self.Get_name()             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self.Set_name(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Win.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":368
 *         def __get__(self):
 *             return self.Get_name()
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self.Set_name(value)
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_3Win_4name_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_3Win_4name_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__");

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":369
 *             return self.Get_name()
 *         def __set__(self, value):
 *             self.Set_name(value)             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Set_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_value);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Win.name.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":374
 *     # --------------
 * 
 *     def py2f(self):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_28py2f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_28py2f[] = "Win.py2f(self)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_28py2f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("py2f");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("py2f", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "py2f", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":377
 *         """
 *         """
 *         return MPI_Win_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_to_py_MPI_Fint(MPI_Win_c2f(((struct PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.py2f", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":380
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_29f2py(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_29f2py[] = "Win.f2py(type cls, arg)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_29f2py(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_arg = 0;
  struct PyMPIWinObject *__pyx_v_win = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Fint __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__arg,0};
  __Pyx_RefNannySetupContext("f2py");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__arg);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "f2py") < 0)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":383
 *         """
 *         """
 *         cdef Win win = <Win>cls()             # <<<<<<<<<<<<<<
 *         win.ob_mpi = MPI_Win_f2c(arg)
 *         return win
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIWinObject *)__pyx_t_1)));
  __pyx_v_win = ((struct PyMPIWinObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":384
 *         """
 *         cdef Win win = <Win>cls()
 *         win.ob_mpi = MPI_Win_f2c(arg)             # <<<<<<<<<<<<<<
 *         return win
 * 
 */
  __pyx_t_2 = __Pyx_PyInt_from_py_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_2 == (MPI_Fint)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_win->ob_mpi = MPI_Win_f2c(__pyx_t_2);

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":385
 *         cdef Win win = <Win>cls()
 *         win.ob_mpi = MPI_Win_f2c(arg)
 *         return win             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_win));
  __pyx_r = ((PyObject *)__pyx_v_win);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_win);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":31
 *     """
 * 
 *     def __cinit__(self, File file=None):             # <<<<<<<<<<<<<<
 *         self.ob_mpi = MPI_FILE_NULL
 *         if file is not None:
 */

static int __pyx_pf_6mpi4py_3MPI_4File___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_4File___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIFileObject *__pyx_v_file = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__file,0};
  __Pyx_RefNannySetupContext("__cinit__");
  {
    PyObject* values[1] = {0};
    values[0] = (PyObject *)((struct PyMPIFileObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__file);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_file = ((struct PyMPIFileObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_file), __pyx_ptype_6mpi4py_3MPI_File, 1, "file", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":32
 * 
 *     def __cinit__(self, File file=None):
 *         self.ob_mpi = MPI_FILE_NULL             # <<<<<<<<<<<<<<
 *         if file is not None:
 *             self.ob_mpi = file.ob_mpi
 */
  ((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi = MPI_FILE_NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":33
 *     def __cinit__(self, File file=None):
 *         self.ob_mpi = MPI_FILE_NULL
 *         if file is not None:             # <<<<<<<<<<<<<<
 *             self.ob_mpi = file.ob_mpi
 * 
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_file) != Py_None);
  if (__pyx_t_1) {

    /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":34
 *         self.ob_mpi = MPI_FILE_NULL
 *         if file is not None:
 *             self.ob_mpi = file.ob_mpi             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
    ((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi = __pyx_v_file->ob_mpi;
    goto __pyx_L6;
  }
  __pyx_L6:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":36
 *             self.ob_mpi = file.ob_mpi
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( del_File(&self.ob_mpi) )
 */

static void __pyx_pf_6mpi4py_3MPI_4File_1__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_6mpi4py_3MPI_4File_1__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__");

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":37
 * 
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return             # <<<<<<<<<<<<<<
 *         CHKERR( del_File(&self.ob_mpi) )
 * 
 */
  __pyx_t_1 = (!(((struct PyMPIFileObject *)__pyx_v_self)->flags & __pyx_e_6mpi4py_3MPI_PyMPI_OWNED));
  if (__pyx_t_1) {
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":38
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( del_File(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_f_6mpi4py_3MPI_del_File((&((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":40
 *         CHKERR( del_File(&self.ob_mpi) )
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(self,  File): return NotImplemented
 *         if not isinstance(other, File): return NotImplemented
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  struct PyMPIFileObject *__pyx_v_s = 0;
  struct PyMPIFileObject *__pyx_v_o = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__");

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":41
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  File): return NotImplemented             # <<<<<<<<<<<<<<
 *         if not isinstance(other, File): return NotImplemented
 *         cdef File s = <File>self, o = <File>other
 */
  __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_File));
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_self, __pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":42
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  File): return NotImplemented
 *         if not isinstance(other, File): return NotImplemented             # <<<<<<<<<<<<<<
 *         cdef File s = <File>self, o = <File>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 */
  __pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_File));
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_other, __pyx_t_1); 
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = (!__pyx_t_3);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":43
 *         if not isinstance(self,  File): return NotImplemented
 *         if not isinstance(other, File): return NotImplemented
 *         cdef File s = <File>self, o = <File>other             # <<<<<<<<<<<<<<
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 */
  __Pyx_INCREF(((PyObject *)((struct PyMPIFileObject *)__pyx_v_self)));
  __pyx_v_s = ((struct PyMPIFileObject *)__pyx_v_self);
  __Pyx_INCREF(((PyObject *)((struct PyMPIFileObject *)__pyx_v_other)));
  __pyx_v_o = ((struct PyMPIFileObject *)__pyx_v_other);

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":45
 *         cdef File s = <File>self, o = <File>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError("only '==' and '!='")
 * 
 */
  switch (__pyx_v_op) {

    /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":44
 *         if not isinstance(other, File): return NotImplemented
 *         cdef File s = <File>self, o = <File>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)             # <<<<<<<<<<<<<<
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")
 */
    case Py_EQ:
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi == __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    break;

    /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":45
 *         cdef File s = <File>self, o = <File>other
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError("only '==' and '!='")
 * 
 */
    case Py_NE:
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi != __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    break;
    default:

    /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":46
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
    __pyx_t_1 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_103), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[26]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    break;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_s);
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":48
 *         else: raise TypeError("only '==' and '!='")
 * 
 *     def __bool__(self):             # <<<<<<<<<<<<<<
 *         return self.ob_mpi != MPI_FILE_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_4File_3__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_4File_3__bool__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__");

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":49
 * 
 *     def __bool__(self):
 *         return self.ob_mpi != MPI_FILE_NULL             # <<<<<<<<<<<<<<
 * 
 *     # [9.2] File Manipulation
 */
  __pyx_r = (((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi != MPI_FILE_NULL);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":58
 * 
 *     @classmethod
 *     def Open(cls, Intracomm comm not None, filename,             # <<<<<<<<<<<<<<
 *              int amode=MODE_RDONLY, Info info=INFO_NULL):
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_4Open(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_4Open[] = "File.Open(type cls, Intracomm comm, filename, int amode=MODE_RDONLY, Info info=INFO_NULL)\n\n        Open a file\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_4Open(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIIntracommObject *__pyx_v_comm = 0;
  PyObject *__pyx_v_filename = 0;
  int __pyx_v_amode;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  char *__pyx_v_cfilename;
  MPI_Info __pyx_v_cinfo;
  struct PyMPIFileObject *__pyx_v_file = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__comm,&__pyx_n_s__filename,&__pyx_n_s__amode,&__pyx_n_s__info,0};
  __Pyx_RefNannySetupContext("Open");
  {
    PyObject* values[4] = {0,0,0,0};
    values[3] = (PyObject *)__pyx_k_104;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__comm);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__filename);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Open", 0, 2, 4, 1); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__amode);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__info);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Open") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_comm = ((struct PyMPIIntracommObject *)values[0]);
    __pyx_v_filename = values[1];
    if (values[2]) {
      __pyx_v_amode = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_amode == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_amode = __pyx_k_105;
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Open", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Open", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_filename);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Intracomm, 0, "comm", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 1, "info", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":63
 *         Open a file
 *         """
 *         cdef char *cfilename = NULL             # <<<<<<<<<<<<<<
 *         filename = asmpistr(filename, &cfilename, NULL)
 *         cdef MPI_Info cinfo = arg_Info(info)
 */
  __pyx_v_cfilename = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":64
 *         """
 *         cdef char *cfilename = NULL
 *         filename = asmpistr(filename, &cfilename, NULL)             # <<<<<<<<<<<<<<
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         cdef File file = <File>cls()
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_filename, (&__pyx_v_cfilename), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_filename);
  __pyx_v_filename = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":65
 *         cdef char *cfilename = NULL
 *         filename = asmpistr(filename, &cfilename, NULL)
 *         cdef MPI_Info cinfo = arg_Info(info)             # <<<<<<<<<<<<<<
 *         cdef File file = <File>cls()
 *         with nogil: CHKERR( MPI_File_open(
 */
  __pyx_v_cinfo = __pyx_f_6mpi4py_3MPI_arg_Info(((PyObject *)__pyx_v_info));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":66
 *         filename = asmpistr(filename, &cfilename, NULL)
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         cdef File file = <File>cls()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_open(
 *             comm.ob_mpi, cfilename, amode, cinfo, &file.ob_mpi) )
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIFileObject *)__pyx_t_1)));
  __pyx_v_file = ((struct PyMPIFileObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":67
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         cdef File file = <File>cls()
 *         with nogil: CHKERR( MPI_File_open(             # <<<<<<<<<<<<<<
 *             comm.ob_mpi, cfilename, amode, cinfo, &file.ob_mpi) )
 *         return file
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":68
 *         cdef File file = <File>cls()
 *         with nogil: CHKERR( MPI_File_open(
 *             comm.ob_mpi, cfilename, amode, cinfo, &file.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return file
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_open(__pyx_v_comm->__pyx_base.ob_mpi, __pyx_v_cfilename, __pyx_v_amode, __pyx_v_cinfo, (&__pyx_v_file->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":67
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         cdef File file = <File>cls()
 *         with nogil: CHKERR( MPI_File_open(             # <<<<<<<<<<<<<<
 *             comm.ob_mpi, cfilename, amode, cinfo, &file.ob_mpi) )
 *         return file
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":69
 *         with nogil: CHKERR( MPI_File_open(
 *             comm.ob_mpi, cfilename, amode, cinfo, &file.ob_mpi) )
 *         return file             # <<<<<<<<<<<<<<
 * 
 *     # [9.2.2] Closing a File
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_file));
  __pyx_r = ((PyObject *)__pyx_v_file);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Open", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_file);
  __Pyx_XDECREF(__pyx_v_filename);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":74
 *     # ----------------------
 * 
 *     def Close(self):             # <<<<<<<<<<<<<<
 *         """
 *         Close a file
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_5Close(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_5Close[] = "File.Close(self)\n\n        Close a file\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_5Close(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Close");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Close", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Close", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":78
 *         Close a file
 *         """
 *         with nogil: CHKERR( MPI_File_close(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # [9.2.3] Deleting a File
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_close((&((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":84
 * 
 *     @classmethod
 *     def Delete(cls, filename, Info info=INFO_NULL):             # <<<<<<<<<<<<<<
 *         """
 *         Delete a file
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_6Delete(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_6Delete[] = "File.Delete(type cls, filename, Info info=INFO_NULL)\n\n        Delete a file\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_6Delete(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_filename = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  char *__pyx_v_cfilename;
  MPI_Info __pyx_v_cinfo;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__filename,&__pyx_n_s__info,0};
  __Pyx_RefNannySetupContext("Delete");
  {
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)__pyx_k_106;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__filename);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__info);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Delete") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_filename = values[0];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Delete", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_filename);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 1, "info", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":88
 *         Delete a file
 *         """
 *         cdef char *cfilename = NULL             # <<<<<<<<<<<<<<
 *         filename = asmpistr(filename, &cfilename, NULL)
 *         cdef MPI_Info cinfo = arg_Info(info)
 */
  __pyx_v_cfilename = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":89
 *         """
 *         cdef char *cfilename = NULL
 *         filename = asmpistr(filename, &cfilename, NULL)             # <<<<<<<<<<<<<<
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         with nogil: CHKERR( MPI_File_delete(cfilename, cinfo) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_filename, (&__pyx_v_cfilename), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_filename);
  __pyx_v_filename = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":90
 *         cdef char *cfilename = NULL
 *         filename = asmpistr(filename, &cfilename, NULL)
 *         cdef MPI_Info cinfo = arg_Info(info)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_delete(cfilename, cinfo) )
 * 
 */
  __pyx_v_cinfo = __pyx_f_6mpi4py_3MPI_arg_Info(((PyObject *)__pyx_v_info));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":91
 *         filename = asmpistr(filename, &cfilename, NULL)
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         with nogil: CHKERR( MPI_File_delete(cfilename, cinfo) )             # <<<<<<<<<<<<<<
 * 
 *     # [9.2.4] Resizing a File
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_delete(__pyx_v_cfilename, __pyx_v_cinfo)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_filename);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":96
 *     # -----------------------
 * 
 *     def Set_size(self, Offset size):             # <<<<<<<<<<<<<<
 *         """
 *         Sets the file size
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_7Set_size(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_7Set_size[] = "File.Set_size(self, Offset size)\n\n        Sets the file size\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_7Set_size(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Offset __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__size,0};
  __Pyx_RefNannySetupContext("Set_size");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__size);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Set_size") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_size = __Pyx_PyInt_from_py_MPI_Offset(values[0]); if (unlikely((__pyx_v_size == (MPI_Offset)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_size", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":100
 *         Sets the file size
 *         """
 *         with nogil: CHKERR( MPI_File_set_size(self.ob_mpi, size) )             # <<<<<<<<<<<<<<
 * 
 *     # [9.2.5] Preallocating Space for a File
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_set_size(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_size)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":105
 *     # --------------------------------------
 * 
 *     def Preallocate(self, Offset size):             # <<<<<<<<<<<<<<
 *         """
 *         Preallocate storage space for a file
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_8Preallocate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_8Preallocate[] = "File.Preallocate(self, Offset size)\n\n        Preallocate storage space for a file\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_8Preallocate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Offset __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__size,0};
  __Pyx_RefNannySetupContext("Preallocate");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__size);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Preallocate") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_size = __Pyx_PyInt_from_py_MPI_Offset(values[0]); if (unlikely((__pyx_v_size == (MPI_Offset)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Preallocate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Preallocate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":109
 *         Preallocate storage space for a file
 *         """
 *         with nogil: CHKERR( MPI_File_preallocate(self.ob_mpi, size) )             # <<<<<<<<<<<<<<
 * 
 *     # [9.2.6] Querying the Size of a File
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_preallocate(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_size)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Preallocate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":113
 *     # [9.2.6] Querying the Size of a File
 *     # -----------------------------------
 *     def Get_size(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the file size
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_9Get_size(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_9Get_size[] = "File.Get_size(self)\n\n        Return the file size\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_9Get_size(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Offset __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_size");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_size", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_size", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":117
 *         Return the file size
 *         """
 *         cdef MPI_Offset size = 0             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_size(self.ob_mpi, &size) )
 *         return size
 */
  __pyx_v_size = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":118
 *         """
 *         cdef MPI_Offset size = 0
 *         with nogil: CHKERR( MPI_File_get_size(self.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *         return size
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_size(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":119
 *         cdef MPI_Offset size = 0
 *         with nogil: CHKERR( MPI_File_get_size(self.ob_mpi, &size) )
 *         return size             # <<<<<<<<<<<<<<
 * 
 *     property size:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_to_py_MPI_Offset(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":123
 *     property size:
 *         """file size"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_size()
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_4size___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_4size___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":124
 *         """file size"""
 *         def __get__(self):
 *             return self.Get_size()             # <<<<<<<<<<<<<<
 * 
 *     # [9.2.7] Querying File Parameters
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":129
 *     # --------------------------------
 * 
 *     def Get_group(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the group of processes
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_10Get_group(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_10Get_group[] = "File.Get_group(self)\n\n        Return the group of processes\n        that opened the file\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_10Get_group(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_group");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_group", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_group", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":134
 *         that opened the file
 *         """
 *         cdef Group group = <Group>Group.__new__(Group)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_group(self.ob_mpi, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Group)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIGroupObject *)__pyx_t_1)));
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":135
 *         """
 *         cdef Group group = <Group>Group.__new__(Group)
 *         with nogil: CHKERR( MPI_File_get_group(self.ob_mpi, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_group(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":136
 *         cdef Group group = <Group>Group.__new__(Group)
 *         with nogil: CHKERR( MPI_File_get_group(self.ob_mpi, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     property group:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_group));
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":140
 *     property group:
 *         """file group"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_group()
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_5group___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_5group___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":141
 *         """file group"""
 *         def __get__(self):
 *             return self.Get_group()             # <<<<<<<<<<<<<<
 * 
 *     def Get_amode(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_group); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.group.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":143
 *             return self.Get_group()
 * 
 *     def Get_amode(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the file access mode
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_11Get_amode(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_11Get_amode[] = "File.Get_amode(self)\n\n        Return the file access mode\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_11Get_amode(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_amode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_amode");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_amode", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_amode", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":147
 *         Return the file access mode
 *         """
 *         cdef int amode = 0             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_amode(self.ob_mpi, &amode) )
 *         return amode
 */
  __pyx_v_amode = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":148
 *         """
 *         cdef int amode = 0
 *         with nogil: CHKERR( MPI_File_get_amode(self.ob_mpi, &amode) )             # <<<<<<<<<<<<<<
 *         return amode
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_amode(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_amode))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":149
 *         cdef int amode = 0
 *         with nogil: CHKERR( MPI_File_get_amode(self.ob_mpi, &amode) )
 *         return amode             # <<<<<<<<<<<<<<
 * 
 *     property amode:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_amode); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_amode", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":153
 *     property amode:
 *         """file access mode"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_amode()
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_5amode___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_5amode___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":154
 *         """file access mode"""
 *         def __get__(self):
 *             return self.Get_amode()             # <<<<<<<<<<<<<<
 * 
 *     # [9.2.8] File Info
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_amode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.amode.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":159
 *     # -----------------
 * 
 *     def Set_info(self, Info info not None):             # <<<<<<<<<<<<<<
 *         """
 *         Set new values for the hints
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_12Set_info(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_12Set_info[] = "File.Set_info(self, Info info)\n\n        Set new values for the hints\n        associated with a file\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_12Set_info(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__info,0};
  __Pyx_RefNannySetupContext("Set_info");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__info);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Set_info") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_info", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":164
 *         associated with a file
 *         """
 *         with nogil: CHKERR( MPI_File_set_info(self.ob_mpi, info.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_info(self):
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_set_info(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_info->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":166
 *         with nogil: CHKERR( MPI_File_set_info(self.ob_mpi, info.ob_mpi) )
 * 
 *     def Get_info(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the hints for a file that
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_13Get_info(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_13Get_info[] = "File.Get_info(self)\n\n        Return the hints for a file that\n        are actually being used by MPI\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_13Get_info(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_info");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_info", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_info", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":171
 *         are actually being used by MPI
 *         """
 *         cdef Info info = <Info>Info.__new__(Info)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_info(self.ob_mpi, &info.ob_mpi) )
 *         return info
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Info)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIInfoObject *)__pyx_t_1)));
  __pyx_v_info = ((struct PyMPIInfoObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":172
 *         """
 *         cdef Info info = <Info>Info.__new__(Info)
 *         with nogil: CHKERR( MPI_File_get_info(self.ob_mpi, &info.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return info
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_info(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_info->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":173
 *         cdef Info info = <Info>Info.__new__(Info)
 *         with nogil: CHKERR( MPI_File_get_info(self.ob_mpi, &info.ob_mpi) )
 *         return info             # <<<<<<<<<<<<<<
 * 
 *     property info:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_info));
  __pyx_r = ((PyObject *)__pyx_v_info);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_info);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":177
 *     property info:
 *         """file info"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_info()
 *         def __set__(self, info):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_4info___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_4info___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":178
 *         """file info"""
 *         def __get__(self):
 *             return self.Get_info()             # <<<<<<<<<<<<<<
 *         def __set__(self, info):
 *             self.Set_info(info)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_info); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.info.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":179
 *         def __get__(self):
 *             return self.Get_info()
 *         def __set__(self, info):             # <<<<<<<<<<<<<<
 *             self.Set_info(info)
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_4File_4info_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_info); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_4File_4info_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_info) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__");

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":180
 *             return self.Get_info()
 *         def __set__(self, info):
 *             self.Set_info(info)             # <<<<<<<<<<<<<<
 * 
 *     # [9.3] File Views
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Set_info); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_info);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_info);
  __Pyx_GIVEREF(__pyx_v_info);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.File.info.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":185
 *     # ----------------
 * 
 *     def Set_view(self, Offset disp=0,             # <<<<<<<<<<<<<<
 *                  Datatype etype=None, Datatype filetype=None,
 *                  object datarep=None, Info info=INFO_NULL):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_14Set_view(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_14Set_view[] = "File.Set_view(self, Offset disp=0, Datatype etype=None, Datatype filetype=None, datarep=None, Info info=INFO_NULL)\n\n        Set the file view\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_14Set_view(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Offset __pyx_v_disp;
  struct PyMPIDatatypeObject *__pyx_v_etype = 0;
  struct PyMPIDatatypeObject *__pyx_v_filetype = 0;
  PyObject *__pyx_v_datarep = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  char *__pyx_v_cdatarep;
  MPI_Datatype __pyx_v_cetype;
  MPI_Datatype __pyx_v_cftype;
  MPI_Info __pyx_v_cinfo;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__disp,&__pyx_n_s__etype,&__pyx_n_s__filetype,&__pyx_n_s__datarep,&__pyx_n_s__info,0};
  __Pyx_RefNannySetupContext("Set_view");
  {
    PyObject* values[5] = {0,0,0,0,0};

    /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":186
 * 
 *     def Set_view(self, Offset disp=0,
 *                  Datatype etype=None, Datatype filetype=None,             # <<<<<<<<<<<<<<
 *                  object datarep=None, Info info=INFO_NULL):
 *         """
 */
    values[1] = (PyObject *)((struct PyMPIDatatypeObject *)Py_None);
    values[2] = (PyObject *)((struct PyMPIDatatypeObject *)Py_None);

    /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":187
 *     def Set_view(self, Offset disp=0,
 *                  Datatype etype=None, Datatype filetype=None,
 *                  object datarep=None, Info info=INFO_NULL):             # <<<<<<<<<<<<<<
 *         """
 *         Set the file view
 */
    values[3] = ((PyObject *)Py_None);
    values[4] = (PyObject *)__pyx_k_107;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__disp);
          if (value) { values[0] = value; kw_args--; }
        }
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__etype);
          if (value) { values[1] = value; kw_args--; }
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__filetype);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__datarep);
          if (value) { values[3] = value; kw_args--; }
        }
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__info);
          if (value) { values[4] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Set_view") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_disp = __Pyx_PyInt_from_py_MPI_Offset(values[0]); if (unlikely((__pyx_v_disp == (MPI_Offset)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_disp = ((MPI_Offset)0);
    }
    __pyx_v_etype = ((struct PyMPIDatatypeObject *)values[1]);
    __pyx_v_filetype = ((struct PyMPIDatatypeObject *)values[2]);
    __pyx_v_datarep = values[3];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[4]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_view", 0, 0, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_view", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_datarep);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_etype), __pyx_ptype_6mpi4py_3MPI_Datatype, 1, "etype", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_filetype), __pyx_ptype_6mpi4py_3MPI_Datatype, 1, "filetype", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 1, "info", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":191
 *         Set the file view
 *         """
 *         cdef char *cdatarep = b"native"             # <<<<<<<<<<<<<<
 *         if datarep is not None: datarep = asmpistr(datarep, &cdatarep, NULL)
 *         cdef MPI_Datatype cetype = MPI_BYTE
 */
  __pyx_v_cdatarep = __pyx_k__native;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":192
 *         """
 *         cdef char *cdatarep = b"native"
 *         if datarep is not None: datarep = asmpistr(datarep, &cdatarep, NULL)             # <<<<<<<<<<<<<<
 *         cdef MPI_Datatype cetype = MPI_BYTE
 *         if etype is not None: cetype = etype.ob_mpi
 */
  __pyx_t_1 = (__pyx_v_datarep != Py_None);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_datarep, (&__pyx_v_cdatarep), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_datarep);
    __pyx_v_datarep = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":193
 *         cdef char *cdatarep = b"native"
 *         if datarep is not None: datarep = asmpistr(datarep, &cdatarep, NULL)
 *         cdef MPI_Datatype cetype = MPI_BYTE             # <<<<<<<<<<<<<<
 *         if etype is not None: cetype = etype.ob_mpi
 *         cdef MPI_Datatype cftype = cetype
 */
  __pyx_v_cetype = MPI_BYTE;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":194
 *         if datarep is not None: datarep = asmpistr(datarep, &cdatarep, NULL)
 *         cdef MPI_Datatype cetype = MPI_BYTE
 *         if etype is not None: cetype = etype.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef MPI_Datatype cftype = cetype
 *         if filetype is not None: cftype = filetype.ob_mpi
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_etype) != Py_None);
  if (__pyx_t_1) {
    __pyx_v_cetype = __pyx_v_etype->ob_mpi;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":195
 *         cdef MPI_Datatype cetype = MPI_BYTE
 *         if etype is not None: cetype = etype.ob_mpi
 *         cdef MPI_Datatype cftype = cetype             # <<<<<<<<<<<<<<
 *         if filetype is not None: cftype = filetype.ob_mpi
 *         cdef MPI_Info cinfo = arg_Info(info)
 */
  __pyx_v_cftype = __pyx_v_cetype;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":196
 *         if etype is not None: cetype = etype.ob_mpi
 *         cdef MPI_Datatype cftype = cetype
 *         if filetype is not None: cftype = filetype.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         with nogil: CHKERR( MPI_File_set_view(
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_filetype) != Py_None);
  if (__pyx_t_1) {
    __pyx_v_cftype = __pyx_v_filetype->ob_mpi;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":197
 *         cdef MPI_Datatype cftype = cetype
 *         if filetype is not None: cftype = filetype.ob_mpi
 *         cdef MPI_Info cinfo = arg_Info(info)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_set_view(
 *             self.ob_mpi, disp, cetype, cftype, cdatarep, cinfo) )
 */
  __pyx_v_cinfo = __pyx_f_6mpi4py_3MPI_arg_Info(((PyObject *)__pyx_v_info));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":198
 *         if filetype is not None: cftype = filetype.ob_mpi
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         with nogil: CHKERR( MPI_File_set_view(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, disp, cetype, cftype, cdatarep, cinfo) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":199
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         with nogil: CHKERR( MPI_File_set_view(
 *             self.ob_mpi, disp, cetype, cftype, cdatarep, cinfo) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_view(self):
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_set_view(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_disp, __pyx_v_cetype, __pyx_v_cftype, __pyx_v_cdatarep, __pyx_v_cinfo)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L10;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":198
 *         if filetype is not None: cftype = filetype.ob_mpi
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         with nogil: CHKERR( MPI_File_set_view(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, disp, cetype, cftype, cdatarep, cinfo) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L11;
        __pyx_L10: __pyx_why = 4; goto __pyx_L11;
        __pyx_L11:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_view", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_datarep);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":201
 *             self.ob_mpi, disp, cetype, cftype, cdatarep, cinfo) )
 * 
 *     def Get_view(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the file view
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_15Get_view(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_15Get_view[] = "File.Get_view(self)\n\n        Return the file view\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_15Get_view(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Offset __pyx_v_disp;
  struct PyMPIDatatypeObject *__pyx_v_etype = 0;
  struct PyMPIDatatypeObject *__pyx_v_ftype = 0;
  char __pyx_v_cdatarep[(MPI_MAX_DATAREP_STRING + 1)];
  PyObject *__pyx_v_datarep = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_view");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_view", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_view", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":205
 *         Return the file view
 *         """
 *         cdef MPI_Offset disp = 0             # <<<<<<<<<<<<<<
 *         cdef Datatype etype = <Datatype>Datatype.__new__(Datatype)
 *         cdef Datatype ftype = <Datatype>Datatype.__new__(Datatype)
 */
  __pyx_v_disp = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":206
 *         """
 *         cdef MPI_Offset disp = 0
 *         cdef Datatype etype = <Datatype>Datatype.__new__(Datatype)             # <<<<<<<<<<<<<<
 *         cdef Datatype ftype = <Datatype>Datatype.__new__(Datatype)
 *         cdef char cdatarep[MPI_MAX_DATAREP_STRING+1]
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_1)));
  __pyx_v_etype = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":207
 *         cdef MPI_Offset disp = 0
 *         cdef Datatype etype = <Datatype>Datatype.__new__(Datatype)
 *         cdef Datatype ftype = <Datatype>Datatype.__new__(Datatype)             # <<<<<<<<<<<<<<
 *         cdef char cdatarep[MPI_MAX_DATAREP_STRING+1]
 *         with nogil: CHKERR( MPI_File_get_view(
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_1)));
  __pyx_v_ftype = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":209
 *         cdef Datatype ftype = <Datatype>Datatype.__new__(Datatype)
 *         cdef char cdatarep[MPI_MAX_DATAREP_STRING+1]
 *         with nogil: CHKERR( MPI_File_get_view(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &disp, &etype.ob_mpi, &ftype.ob_mpi, cdatarep) )
 *         fix_fileview_Datatype(etype); fix_fileview_Datatype(ftype)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":210
 *         cdef char cdatarep[MPI_MAX_DATAREP_STRING+1]
 *         with nogil: CHKERR( MPI_File_get_view(
 *             self.ob_mpi, &disp, &etype.ob_mpi, &ftype.ob_mpi, cdatarep) )             # <<<<<<<<<<<<<<
 *         fix_fileview_Datatype(etype); fix_fileview_Datatype(ftype)
 *         cdatarep[MPI_MAX_DATAREP_STRING] = 0 # just in case
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_view(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_disp), (&__pyx_v_etype->ob_mpi), (&__pyx_v_ftype->ob_mpi), __pyx_v_cdatarep)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":209
 *         cdef Datatype ftype = <Datatype>Datatype.__new__(Datatype)
 *         cdef char cdatarep[MPI_MAX_DATAREP_STRING+1]
 *         with nogil: CHKERR( MPI_File_get_view(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &disp, &etype.ob_mpi, &ftype.ob_mpi, cdatarep) )
 *         fix_fileview_Datatype(etype); fix_fileview_Datatype(ftype)
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":211
 *         with nogil: CHKERR( MPI_File_get_view(
 *             self.ob_mpi, &disp, &etype.ob_mpi, &ftype.ob_mpi, cdatarep) )
 *         fix_fileview_Datatype(etype); fix_fileview_Datatype(ftype)             # <<<<<<<<<<<<<<
 *         cdatarep[MPI_MAX_DATAREP_STRING] = 0 # just in case
 *         cdef object datarep = mpistr(cdatarep)
 */
  __pyx_f_6mpi4py_3MPI_fix_fileview_Datatype(__pyx_v_etype);
  __pyx_f_6mpi4py_3MPI_fix_fileview_Datatype(__pyx_v_ftype);

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":212
 *             self.ob_mpi, &disp, &etype.ob_mpi, &ftype.ob_mpi, cdatarep) )
 *         fix_fileview_Datatype(etype); fix_fileview_Datatype(ftype)
 *         cdatarep[MPI_MAX_DATAREP_STRING] = 0 # just in case             # <<<<<<<<<<<<<<
 *         cdef object datarep = mpistr(cdatarep)
 *         return (disp, etype, ftype, datarep)
 */
  (__pyx_v_cdatarep[MPI_MAX_DATAREP_STRING]) = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":213
 *         fix_fileview_Datatype(etype); fix_fileview_Datatype(ftype)
 *         cdatarep[MPI_MAX_DATAREP_STRING] = 0 # just in case
 *         cdef object datarep = mpistr(cdatarep)             # <<<<<<<<<<<<<<
 *         return (disp, etype, ftype, datarep)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_cdatarep); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_datarep = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":214
 *         cdatarep[MPI_MAX_DATAREP_STRING] = 0 # just in case
 *         cdef object datarep = mpistr(cdatarep)
 *         return (disp, etype, ftype, datarep)             # <<<<<<<<<<<<<<
 * 
 *     # [9.4] Data Access
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_to_py_MPI_Offset(__pyx_v_disp); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_v_etype));
  PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_etype));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_etype));
  __Pyx_INCREF(((PyObject *)__pyx_v_ftype));
  PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_v_ftype));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_ftype));
  __Pyx_INCREF(__pyx_v_datarep);
  PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_datarep);
  __Pyx_GIVEREF(__pyx_v_datarep);
  __pyx_t_1 = 0;
  __pyx_r = ((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_view", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_etype);
  __Pyx_XDECREF((PyObject *)__pyx_v_ftype);
  __Pyx_XDECREF(__pyx_v_datarep);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":222
 *     # -----------------------------------------
 * 
 *     def Read_at(self, Offset offset, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Read using explicit offset
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_16Read_at(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_16Read_at[] = "File.Read_at(self, Offset offset, buf, Status status=None)\n\n        Read using explicit offset\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_16Read_at(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__offset,&__pyx_n_s__buf,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Read_at");
  {
    PyObject* values[3] = {0,0,0};
    values[2] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__offset);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Read_at", 0, 2, 3, 1); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Read_at") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_offset = __Pyx_PyInt_from_py_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == (MPI_Offset)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_buf = values[1];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_at", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":226
 *         Read using explicit offset
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":227
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_at(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":228
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":229
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Read_at_all(self, Offset offset, buf, Status status=None):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_at(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_offset, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":228
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":231
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Read_at_all(self, Offset offset, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Collective read using explicit offset
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_17Read_at_all(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_17Read_at_all[] = "File.Read_at_all(self, Offset offset, buf, Status status=None)\n\n        Collective read using explicit offset\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_17Read_at_all(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__offset,&__pyx_n_s__buf,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Read_at_all");
  {
    PyObject* values[3] = {0,0,0};
    values[2] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__offset);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Read_at_all", 0, 2, 3, 1); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Read_at_all") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_offset = __Pyx_PyInt_from_py_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == (MPI_Offset)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_buf = values[1];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_at_all", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_at_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":235
 *         Collective read using explicit offset
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at_all(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":236
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_at_all(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":237
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at_all(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":238
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at_all(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_at(self, Offset offset, buf, Status status=None):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_at_all(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_offset, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":237
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at_all(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_at_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":240
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_at(self, Offset offset, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Write using explicit offset
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_18Write_at(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_18Write_at[] = "File.Write_at(self, Offset offset, buf, Status status=None)\n\n        Write using explicit offset\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_18Write_at(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__offset,&__pyx_n_s__buf,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Write_at");
  {
    PyObject* values[3] = {0,0,0};
    values[2] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__offset);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Write_at", 0, 2, 3, 1); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Write_at") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_offset = __Pyx_PyInt_from_py_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == (MPI_Offset)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_buf = values[1];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_at", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":244
 *         Write using explicit offset
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":245
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_at(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":246
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":247
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_at_all(self, Offset offset, buf, Status status=None):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_at(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_offset, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":246
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":249
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_at_all(self, Offset offset, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Collective write using explicit offset
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_19Write_at_all(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_19Write_at_all[] = "File.Write_at_all(self, Offset offset, buf, Status status=None)\n\n        Collective write using explicit offset\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_19Write_at_all(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__offset,&__pyx_n_s__buf,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Write_at_all");
  {
    PyObject* values[3] = {0,0,0};
    values[2] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__offset);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Write_at_all", 0, 2, 3, 1); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Write_at_all") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_offset = __Pyx_PyInt_from_py_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == (MPI_Offset)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_buf = values[1];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_at_all", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_at_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":253
 *         Collective write using explicit offset
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at_all(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":254
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_at_all(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":255
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at_all(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":256
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at_all(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Iread_at(self, Offset offset, buf):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_at_all(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_offset, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":255
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at_all(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_at_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":258
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Iread_at(self, Offset offset, buf):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking read using explicit offset
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_20Iread_at(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_20Iread_at[] = "File.Iread_at(self, Offset offset, buf)\n\n        Nonblocking read using explicit offset\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_20Iread_at(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__offset,&__pyx_n_s__buf,0};
  __Pyx_RefNannySetupContext("Iread_at");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__offset);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Iread_at", 1, 2, 2, 1); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Iread_at") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_offset = __Pyx_PyInt_from_py_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == (MPI_Offset)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_buf = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iread_at", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Iread_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":262
 *         Nonblocking read using explicit offset
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iread_at(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":263
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>Request.__new__(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iread_at(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIRequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":264
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iread_at(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":265
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iread_at(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iread_at(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_offset, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":264
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iread_at(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":266
 *         with nogil: CHKERR( MPI_File_iread_at(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_m));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_m));
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":267
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Iwrite_at(self, Offset offset, buf):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Iread_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":269
 *         return request
 * 
 *     def Iwrite_at(self, Offset offset, buf):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking write using explicit offset
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_21Iwrite_at(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_21Iwrite_at[] = "File.Iwrite_at(self, Offset offset, buf)\n\n        Nonblocking write using explicit offset\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_21Iwrite_at(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__offset,&__pyx_n_s__buf,0};
  __Pyx_RefNannySetupContext("Iwrite_at");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__offset);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Iwrite_at", 1, 2, 2, 1); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Iwrite_at") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_offset = __Pyx_PyInt_from_py_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == (MPI_Offset)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_buf = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iwrite_at", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Iwrite_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":273
 *         Nonblocking write using explicit offset
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_at(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":274
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>Request.__new__(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iwrite_at(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIRequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":275
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_at(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":276
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_at(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iwrite_at(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_offset, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":275
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_at(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":277
 *         with nogil: CHKERR( MPI_File_iwrite_at(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_m));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_m));
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":278
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     # [9.4.3] Data Access with Individual File Pointers
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Iwrite_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":283
 *     # -------------------------------------------------
 * 
 *     def Read(self, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Read using individual file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_22Read(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_22Read[] = "File.Read(self, buf, Status status=None)\n\n        Read using individual file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_22Read(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Read");
  {
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Read") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":287
 *         Read using individual file pointer
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":288
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":289
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":290
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Read_all(self, buf, Status status=None):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":289
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":292
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Read_all(self, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Collective read using individual file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_23Read_all(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_23Read_all[] = "File.Read_all(self, buf, Status status=None)\n\n        Collective read using individual file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_23Read_all(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Read_all");
  {
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Read_all") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_all", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":296
 *         Collective read using individual file pointer
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_all(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":297
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_all(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":298
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_all(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":299
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_all(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Write(self, buf, Status status=None):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_all(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":298
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_all(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":301
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write(self, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Write using individual file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_24Write(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_24Write[] = "File.Write(self, buf, Status status=None)\n\n        Write using individual file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_24Write(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Write");
  {
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Write") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":305
 *         Write using individual file pointer
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":306
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":307
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":308
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_all(self, buf, Status status=None):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":307
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":310
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_all(self, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Collective write using individual file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_25Write_all(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_25Write_all[] = "File.Write_all(self, buf, Status status=None)\n\n        Collective write using individual file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_25Write_all(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Write_all");
  {
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Write_all") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_all", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":314
 *         Collective write using individual file pointer
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_all(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":315
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_all(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":316
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_all(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":317
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_all(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Iread(self, buf):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_all(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":316
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_all(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":319
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Iread(self, buf):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking read using individual file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_26Iread(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_26Iread[] = "File.Iread(self, buf)\n\n        Nonblocking read using individual file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_26Iread(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,0};
  __Pyx_RefNannySetupContext("Iread");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Iread") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iread", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Iread", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":323
 *         Nonblocking read using individual file pointer
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iread(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":324
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>Request.__new__(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iread(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIRequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":325
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iread(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":326
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iread(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iread(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":325
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iread(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":327
 *         with nogil: CHKERR( MPI_File_iread(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_m));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_m));
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":328
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Iwrite(self, buf):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Iread", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":330
 *         return request
 * 
 *     def Iwrite(self, buf):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking write using individual file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_27Iwrite(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_27Iwrite[] = "File.Iwrite(self, buf)\n\n        Nonblocking write using individual file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_27Iwrite(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,0};
  __Pyx_RefNannySetupContext("Iwrite");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Iwrite") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iwrite", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Iwrite", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":334
 *         Nonblocking write using individual file pointer
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iwrite(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":335
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>Request.__new__(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iwrite(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIRequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":336
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iwrite(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":337
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iwrite(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iwrite(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":336
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iwrite(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":338
 *         with nogil: CHKERR( MPI_File_iwrite(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_m));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_m));
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":339
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Seek(self, Offset offset, int whence=SEEK_SET):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Iwrite", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":341
 *         return request
 * 
 *     def Seek(self, Offset offset, int whence=SEEK_SET):             # <<<<<<<<<<<<<<
 *         """
 *         Update the individual file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_28Seek(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_28Seek[] = "File.Seek(self, Offset offset, int whence=SEEK_SET)\n\n        Update the individual file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_28Seek(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Offset __pyx_v_offset;
  int __pyx_v_whence;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__offset,&__pyx_n_s__whence,0};
  __Pyx_RefNannySetupContext("Seek");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__offset);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__whence);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Seek") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_offset = __Pyx_PyInt_from_py_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == (MPI_Offset)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    if (values[1]) {
      __pyx_v_whence = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_whence == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_whence = __pyx_k_108;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Seek", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Seek", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":345
 *         Update the individual file pointer
 *         """
 *         with nogil: CHKERR( MPI_File_seek(self.ob_mpi, offset, whence) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_position(self):
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_seek(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_offset, __pyx_v_whence)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Seek", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":347
 *         with nogil: CHKERR( MPI_File_seek(self.ob_mpi, offset, whence) )
 * 
 *     def Get_position(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the current position of the individual file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_29Get_position(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_29Get_position[] = "File.Get_position(self)\n\n        Return the current position of the individual file pointer\n        in etype units relative to the current view\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_29Get_position(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_position");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_position", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_position", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":352
 *         in etype units relative to the current view
 *         """
 *         cdef MPI_Offset offset = 0             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_position(self.ob_mpi, &offset) )
 *         return offset
 */
  __pyx_v_offset = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":353
 *         """
 *         cdef MPI_Offset offset = 0
 *         with nogil: CHKERR( MPI_File_get_position(self.ob_mpi, &offset) )             # <<<<<<<<<<<<<<
 *         return offset
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_position(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_offset))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":354
 *         cdef MPI_Offset offset = 0
 *         with nogil: CHKERR( MPI_File_get_position(self.ob_mpi, &offset) )
 *         return offset             # <<<<<<<<<<<<<<
 * 
 *     def Get_byte_offset(self, Offset offset):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_to_py_MPI_Offset(__pyx_v_offset); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_position", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":356
 *         return offset
 * 
 *     def Get_byte_offset(self, Offset offset):             # <<<<<<<<<<<<<<
 *         """
 *         Returns the absolute byte position in the file corresponding
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_30Get_byte_offset(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_30Get_byte_offset[] = "File.Get_byte_offset(self, Offset offset)\n\n        Returns the absolute byte position in the file corresponding\n        to 'offset' etypes relative to the current view\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_30Get_byte_offset(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Offset __pyx_v_offset;
  MPI_Offset __pyx_v_disp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__offset,0};
  __Pyx_RefNannySetupContext("Get_byte_offset");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__offset);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Get_byte_offset") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_offset = __Pyx_PyInt_from_py_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == (MPI_Offset)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_byte_offset", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_byte_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":361
 *         to 'offset' etypes relative to the current view
 *         """
 *         cdef MPI_Offset disp = 0             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_byte_offset(
 *             self.ob_mpi, offset, &disp) )
 */
  __pyx_v_disp = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":362
 *         """
 *         cdef MPI_Offset disp = 0
 *         with nogil: CHKERR( MPI_File_get_byte_offset(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, &disp) )
 *         return disp
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":363
 *         cdef MPI_Offset disp = 0
 *         with nogil: CHKERR( MPI_File_get_byte_offset(
 *             self.ob_mpi, offset, &disp) )             # <<<<<<<<<<<<<<
 *         return disp
 * 
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_byte_offset(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_offset, (&__pyx_v_disp))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":362
 *         """
 *         cdef MPI_Offset disp = 0
 *         with nogil: CHKERR( MPI_File_get_byte_offset(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, &disp) )
 *         return disp
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":364
 *         with nogil: CHKERR( MPI_File_get_byte_offset(
 *             self.ob_mpi, offset, &disp) )
 *         return disp             # <<<<<<<<<<<<<<
 * 
 *     # [9.4.4] Data Access with Shared File Pointers
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_to_py_MPI_Offset(__pyx_v_disp); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_byte_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":369
 *     # ---------------------------------------------
 * 
 *     def Read_shared(self, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Read using shared file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_31Read_shared(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_31Read_shared[] = "File.Read_shared(self, buf, Status status=None)\n\n        Read using shared file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_31Read_shared(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Read_shared");
  {
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Read_shared") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_shared", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":373
 *         Read using shared file pointer
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_shared(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":374
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_shared(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":375
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_shared(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":376
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_shared(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_shared(self, buf, Status status=None):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_shared(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":375
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_shared(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":378
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_shared(self, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Write using shared file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_32Write_shared(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_32Write_shared[] = "File.Write_shared(self, buf, Status status=None)\n\n        Write using shared file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_32Write_shared(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Write_shared");
  {
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Write_shared") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_shared", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":382
 *         Write using shared file pointer
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_shared(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":383
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_shared(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":384
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_shared(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":385
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_shared(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Iread_shared(self, buf):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_shared(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":384
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_shared(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":387
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Iread_shared(self, buf):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking read using shared file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_33Iread_shared(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_33Iread_shared[] = "File.Iread_shared(self, buf)\n\n        Nonblocking read using shared file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_33Iread_shared(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,0};
  __Pyx_RefNannySetupContext("Iread_shared");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Iread_shared") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iread_shared", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Iread_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":391
 *         Nonblocking read using shared file pointer
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iread_shared(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":392
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>Request.__new__(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iread_shared(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIRequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":393
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iread_shared(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":394
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iread_shared(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iread_shared(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":393
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iread_shared(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":395
 *         with nogil: CHKERR( MPI_File_iread_shared(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_m));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_m));
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":396
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Iwrite_shared(self, buf):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Iread_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":398
 *         return request
 * 
 *     def Iwrite_shared(self, buf):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking write using shared file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_34Iwrite_shared(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_34Iwrite_shared[] = "File.Iwrite_shared(self, buf)\n\n        Nonblocking write using shared file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_34Iwrite_shared(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,0};
  __Pyx_RefNannySetupContext("Iwrite_shared");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Iwrite_shared") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iwrite_shared", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Iwrite_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":402
 *         Nonblocking write using shared file pointer
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_shared(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":403
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>Request.__new__(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iwrite_shared(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIRequestObject *)__pyx_t_1)));
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":404
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_shared(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":405
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_shared(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iwrite_shared(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":404
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>Request.__new__(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_shared(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":406
 *         with nogil: CHKERR( MPI_File_iwrite_shared(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_m));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_m));
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":407
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Read_ordered(self, buf, Status status=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_request));
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Iwrite_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":409
 *         return request
 * 
 *     def Read_ordered(self, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Collective read using shared file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_35Read_ordered(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_35Read_ordered[] = "File.Read_ordered(self, buf, Status status=None)\n\n        Collective read using shared file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_35Read_ordered(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Read_ordered");
  {
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Read_ordered") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_ordered", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_ordered", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":413
 *         Collective read using shared file pointer
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_ordered(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":414
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_ordered(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":415
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_ordered(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":416
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_ordered(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_ordered(self, buf, Status status=None):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_ordered(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":415
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_ordered(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_ordered", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":418
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_ordered(self, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Collective write using shared file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_36Write_ordered(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_36Write_ordered[] = "File.Write_ordered(self, buf, Status status=None)\n\n        Collective write using shared file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_36Write_ordered(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Write_ordered");
  {
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Write_ordered") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_ordered", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_ordered", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":422
 *         Collective write using shared file pointer
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_ordered(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":423
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_ordered(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":424
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_ordered(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":425
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_ordered(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Seek_shared(self, Offset offset, int whence=SEEK_SET):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_ordered(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":424
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_ordered(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_ordered", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":427
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Seek_shared(self, Offset offset, int whence=SEEK_SET):             # <<<<<<<<<<<<<<
 *         """
 *         Update the shared file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_37Seek_shared(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_37Seek_shared[] = "File.Seek_shared(self, Offset offset, int whence=SEEK_SET)\n\n        Update the shared file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_37Seek_shared(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Offset __pyx_v_offset;
  int __pyx_v_whence;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__offset,&__pyx_n_s__whence,0};
  __Pyx_RefNannySetupContext("Seek_shared");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__offset);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__whence);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Seek_shared") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_offset = __Pyx_PyInt_from_py_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == (MPI_Offset)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    if (values[1]) {
      __pyx_v_whence = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_whence == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_whence = __pyx_k_109;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Seek_shared", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Seek_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":431
 *         Update the shared file pointer
 *         """
 *         with nogil: CHKERR( MPI_File_seek_shared(self.ob_mpi, offset, whence) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_position_shared(self):
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_seek_shared(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_offset, __pyx_v_whence)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Seek_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":433
 *         with nogil: CHKERR( MPI_File_seek_shared(self.ob_mpi, offset, whence) )
 * 
 *     def Get_position_shared(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the current position of the shared file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_38Get_position_shared(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_38Get_position_shared[] = "File.Get_position_shared(self)\n\n        Return the current position of the shared file pointer\n        in etype units relative to the current view\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_38Get_position_shared(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_position_shared");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_position_shared", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_position_shared", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":438
 *         in etype units relative to the current view
 *         """
 *         cdef MPI_Offset offset = 0             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_position_shared(self.ob_mpi, &offset) )
 *         return offset
 */
  __pyx_v_offset = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":439
 *         """
 *         cdef MPI_Offset offset = 0
 *         with nogil: CHKERR( MPI_File_get_position_shared(self.ob_mpi, &offset) )             # <<<<<<<<<<<<<<
 *         return offset
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_position_shared(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_offset))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":440
 *         cdef MPI_Offset offset = 0
 *         with nogil: CHKERR( MPI_File_get_position_shared(self.ob_mpi, &offset) )
 *         return offset             # <<<<<<<<<<<<<<
 * 
 *     # [9.4.5] Split Collective Data Access Routines
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_to_py_MPI_Offset(__pyx_v_offset); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_position_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":447
 *     # explicit offset
 * 
 *     def Read_at_all_begin(self, Offset offset, buf):             # <<<<<<<<<<<<<<
 *         """
 *         Start a split collective read using explict offset
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_39Read_at_all_begin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_39Read_at_all_begin[] = "File.Read_at_all_begin(self, Offset offset, buf)\n\n        Start a split collective read using explict offset\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_39Read_at_all_begin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__offset,&__pyx_n_s__buf,0};
  __Pyx_RefNannySetupContext("Read_at_all_begin");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__offset);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Read_at_all_begin", 1, 2, 2, 1); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Read_at_all_begin") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_offset = __Pyx_PyInt_from_py_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == (MPI_Offset)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_buf = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_at_all_begin", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_at_all_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":451
 *         Start a split collective read using explict offset
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_at_all_begin(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":452
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         with nogil: CHKERR( MPI_File_read_at_all_begin(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":453
 *         cdef _p_msg_io m = message_io_read(buf)
 *         with nogil: CHKERR( MPI_File_read_at_all_begin(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )             # <<<<<<<<<<<<<<
 * 
 *     def Read_at_all_end(self, buf, Status status=None):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_at_all_begin(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_offset, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":452
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         with nogil: CHKERR( MPI_File_read_at_all_begin(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_at_all_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":455
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 *     def Read_at_all_end(self, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Complete a split collective read using explict offset
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_40Read_at_all_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_40Read_at_all_end[] = "File.Read_at_all_end(self, buf, Status status=None)\n\n        Complete a split collective read using explict offset\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_40Read_at_all_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Read_at_all_end");
  {
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Read_at_all_end") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_at_all_end", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_at_all_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":459
 *         Complete a split collective read using explict offset
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at_all_end(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":460
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_at_all_end(
 *             self.ob_mpi, m.buf, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":461
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at_all_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":462
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at_all_end(
 *             self.ob_mpi, m.buf, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_at_all_begin(self, Offset offset, buf):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_at_all_end(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":461
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at_all_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_at_all_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":464
 *             self.ob_mpi, m.buf, statusp) )
 * 
 *     def Write_at_all_begin(self, Offset offset, buf):             # <<<<<<<<<<<<<<
 *         """
 *         Start a split collective write using explict offset
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_41Write_at_all_begin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_41Write_at_all_begin[] = "File.Write_at_all_begin(self, Offset offset, buf)\n\n        Start a split collective write using explict offset\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_41Write_at_all_begin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__offset,&__pyx_n_s__buf,0};
  __Pyx_RefNannySetupContext("Write_at_all_begin");
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__offset);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("Write_at_all_begin", 1, 2, 2, 1); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Write_at_all_begin") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_offset = __Pyx_PyInt_from_py_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == (MPI_Offset)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_buf = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_at_all_begin", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_at_all_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":468
 *         Start a split collective write using explict offset
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_at_all_begin(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":469
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         with nogil: CHKERR( MPI_File_write_at_all_begin(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":470
 *         cdef _p_msg_io m = message_io_write(buf)
 *         with nogil: CHKERR( MPI_File_write_at_all_begin(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_at_all_end(self, buf, Status status=None):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_at_all_begin(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_offset, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":469
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         with nogil: CHKERR( MPI_File_write_at_all_begin(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_at_all_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":472
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 *     def Write_at_all_end(self, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Complete a split collective write using explict offset
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_42Write_at_all_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_42Write_at_all_end[] = "File.Write_at_all_end(self, buf, Status status=None)\n\n        Complete a split collective write using explict offset\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_42Write_at_all_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Write_at_all_end");
  {
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Write_at_all_end") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_at_all_end", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_at_all_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":476
 *         Complete a split collective write using explict offset
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at_all_end(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":477
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_at_all_end(
 *             self.ob_mpi, m.buf, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":478
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at_all_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":479
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at_all_end(
 *             self.ob_mpi, m.buf, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     # individual file pointer
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_at_all_end(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":478
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at_all_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_at_all_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":483
 *     # individual file pointer
 * 
 *     def Read_all_begin(self, buf):             # <<<<<<<<<<<<<<
 *         """
 *         Start a split collective read
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_43Read_all_begin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_43Read_all_begin[] = "File.Read_all_begin(self, buf)\n\n        Start a split collective read\n        using individual file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_43Read_all_begin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,0};
  __Pyx_RefNannySetupContext("Read_all_begin");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Read_all_begin") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_all_begin", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_all_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":488
 *         using individual file pointer
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_all_begin(
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":489
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         with nogil: CHKERR( MPI_File_read_all_begin(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":490
 *         cdef _p_msg_io m = message_io_read(buf)
 *         with nogil: CHKERR( MPI_File_read_all_begin(
 *             self.ob_mpi, m.buf, m.count, m.dtype) )             # <<<<<<<<<<<<<<
 * 
 *     def Read_all_end(self, buf, Status status=None):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_all_begin(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":489
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         with nogil: CHKERR( MPI_File_read_all_begin(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_all_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":492
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Read_all_end(self, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Complete a split collective read
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_44Read_all_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_44Read_all_end[] = "File.Read_all_end(self, buf, Status status=None)\n\n        Complete a split collective read\n        using individual file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_44Read_all_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Read_all_end");
  {
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Read_all_end") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_all_end", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_all_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":497
 *         using individual file pointer
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_all_end(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 497; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":498
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_all_end(
 *             self.ob_mpi, m.buf, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":499
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_all_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":500
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_all_end(
 *             self.ob_mpi, m.buf, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_all_begin(self, buf):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_all_end(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":499
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_all_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_all_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":502
 *             self.ob_mpi, m.buf, statusp) )
 * 
 *     def Write_all_begin(self, buf):             # <<<<<<<<<<<<<<
 *         """
 *         Start a split collective write
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_45Write_all_begin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_45Write_all_begin[] = "File.Write_all_begin(self, buf)\n\n        Start a split collective write\n        using individual file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_45Write_all_begin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,0};
  __Pyx_RefNannySetupContext("Write_all_begin");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Write_all_begin") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_all_begin", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_all_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":507
 *         using individual file pointer
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_all_begin(
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":508
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         with nogil: CHKERR( MPI_File_write_all_begin(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":509
 *         cdef _p_msg_io m = message_io_write(buf)
 *         with nogil: CHKERR( MPI_File_write_all_begin(
 *             self.ob_mpi, m.buf, m.count, m.dtype) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_all_end(self, buf, Status status=None):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_all_begin(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":508
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         with nogil: CHKERR( MPI_File_write_all_begin(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_all_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":511
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Write_all_end(self, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Complete a split collective write
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_46Write_all_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_46Write_all_end[] = "File.Write_all_end(self, buf, Status status=None)\n\n        Complete a split collective write\n        using individual file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_46Write_all_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Write_all_end");
  {
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Write_all_end") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_all_end", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_all_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":516
 *         using individual file pointer
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_all_end(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":517
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_all_end(
 *             self.ob_mpi, m.buf, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":518
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_all_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":519
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_all_end(
 *             self.ob_mpi, m.buf, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     # shared file pointer
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_all_end(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":518
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_all_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_all_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":523
 *     # shared file pointer
 * 
 *     def Read_ordered_begin(self, buf):             # <<<<<<<<<<<<<<
 *         """
 *         Start a split collective read
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_47Read_ordered_begin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_47Read_ordered_begin[] = "File.Read_ordered_begin(self, buf)\n\n        Start a split collective read\n        using shared file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_47Read_ordered_begin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,0};
  __Pyx_RefNannySetupContext("Read_ordered_begin");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Read_ordered_begin") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_ordered_begin", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_ordered_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":528
 *         using shared file pointer
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_ordered_begin(
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":529
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         with nogil: CHKERR( MPI_File_read_ordered_begin(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":530
 *         cdef _p_msg_io m = message_io_read(buf)
 *         with nogil: CHKERR( MPI_File_read_ordered_begin(
 *             self.ob_mpi, m.buf, m.count, m.dtype) )             # <<<<<<<<<<<<<<
 * 
 *     def Read_ordered_end(self, buf, Status status=None):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_ordered_begin(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":529
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         with nogil: CHKERR( MPI_File_read_ordered_begin(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_ordered_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":532
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Read_ordered_end(self, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Complete a split collective read
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_48Read_ordered_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_48Read_ordered_end[] = "File.Read_ordered_end(self, buf, Status status=None)\n\n        Complete a split collective read\n        using shared file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_48Read_ordered_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Read_ordered_end");
  {
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Read_ordered_end") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 532; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_ordered_end", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 532; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_ordered_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":537
 *         using shared file pointer
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_ordered_end(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":538
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_ordered_end(
 *             self.ob_mpi, m.buf, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":539
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_ordered_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":540
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_ordered_end(
 *             self.ob_mpi, m.buf, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_ordered_begin(self, buf):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_ordered_end(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":539
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_ordered_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_ordered_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":542
 *             self.ob_mpi, m.buf, statusp) )
 * 
 *     def Write_ordered_begin(self, buf):             # <<<<<<<<<<<<<<
 *         """
 *         Start a split collective write using
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_49Write_ordered_begin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_49Write_ordered_begin[] = "File.Write_ordered_begin(self, buf)\n\n        Start a split collective write using\n        shared file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_49Write_ordered_begin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,0};
  __Pyx_RefNannySetupContext("Write_ordered_begin");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Write_ordered_begin") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_ordered_begin", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_ordered_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":547
 *         shared file pointer
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_ordered_begin(
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":548
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         with nogil: CHKERR( MPI_File_write_ordered_begin(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":549
 *         cdef _p_msg_io m = message_io_write(buf)
 *         with nogil: CHKERR( MPI_File_write_ordered_begin(
 *             self.ob_mpi, m.buf, m.count, m.dtype) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_ordered_end(self, buf, Status status=None):
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_ordered_begin(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":548
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         with nogil: CHKERR( MPI_File_write_ordered_begin(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_ordered_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":551
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Write_ordered_end(self, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Complete a split collective write
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_50Write_ordered_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_50Write_ordered_end[] = "File.Write_ordered_end(self, buf, Status status=None)\n\n        Complete a split collective write\n        using shared file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_50Write_ordered_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__buf,&__pyx_n_s__status,0};
  __Pyx_RefNannySetupContext("Write_ordered_end");
  {
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)((struct PyMPIStatusObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__status);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Write_ordered_end") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_ordered_end", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_ordered_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":556
 *         using shared file pointer
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_ordered_end(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":557
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_ordered_end(
 *             self.ob_mpi, m.buf, statusp) )
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":558
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_ordered_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":559
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_ordered_end(
 *             self.ob_mpi, m.buf, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     # [9.5] File Interoperability
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_ordered_end(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":558
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_ordered_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_ordered_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":567
 *     # -------------------------------------------
 * 
 *     def Get_type_extent(self, Datatype datatype not None):             # <<<<<<<<<<<<<<
 *         """
 *         Return the extent of datatype in the file
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_51Get_type_extent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_51Get_type_extent[] = "File.Get_type_extent(self, Datatype datatype)\n\n        Return the extent of datatype in the file\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_51Get_type_extent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  MPI_Aint __pyx_v_extent;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__datatype,0};
  __Pyx_RefNannySetupContext("Get_type_extent");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__datatype);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Get_type_extent") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_datatype = ((struct PyMPIDatatypeObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_type_extent", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_type_extent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_datatype), __pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":571
 *         Return the extent of datatype in the file
 *         """
 *         cdef MPI_Aint extent = 0             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_type_extent(
 *             self.ob_mpi, datatype.ob_mpi, &extent) )
 */
  __pyx_v_extent = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":572
 *         """
 *         cdef MPI_Aint extent = 0
 *         with nogil: CHKERR( MPI_File_get_type_extent(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, datatype.ob_mpi, &extent) )
 *         return extent
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":573
 *         cdef MPI_Aint extent = 0
 *         with nogil: CHKERR( MPI_File_get_type_extent(
 *             self.ob_mpi, datatype.ob_mpi, &extent) )             # <<<<<<<<<<<<<<
 *         return extent
 * 
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_type_extent(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_datatype->ob_mpi, (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }

      /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":572
 *         """
 *         cdef MPI_Aint extent = 0
 *         with nogil: CHKERR( MPI_File_get_type_extent(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, datatype.ob_mpi, &extent) )
 *         return extent
 */
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":574
 *         with nogil: CHKERR( MPI_File_get_type_extent(
 *             self.ob_mpi, datatype.ob_mpi, &extent) )
 *         return extent             # <<<<<<<<<<<<<<
 * 
 *     # [9.6] Consistency and Semantics
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_to_py_MPI_Aint(__pyx_v_extent); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_type_extent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":582
 *     # ------------------------
 * 
 *     def Set_atomicity(self, bint flag):             # <<<<<<<<<<<<<<
 *         """
 *         Set the atomicity mode
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_52Set_atomicity(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_52Set_atomicity[] = "File.Set_atomicity(self, int flag)\n\n        Set the atomicity mode\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_52Set_atomicity(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__flag,0};
  __Pyx_RefNannySetupContext("Set_atomicity");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__flag);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Set_atomicity") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 582; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_flag = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_flag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 582; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_atomicity", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 582; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_atomicity", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":586
 *         Set the atomicity mode
 *         """
 *         with nogil: CHKERR( MPI_File_set_atomicity(self.ob_mpi, flag) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_atomicity(self):
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_set_atomicity(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_flag)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: __pyx_why = 4; goto __pyx_L8;
        __pyx_L8:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_atomicity", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":588
 *         with nogil: CHKERR( MPI_File_set_atomicity(self.ob_mpi, flag) )
 * 
 *     def Get_atomicity(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the atomicity mode
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_53Get_atomicity(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_53Get_atomicity[] = "File.Get_atomicity(self)\n\n        Return the atomicity mode\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_53Get_atomicity(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_atomicity");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_atomicity", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_atomicity", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":592
 *         Return the atomicity mode
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_atomicity(self.ob_mpi, &flag) )
 *         return <bint>flag
 */
  __pyx_v_flag = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":593
 *         """
 *         cdef int flag = 0
 *         with nogil: CHKERR( MPI_File_get_atomicity(self.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_atomicity(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":594
 *         cdef int flag = 0
 *         with nogil: CHKERR( MPI_File_get_atomicity(self.ob_mpi, &flag) )
 *         return <bint>flag             # <<<<<<<<<<<<<<
 * 
 *     property atomicity:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_v_flag)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_atomicity", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":598
 *     property atomicity:
 *         """atomicity"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self.Get_atomicity()
 *         def __set__(self, value):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_9atomicity___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_9atomicity___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":599
 *         """atomicity"""
 *         def __get__(self):
 *             return self.Get_atomicity()             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self.Set_atomicity(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Get_atomicity); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.atomicity.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":600
 *         def __get__(self):
 *             return self.Get_atomicity()
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self.Set_atomicity(value)
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_4File_9atomicity_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_4File_9atomicity_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__");

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":601
 *             return self.Get_atomicity()
 *         def __set__(self, value):
 *             self.Set_atomicity(value)             # <<<<<<<<<<<<<<
 * 
 *     def Sync(self):
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__Set_atomicity); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_value);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.File.atomicity.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":603
 *             self.Set_atomicity(value)
 * 
 *     def Sync(self):             # <<<<<<<<<<<<<<
 *         """
 *         Causes all previous writes to be
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_54Sync(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_54Sync[] = "File.Sync(self)\n\n        Causes all previous writes to be\n        transferred to the storage device\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_54Sync(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Sync");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Sync", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Sync", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":608
 *         transferred to the storage device
 *         """
 *         with nogil: CHKERR( MPI_File_sync(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # [9.7] I/O Error Handling
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save = NULL;
      #endif
      Py_UNBLOCK_THREADS
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_sync(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L6;}
      }
      /*finally:*/ {
        int __pyx_why;
        __pyx_why = 0; goto __pyx_L7;
        __pyx_L6: __pyx_why = 4; goto __pyx_L7;
        __pyx_L7:;
        Py_BLOCK_THREADS
        switch (__pyx_why) {
          case 4: goto __pyx_L1_error;
        }
      }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Sync", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":613
 *     # ------------------------
 * 
 *     def Get_errhandler(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a file
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_55Get_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_55Get_errhandler[] = "File.Get_errhandler(self)\n\n        Get the error handler for a file\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_55Get_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_errhandler");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_errhandler", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_errhandler", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":617
 *         Get the error handler for a file
 *         """
 *         cdef Errhandler errhandler = <Errhandler>Errhandler.__new__(Errhandler)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_File_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )
 *         return errhandler
 */
  __pyx_t_1 = __Pyx_tp_new(((PyObject*)__pyx_ptype_6mpi4py_3MPI_Errhandler)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIErrhandlerObject *)__pyx_t_1)));
  __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":618
 *         """
 *         cdef Errhandler errhandler = <Errhandler>Errhandler.__new__(Errhandler)
 *         CHKERR( MPI_File_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return errhandler
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_errhandler(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_errhandler->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":619
 *         cdef Errhandler errhandler = <Errhandler>Errhandler.__new__(Errhandler)
 *         CHKERR( MPI_File_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )
 *         return errhandler             # <<<<<<<<<<<<<<
 * 
 *     def Set_errhandler(self, Errhandler errhandler not None):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_errhandler));
  __pyx_r = ((PyObject *)__pyx_v_errhandler);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_errhandler);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":621
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler not None):             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a file
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_56Set_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_56Set_errhandler[] = "File.Set_errhandler(self, Errhandler errhandler)\n\n        Set the error handler for a file\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_56Set_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__errhandler,0};
  __Pyx_RefNannySetupContext("Set_errhandler");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__errhandler);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Set_errhandler") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 621; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_errhandler", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 621; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_errhandler), __pyx_ptype_6mpi4py_3MPI_Errhandler, 0, "errhandler", 0))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":625
 *         Set the error handler for a file
 *         """
 *         CHKERR( MPI_File_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Call_errhandler(self, int errorcode):
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_set_errhandler(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_errhandler->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 625; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":627
 *         CHKERR( MPI_File_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )
 * 
 *     def Call_errhandler(self, int errorcode):             # <<<<<<<<<<<<<<
 *         """
 *         Call the error handler installed on a file
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_57Call_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_57Call_errhandler[] = "File.Call_errhandler(self, int errorcode)\n\n        Call the error handler installed on a file\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_57Call_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_errorcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__errorcode,0};
  __Pyx_RefNannySetupContext("Call_errhandler");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__errorcode);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Call_errhandler") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_errorcode = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Call_errhandler", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Call_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":631
 *         Call the error handler installed on a file
 *         """
 *         CHKERR( MPI_File_call_errhandler(self.ob_mpi, errorcode) )             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_call_errhandler(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_errorcode)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Call_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":636
 *     # --------------
 * 
 *     def py2f(self):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_58py2f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_58py2f[] = "File.py2f(self)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_58py2f(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("py2f");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("py2f", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "py2f", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":639
 *         """
 *         """
 *         return MPI_File_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_to_py_MPI_Fint(MPI_File_c2f(((struct PyMPIFileObject *)__pyx_v_self)->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.py2f", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":642
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_59f2py(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_59f2py[] = "File.f2py(type cls, arg)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_59f2py(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_arg = 0;
  struct PyMPIFileObject *__pyx_v_file = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Fint __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__arg,0};
  __Pyx_RefNannySetupContext("f2py");
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__arg);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "f2py") < 0)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[26]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":645
 *         """
 *         """
 *         cdef File file = <File>cls()             # <<<<<<<<<<<<<<
 *         file.ob_mpi = MPI_File_f2c(arg)
 *         return file
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct PyMPIFileObject *)__pyx_t_1)));
  __pyx_v_file = ((struct PyMPIFileObject *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":646
 *         """
 *         cdef File file = <File>cls()
 *         file.ob_mpi = MPI_File_f2c(arg)             # <<<<<<<<<<<<<<
 *         return file
 * 
 */
  __pyx_t_2 = __Pyx_PyInt_from_py_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_2 == (MPI_Fint)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_file->ob_mpi = MPI_File_f2c(__pyx_t_2);

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":647
 *         cdef File file = <File>cls()
 *         file.ob_mpi = MPI_File_f2c(arg)
 *         return file             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_file));
  __pyx_r = ((PyObject *)__pyx_v_file);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_file);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":84
 * # -----------------
 * 
 * def Alloc_mem(Aint size, Info info=INFO_NULL):             # <<<<<<<<<<<<<<
 *     """
 *     Allocate memory for message passing and RMA
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_14Alloc_mem(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_14Alloc_mem[] = "Alloc_mem(Aint size, Info info=INFO_NULL)\n\n    Allocate memory for message passing and RMA\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_14Alloc_mem = {__Pyx_NAMESTR("Alloc_mem"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_14Alloc_mem, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_14Alloc_mem)};
static PyObject *__pyx_pf_6mpi4py_3MPI_14Alloc_mem(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  MPI_Aint __pyx_v_size;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  void *__pyx_v_base;
  MPI_Info __pyx_v_cinfo;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__size,&__pyx_n_s__info,0};
  __Pyx_RefNannySetupContext("Alloc_mem");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    values[1] = (PyObject *)__pyx_k_110;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__size);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__info);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Alloc_mem") < 0)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_size = __Pyx_PyInt_from_py_MPI_Aint(values[0]); if (unlikely((__pyx_v_size == (MPI_Aint)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_info = ((struct PyMPIInfoObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Alloc_mem", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[27]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Alloc_mem", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 1, "info", 0))) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":88
 *     Allocate memory for message passing and RMA
 *     """
 *     cdef void *base = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Info cinfo = arg_Info(info)
 *     CHKERR( MPI_Alloc_mem(size, cinfo, &base) )
 */
  __pyx_v_base = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":89
 *     """
 *     cdef void *base = NULL
 *     cdef MPI_Info cinfo = arg_Info(info)             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Alloc_mem(size, cinfo, &base) )
 *     return tomemory(base, size)
 */
  __pyx_v_cinfo = __pyx_f_6mpi4py_3MPI_arg_Info(((PyObject *)__pyx_v_info));

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":90
 *     cdef void *base = NULL
 *     cdef MPI_Info cinfo = arg_Info(info)
 *     CHKERR( MPI_Alloc_mem(size, cinfo, &base) )             # <<<<<<<<<<<<<<
 *     return tomemory(base, size)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Alloc_mem(__pyx_v_size, __pyx_v_cinfo, (&__pyx_v_base))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":91
 *     cdef MPI_Info cinfo = arg_Info(info)
 *     CHKERR( MPI_Alloc_mem(size, cinfo, &base) )
 *     return tomemory(base, size)             # <<<<<<<<<<<<<<
 * 
 * def Free_mem(memory):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_tomemory(__pyx_v_base, __pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Alloc_mem", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":93
 *     return tomemory(base, size)
 * 
 * def Free_mem(memory):             # <<<<<<<<<<<<<<
 *     """
 *     Free memory allocated with `Alloc_mem()`
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_15Free_mem(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_15Free_mem[] = "Free_mem(memory)\n\n    Free memory allocated with `Alloc_mem()`\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_15Free_mem = {__Pyx_NAMESTR("Free_mem"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_15Free_mem, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_15Free_mem)};
static PyObject *__pyx_pf_6mpi4py_3MPI_15Free_mem(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_memory = 0;
  void *__pyx_v_base;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__memory,0};
  __Pyx_RefNannySetupContext("Free_mem");
  __pyx_self = __pyx_self;
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__memory);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Free_mem") < 0)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_memory = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Free_mem", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[27]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Free_mem", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":97
 *     Free memory allocated with `Alloc_mem()`
 *     """
 *     cdef void *base = NULL             # <<<<<<<<<<<<<<
 *     asmemory(memory, &base, NULL)
 *     CHKERR( MPI_Free_mem(base) )
 */
  __pyx_v_base = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":98
 *     """
 *     cdef void *base = NULL
 *     asmemory(memory, &base, NULL)             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Free_mem(base) )
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmemory(__pyx_v_memory, (&__pyx_v_base), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":99
 *     cdef void *base = NULL
 *     asmemory(memory, &base, NULL)
 *     CHKERR( MPI_Free_mem(base) )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Free_mem(__pyx_v_base)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Free_mem", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":105
 * # -----------------------
 * 
 * def Init():             # <<<<<<<<<<<<<<
 *     """
 *     Initialize the MPI execution environment
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_16Init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_16Init[] = "Init()\n\n    Initialize the MPI execution environment\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_16Init = {__Pyx_NAMESTR("Init"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_16Init, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_16Init)};
static PyObject *__pyx_pf_6mpi4py_3MPI_16Init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Init");
  __pyx_self = __pyx_self;
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Init", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Init", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":109
 *     Initialize the MPI execution environment
 *     """
 *     CHKERR( MPI_Init(NULL, NULL) )             # <<<<<<<<<<<<<<
 *     startup()
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Init(NULL, NULL)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":110
 *     """
 *     CHKERR( MPI_Init(NULL, NULL) )
 *     startup()             # <<<<<<<<<<<<<<
 * 
 * def Finalize():
 */
  __pyx_f_6mpi4py_3MPI_startup();

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":112
 *     startup()
 * 
 * def Finalize():             # <<<<<<<<<<<<<<
 *     """
 *     Terminate the MPI execution environment
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_17Finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_17Finalize[] = "Finalize()\n\n    Terminate the MPI execution environment\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_17Finalize = {__Pyx_NAMESTR("Finalize"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_17Finalize, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_17Finalize)};
static PyObject *__pyx_pf_6mpi4py_3MPI_17Finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Finalize");
  __pyx_self = __pyx_self;
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Finalize", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Finalize", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":116
 *     Terminate the MPI execution environment
 *     """
 *     cleanup()             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Finalize() )
 * 
 */
  __pyx_f_6mpi4py_3MPI_cleanup();

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":117
 *     """
 *     cleanup()
 *     CHKERR( MPI_Finalize() )             # <<<<<<<<<<<<<<
 * 
 * # Levels of MPI threading support
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Finalize()); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Finalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":134
 * # """Multiple threads may call MPI"""
 * 
 * def Init_thread(int required=THREAD_MULTIPLE):             # <<<<<<<<<<<<<<
 *     """
 *     Initialize the MPI execution environment
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_18Init_thread(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_18Init_thread[] = "Init_thread(int required=THREAD_MULTIPLE)\n\n    Initialize the MPI execution environment\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_18Init_thread = {__Pyx_NAMESTR("Init_thread"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_18Init_thread, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_18Init_thread)};
static PyObject *__pyx_pf_6mpi4py_3MPI_18Init_thread(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_required;
  int __pyx_v_provided;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__required,0};
  __Pyx_RefNannySetupContext("Init_thread");
  __pyx_self = __pyx_self;
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__required);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Init_thread") < 0)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_required = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_required == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_required = __pyx_k_111;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Init_thread", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[27]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Init_thread", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":138
 *     Initialize the MPI execution environment
 *     """
 *     cdef int provided = MPI_THREAD_SINGLE             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Init_thread(NULL, NULL, required, &provided) )
 *     startup()
 */
  __pyx_v_provided = MPI_THREAD_SINGLE;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":139
 *     """
 *     cdef int provided = MPI_THREAD_SINGLE
 *     CHKERR( MPI_Init_thread(NULL, NULL, required, &provided) )             # <<<<<<<<<<<<<<
 *     startup()
 *     return provided
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Init_thread(NULL, NULL, __pyx_v_required, (&__pyx_v_provided))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":140
 *     cdef int provided = MPI_THREAD_SINGLE
 *     CHKERR( MPI_Init_thread(NULL, NULL, required, &provided) )
 *     startup()             # <<<<<<<<<<<<<<
 *     return provided
 * 
 */
  __pyx_f_6mpi4py_3MPI_startup();

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":141
 *     CHKERR( MPI_Init_thread(NULL, NULL, required, &provided) )
 *     startup()
 *     return provided             # <<<<<<<<<<<<<<
 * 
 * def Query_thread():
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_provided); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Init_thread", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":143
 *     return provided
 * 
 * def Query_thread():             # <<<<<<<<<<<<<<
 *     """
 *     Return the level of thread support
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_19Query_thread(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_19Query_thread[] = "Query_thread()\n\n    Return the level of thread support\n    provided by the MPI library\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_19Query_thread = {__Pyx_NAMESTR("Query_thread"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_19Query_thread, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_19Query_thread)};
static PyObject *__pyx_pf_6mpi4py_3MPI_19Query_thread(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_provided;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Query_thread");
  __pyx_self = __pyx_self;
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Query_thread", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Query_thread", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":148
 *     provided by the MPI library
 *     """
 *     cdef int provided = MPI_THREAD_SINGLE             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Query_thread(&provided) )
 *     return provided
 */
  __pyx_v_provided = MPI_THREAD_SINGLE;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":149
 *     """
 *     cdef int provided = MPI_THREAD_SINGLE
 *     CHKERR( MPI_Query_thread(&provided) )             # <<<<<<<<<<<<<<
 *     return provided
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Query_thread((&__pyx_v_provided))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":150
 *     cdef int provided = MPI_THREAD_SINGLE
 *     CHKERR( MPI_Query_thread(&provided) )
 *     return provided             # <<<<<<<<<<<<<<
 * 
 * def Is_thread_main():
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_provided); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Query_thread", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":152
 *     return provided
 * 
 * def Is_thread_main():             # <<<<<<<<<<<<<<
 *     """
 *     Indicate whether this thread called
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_20Is_thread_main(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_20Is_thread_main[] = "Is_thread_main()\n\n    Indicate whether this thread called\n    ``Init`` or ``Init_thread``\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_20Is_thread_main = {__Pyx_NAMESTR("Is_thread_main"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_20Is_thread_main, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_20Is_thread_main)};
static PyObject *__pyx_pf_6mpi4py_3MPI_20Is_thread_main(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Is_thread_main");
  __pyx_self = __pyx_self;
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Is_thread_main", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Is_thread_main", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":157
 *     ``Init`` or ``Init_thread``
 *     """
 *     cdef int flag = 1             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Is_thread_main(&flag) )
 *     return <bint>flag
 */
  __pyx_v_flag = 1;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":158
 *     """
 *     cdef int flag = 1
 *     CHKERR( MPI_Is_thread_main(&flag) )             # <<<<<<<<<<<<<<
 *     return <bint>flag
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Is_thread_main((&__pyx_v_flag))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":159
 *     cdef int flag = 1
 *     CHKERR( MPI_Is_thread_main(&flag) )
 *     return <bint>flag             # <<<<<<<<<<<<<<
 * 
 * def Is_initialized():
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_v_flag)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Is_thread_main", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":161
 *     return <bint>flag
 * 
 * def Is_initialized():             # <<<<<<<<<<<<<<
 *     """
 *     Indicates whether ``Init`` has been called
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_21Is_initialized(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_21Is_initialized[] = "Is_initialized()\n\n    Indicates whether ``Init`` has been called\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_21Is_initialized = {__Pyx_NAMESTR("Is_initialized"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_21Is_initialized, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_21Is_initialized)};
static PyObject *__pyx_pf_6mpi4py_3MPI_21Is_initialized(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Is_initialized");
  __pyx_self = __pyx_self;
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Is_initialized", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Is_initialized", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":165
 *     Indicates whether ``Init`` has been called
 *     """
 *     cdef int flag = 0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Initialized(&flag) )
 *     return <bint>flag
 */
  __pyx_v_flag = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":166
 *     """
 *     cdef int flag = 0
 *     CHKERR( MPI_Initialized(&flag) )             # <<<<<<<<<<<<<<
 *     return <bint>flag
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Initialized((&__pyx_v_flag))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":167
 *     cdef int flag = 0
 *     CHKERR( MPI_Initialized(&flag) )
 *     return <bint>flag             # <<<<<<<<<<<<<<
 * 
 * def Is_finalized():
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_v_flag)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Is_initialized", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":169
 *     return <bint>flag
 * 
 * def Is_finalized():             # <<<<<<<<<<<<<<
 *     """
 *     Indicates whether ``Finalize`` has completed
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_22Is_finalized(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_22Is_finalized[] = "Is_finalized()\n\n    Indicates whether ``Finalize`` has completed\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_22Is_finalized = {__Pyx_NAMESTR("Is_finalized"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_22Is_finalized, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_22Is_finalized)};
static PyObject *__pyx_pf_6mpi4py_3MPI_22Is_finalized(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Is_finalized");
  __pyx_self = __pyx_self;
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Is_finalized", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Is_finalized", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":173
 *     Indicates whether ``Finalize`` has completed
 *     """
 *     cdef int flag = 0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Finalized(&flag) )
 *     return <bint>flag
 */
  __pyx_v_flag = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":174
 *     """
 *     cdef int flag = 0
 *     CHKERR( MPI_Finalized(&flag) )             # <<<<<<<<<<<<<<
 *     return <bint>flag
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Finalized((&__pyx_v_flag))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":175
 *     cdef int flag = 0
 *     CHKERR( MPI_Finalized(&flag) )
 *     return <bint>flag             # <<<<<<<<<<<<<<
 * 
 * # Implementation Information
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_v_flag)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Is_finalized", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":186
 * SUBVERSION = MPI_SUBVERSION
 * 
 * def Get_version():             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the version number of the MPI standard supported
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_23Get_version(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_23Get_version[] = "Get_version()\n\n    Obtain the version number of the MPI standard supported\n    by the implementation as a tuple ``(version, subversion)``\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_23Get_version = {__Pyx_NAMESTR("Get_version"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_23Get_version, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_23Get_version)};
static PyObject *__pyx_pf_6mpi4py_3MPI_23Get_version(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_version;
  int __pyx_v_subversion;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_version");
  __pyx_self = __pyx_self;
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_version", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_version", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":191
 *     by the implementation as a tuple ``(version, subversion)``
 *     """
 *     cdef int version = 1             # <<<<<<<<<<<<<<
 *     cdef int subversion = 0
 *     CHKERR( MPI_Get_version(&version, &subversion) )
 */
  __pyx_v_version = 1;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":192
 *     """
 *     cdef int version = 1
 *     cdef int subversion = 0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Get_version(&version, &subversion) )
 *     return (version, subversion)
 */
  __pyx_v_subversion = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":193
 *     cdef int version = 1
 *     cdef int subversion = 0
 *     CHKERR( MPI_Get_version(&version, &subversion) )             # <<<<<<<<<<<<<<
 *     return (version, subversion)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_version((&__pyx_v_version), (&__pyx_v_subversion))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":194
 *     cdef int subversion = 0
 *     CHKERR( MPI_Get_version(&version, &subversion) )
 *     return (version, subversion)             # <<<<<<<<<<<<<<
 * 
 * # Environmental Inquires
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyInt_FromLong(__pyx_v_version); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromLong(__pyx_v_subversion); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_r = ((PyObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Get_version", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":199
 * # ----------------------
 * 
 * def Get_processor_name():             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the name of the calling processor
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_24Get_processor_name(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_24Get_processor_name[] = "Get_processor_name()\n\n    Obtain the name of the calling processor\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_24Get_processor_name = {__Pyx_NAMESTR("Get_processor_name"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_24Get_processor_name, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_24Get_processor_name)};
static PyObject *__pyx_pf_6mpi4py_3MPI_24Get_processor_name(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  char __pyx_v_name[(MPI_MAX_PROCESSOR_NAME + 1)];
  int __pyx_v_nlen;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_processor_name");
  __pyx_self = __pyx_self;
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_processor_name", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_processor_name", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":204
 *     """
 *     cdef char name[MPI_MAX_PROCESSOR_NAME+1]
 *     cdef int nlen = 0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Get_processor_name(name, &nlen) )
 *     return tompistr(name, nlen)
 */
  __pyx_v_nlen = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":205
 *     cdef char name[MPI_MAX_PROCESSOR_NAME+1]
 *     cdef int nlen = 0
 *     CHKERR( MPI_Get_processor_name(name, &nlen) )             # <<<<<<<<<<<<<<
 *     return tompistr(name, nlen)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_processor_name(__pyx_v_name, (&__pyx_v_nlen))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":206
 *     cdef int nlen = 0
 *     CHKERR( MPI_Get_processor_name(name, &nlen) )
 *     return tompistr(name, nlen)             # <<<<<<<<<<<<<<
 * 
 * # Timers and Synchronization
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_tompistr(__pyx_v_name, __pyx_v_nlen); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Get_processor_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":211
 * # --------------------------
 * 
 * def Wtime():             # <<<<<<<<<<<<<<
 *     """
 *     Return an elapsed time on the calling processor
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_25Wtime(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_25Wtime[] = "Wtime()\n\n    Return an elapsed time on the calling processor\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_25Wtime = {__Pyx_NAMESTR("Wtime"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_25Wtime, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_25Wtime)};
static PyObject *__pyx_pf_6mpi4py_3MPI_25Wtime(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Wtime");
  __pyx_self = __pyx_self;
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Wtime", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Wtime", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":215
 *     Return an elapsed time on the calling processor
 *     """
 *     return MPI_Wtime()             # <<<<<<<<<<<<<<
 * 
 * def Wtick():
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(MPI_Wtime()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Wtime", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":217
 *     return MPI_Wtime()
 * 
 * def Wtick():             # <<<<<<<<<<<<<<
 *     """
 *     Return the resolution of ``Wtime``
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_26Wtick(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_26Wtick[] = "Wtick()\n\n    Return the resolution of ``Wtime``\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_26Wtick = {__Pyx_NAMESTR("Wtick"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_26Wtick, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_26Wtick)};
static PyObject *__pyx_pf_6mpi4py_3MPI_26Wtick(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Wtick");
  __pyx_self = __pyx_self;
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("Wtick", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Wtick", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":221
 *     Return the resolution of ``Wtime``
 *     """
 *     return MPI_Wtick()             # <<<<<<<<<<<<<<
 * 
 * # Control of Profiling
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(MPI_Wtick()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Wtick", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":226
 * # --------------------
 * 
 * def Pcontrol(int level):             # <<<<<<<<<<<<<<
 *     """
 *     Control profiling
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_27Pcontrol(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_27Pcontrol[] = "Pcontrol(int level)\n\n    Control profiling\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_27Pcontrol = {__Pyx_NAMESTR("Pcontrol"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_27Pcontrol, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_27Pcontrol)};
static PyObject *__pyx_pf_6mpi4py_3MPI_27Pcontrol(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_level;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__level,0};
  __Pyx_RefNannySetupContext("Pcontrol");
  __pyx_self = __pyx_self;
  {
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__level);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Pcontrol") < 0)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_level = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_level == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Pcontrol", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[27]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Pcontrol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":230
 *     Control profiling
 *     """
 *     if level < 0 or level > 2: CHKERR(MPI_ERR_ARG)             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Pcontrol(level) )
 * 
 */
  __pyx_t_1 = (__pyx_v_level < 0);
  if (!__pyx_t_1) {
    __pyx_t_2 = (__pyx_v_level > 2);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_ERR_ARG); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":231
 *     """
 *     if level < 0 or level > 2: CHKERR(MPI_ERR_ARG)
 *     CHKERR( MPI_Pcontrol(level) )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Pcontrol(__pyx_v_level)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Pcontrol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":254
 *     int MPI_Get_vendor(const_char**,int*,int*,int*)
 * 
 * def get_vendor():             # <<<<<<<<<<<<<<
 *     """
 *     Infomation about the underlying MPI implementation
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_28get_vendor(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_28get_vendor[] = "get_vendor()\n\n    Infomation about the underlying MPI implementation\n\n    :Returns:\n      - a string with the name of the MPI implementation\n      - an integer 3-tuple version ``(major, minor, micro)``\n    ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_28get_vendor = {__Pyx_NAMESTR("get_vendor"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_28get_vendor, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_28get_vendor)};
static PyObject *__pyx_pf_6mpi4py_3MPI_28get_vendor(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  const char *__pyx_v_name;
  int __pyx_v_major;
  int __pyx_v_minor;
  int __pyx_v_micro;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_vendor");
  __pyx_self = __pyx_self;
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("get_vendor", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "get_vendor", 0))) return NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":262
 *       - an integer 3-tuple version ``(major, minor, micro)``
 *     """
 *     cdef const_char *name=NULL             # <<<<<<<<<<<<<<
 *     cdef int major=0, minor=0, micro=0
 *     CHKERR( MPI_Get_vendor(&name, &major, &minor, &micro) )
 */
  __pyx_v_name = NULL;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":263
 *     """
 *     cdef const_char *name=NULL
 *     cdef int major=0, minor=0, micro=0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Get_vendor(&name, &major, &minor, &micro) )
 *     return (mpistr(name), (major, minor, micro))
 */
  __pyx_v_major = 0;
  __pyx_v_minor = 0;
  __pyx_v_micro = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":264
 *     cdef const_char *name=NULL
 *     cdef int major=0, minor=0, micro=0
 *     CHKERR( MPI_Get_vendor(&name, &major, &minor, &micro) )             # <<<<<<<<<<<<<<
 *     return (mpistr(name), (major, minor, micro))
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_vendor((&__pyx_v_name), (&__pyx_v_major), (&__pyx_v_minor), (&__pyx_v_micro))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":265
 *     cdef int major=0, minor=0, micro=0
 *     CHKERR( MPI_Get_vendor(&name, &major, &minor, &micro) )
 *     return (mpistr(name), (major, minor, micro))             # <<<<<<<<<<<<<<
 * 
 * # --------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromLong(__pyx_v_major); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyInt_FromLong(__pyx_v_minor); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyInt_FromLong(__pyx_v_micro); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_6));
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_t_6));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
  __pyx_t_2 = 0;
  __pyx_t_6 = 0;
  __pyx_r = ((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.get_vendor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Status(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  if (__pyx_pf_6mpi4py_3MPI_6Status___cinit__(o, __pyx_empty_tuple, NULL) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Status(PyObject *o) {
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_6Status_source(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_6Status_6source___get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_6Status_source(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_6mpi4py_3MPI_6Status_6source_1__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_6Status_tag(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_6Status_3tag___get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_6Status_tag(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_6mpi4py_3MPI_6Status_3tag_1__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_6Status_error(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_6Status_5error___get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_6Status_error(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_6mpi4py_3MPI_6Status_5error_1__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_6Status_count(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_6Status_5count___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_6Status_cancelled(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_6Status_9cancelled___get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_6Status_cancelled(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_6mpi4py_3MPI_6Status_9cancelled_1__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Status[] = {
  {__Pyx_NAMESTR("Get_source"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_2Get_source, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_2Get_source)},
  {__Pyx_NAMESTR("Set_source"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_3Set_source, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_3Set_source)},
  {__Pyx_NAMESTR("Get_tag"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_4Get_tag, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_4Get_tag)},
  {__Pyx_NAMESTR("Set_tag"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_5Set_tag, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_5Set_tag)},
  {__Pyx_NAMESTR("Get_error"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_6Get_error, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_6Get_error)},
  {__Pyx_NAMESTR("Set_error"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_7Set_error, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_7Set_error)},
  {__Pyx_NAMESTR("Get_count"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_8Get_count, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_8Get_count)},
  {__Pyx_NAMESTR("Get_elements"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_9Get_elements, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_9Get_elements)},
  {__Pyx_NAMESTR("Set_elements"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_10Set_elements, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_10Set_elements)},
  {__Pyx_NAMESTR("Is_cancelled"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_11Is_cancelled, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_11Is_cancelled)},
  {__Pyx_NAMESTR("Set_cancelled"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_12Set_cancelled, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_12Set_cancelled)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Status[] = {
  {(char *)"source", __pyx_getprop_6mpi4py_3MPI_6Status_source, __pyx_setprop_6mpi4py_3MPI_6Status_source, __Pyx_DOCSTR(__pyx_k__source), 0},
  {(char *)"tag", __pyx_getprop_6mpi4py_3MPI_6Status_tag, __pyx_setprop_6mpi4py_3MPI_6Status_tag, __Pyx_DOCSTR(__pyx_k__tag), 0},
  {(char *)"error", __pyx_getprop_6mpi4py_3MPI_6Status_error, __pyx_setprop_6mpi4py_3MPI_6Status_error, __Pyx_DOCSTR(__pyx_k__error), 0},
  {(char *)"count", __pyx_getprop_6mpi4py_3MPI_6Status_count, 0, __Pyx_DOCSTR(__pyx_k_112), 0},
  {(char *)"cancelled", __pyx_getprop_6mpi4py_3MPI_6Status_cancelled, __pyx_setprop_6mpi4py_3MPI_6Status_cancelled, __Pyx_DOCSTR(__pyx_k_113), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_Status = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Status = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Status = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_Status = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) PyMPIStatus_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI.Status"), /*tp_name*/
  sizeof(struct PyMPIStatusObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Status, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Status, /*tp_as_number*/
  &__pyx_tp_as_sequence_Status, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Status, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_Status, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("\n    Status\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pf_6mpi4py_3MPI_6Status_1__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Status, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Status, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Status, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Datatype(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  if (__pyx_pf_6mpi4py_3MPI_8Datatype___cinit__(o, __pyx_empty_tuple, NULL) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Datatype(PyObject *o) {
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_6mpi4py_3MPI_8Datatype_1__dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_extent(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_8Datatype_6extent___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_lb(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_8Datatype_2lb___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_ub(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_8Datatype_2ub___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_size(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_8Datatype_4size___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_true_extent(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_8Datatype_11true_extent___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_true_lb(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_8Datatype_7true_lb___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_true_ub(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_8Datatype_7true_ub___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_name(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_8Datatype_4name___get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_8Datatype_name(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_6mpi4py_3MPI_8Datatype_4name_1__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Datatype[] = {
  {__Pyx_NAMESTR("Get_extent"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_4Get_extent, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_4Get_extent)},
  {__Pyx_NAMESTR("Get_size"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_5Get_size, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_5Get_size)},
  {__Pyx_NAMESTR("Dup"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_6Dup, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_6Dup)},
  {__Pyx_NAMESTR("Create_contiguous"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_7Create_contiguous, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_7Create_contiguous)},
  {__Pyx_NAMESTR("Create_vector"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_8Create_vector, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_8Create_vector)},
  {__Pyx_NAMESTR("Create_hvector"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_9Create_hvector, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_9Create_hvector)},
  {__Pyx_NAMESTR("Create_indexed"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_10Create_indexed, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_10Create_indexed)},
  {__Pyx_NAMESTR("Create_indexed_block"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_11Create_indexed_block, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_11Create_indexed_block)},
  {__Pyx_NAMESTR("Create_hindexed"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_12Create_hindexed, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_12Create_hindexed)},
  {__Pyx_NAMESTR("Create_subarray"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_13Create_subarray, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_13Create_subarray)},
  {__Pyx_NAMESTR("Create_darray"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_14Create_darray, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_14Create_darray)},
  {__Pyx_NAMESTR("Create_struct"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_15Create_struct, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_15Create_struct)},
  {__Pyx_NAMESTR("Create_f90_integer"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_16Create_f90_integer, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_16Create_f90_integer)},
  {__Pyx_NAMESTR("Create_f90_real"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_17Create_f90_real, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_17Create_f90_real)},
  {__Pyx_NAMESTR("Create_f90_complex"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_18Create_f90_complex, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_18Create_f90_complex)},
  {__Pyx_NAMESTR("Match_size"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_19Match_size, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_19Match_size)},
  {__Pyx_NAMESTR("Commit"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_20Commit, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_20Commit)},
  {__Pyx_NAMESTR("Free"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_21Free, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_21Free)},
  {__Pyx_NAMESTR("Create_resized"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_22Create_resized, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_22Create_resized)},
  {__Pyx_NAMESTR("Get_true_extent"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_23Get_true_extent, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_23Get_true_extent)},
  {__Pyx_NAMESTR("Get_envelope"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_24Get_envelope, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_24Get_envelope)},
  {__Pyx_NAMESTR("Get_contents"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_25Get_contents, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_25Get_contents)},
  {__Pyx_NAMESTR("decode"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_26decode, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_26decode)},
  {__Pyx_NAMESTR("Pack"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_27Pack, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_27Pack)},
  {__Pyx_NAMESTR("Unpack"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_28Unpack, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_28Unpack)},
  {__Pyx_NAMESTR("Pack_size"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_29Pack_size, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_29Pack_size)},
  {__Pyx_NAMESTR("Pack_external"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_30Pack_external, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_30Pack_external)},
  {__Pyx_NAMESTR("Unpack_external"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_31Unpack_external, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_31Unpack_external)},
  {__Pyx_NAMESTR("Pack_external_size"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_32Pack_external_size, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_32Pack_external_size)},
  {__Pyx_NAMESTR("Get_attr"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_33Get_attr, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_33Get_attr)},
  {__Pyx_NAMESTR("Set_attr"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_34Set_attr, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_34Set_attr)},
  {__Pyx_NAMESTR("Delete_attr"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_35Delete_attr, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_35Delete_attr)},
  {__Pyx_NAMESTR("Create_keyval"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_36Create_keyval, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_36Create_keyval)},
  {__Pyx_NAMESTR("Free_keyval"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_37Free_keyval, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_37Free_keyval)},
  {__Pyx_NAMESTR("Get_name"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_38Get_name, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_38Get_name)},
  {__Pyx_NAMESTR("Set_name"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_39Set_name, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_39Set_name)},
  {__Pyx_NAMESTR("py2f"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_40py2f, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_40py2f)},
  {__Pyx_NAMESTR("f2py"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_41f2py, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_41f2py)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Datatype[] = {
  {(char *)"extent", __pyx_getprop_6mpi4py_3MPI_8Datatype_extent, 0, __Pyx_DOCSTR(__pyx_k__extent), 0},
  {(char *)"lb", __pyx_getprop_6mpi4py_3MPI_8Datatype_lb, 0, __Pyx_DOCSTR(__pyx_k_114), 0},
  {(char *)"ub", __pyx_getprop_6mpi4py_3MPI_8Datatype_ub, 0, __Pyx_DOCSTR(__pyx_k_115), 0},
  {(char *)"size", __pyx_getprop_6mpi4py_3MPI_8Datatype_size, 0, __Pyx_DOCSTR(__pyx_k_116), 0},
  {(char *)"true_extent", __pyx_getprop_6mpi4py_3MPI_8Datatype_true_extent, 0, __Pyx_DOCSTR(__pyx_k_117), 0},
  {(char *)"true_lb", __pyx_getprop_6mpi4py_3MPI_8Datatype_true_lb, 0, __Pyx_DOCSTR(__pyx_k_118), 0},
  {(char *)"true_ub", __pyx_getprop_6mpi4py_3MPI_8Datatype_true_ub, 0, __Pyx_DOCSTR(__pyx_k_119), 0},
  {(char *)"name", __pyx_getprop_6mpi4py_3MPI_8Datatype_name, __pyx_setprop_6mpi4py_3MPI_8Datatype_name, __Pyx_DOCSTR(__pyx_k_120), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_Datatype = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pf_6mpi4py_3MPI_8Datatype_3__bool__, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Datatype = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Datatype = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_Datatype = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) PyMPIDatatype_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI.Datatype"), /*tp_name*/
  sizeof(struct PyMPIDatatypeObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Datatype, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Datatype, /*tp_as_number*/
  &__pyx_tp_as_sequence_Datatype, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Datatype, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_Datatype, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("\n    Datatype\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pf_6mpi4py_3MPI_8Datatype_2__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Datatype, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Datatype, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Datatype, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Request(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct PyMPIRequestObject *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct PyMPIRequestObject *)o);
  p->ob_buf = Py_None; Py_INCREF(Py_None);
  if (__pyx_pf_6mpi4py_3MPI_7Request___cinit__(o, a, k) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Request(PyObject *o) {
  struct PyMPIRequestObject *p = (struct PyMPIRequestObject *)o;
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_6mpi4py_3MPI_7Request_1__dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  Py_XDECREF(p->ob_buf);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_6mpi4py_3MPI_Request(PyObject *o, visitproc v, void *a) {
  int e;
  struct PyMPIRequestObject *p = (struct PyMPIRequestObject *)o;
  if (p->ob_buf) {
    e = (*v)(p->ob_buf, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI_Request(PyObject *o) {
  struct PyMPIRequestObject *p = (struct PyMPIRequestObject *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->ob_buf);
  p->ob_buf = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Request[] = {
  {__Pyx_NAMESTR("Wait"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_4Wait, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_4Wait)},
  {__Pyx_NAMESTR("Test"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_5Test, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_5Test)},
  {__Pyx_NAMESTR("Free"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_6Free, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_6Free)},
  {__Pyx_NAMESTR("Get_status"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_7Get_status, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_7Get_status)},
  {__Pyx_NAMESTR("Waitany"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_8Waitany, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_8Waitany)},
  {__Pyx_NAMESTR("Testany"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_9Testany, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_9Testany)},
  {__Pyx_NAMESTR("Waitall"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_10Waitall, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_10Waitall)},
  {__Pyx_NAMESTR("Testall"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_11Testall, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_11Testall)},
  {__Pyx_NAMESTR("Waitsome"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_12Waitsome, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_12Waitsome)},
  {__Pyx_NAMESTR("Testsome"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_13Testsome, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_13Testsome)},
  {__Pyx_NAMESTR("Cancel"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_14Cancel, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_14Cancel)},
  {__Pyx_NAMESTR("py2f"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_15py2f, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_15py2f)},
  {__Pyx_NAMESTR("f2py"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_16f2py, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_16f2py)},
  {__Pyx_NAMESTR("wait"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_17wait, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_17wait)},
  {__Pyx_NAMESTR("test"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_18test, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_18test)},
  {__Pyx_NAMESTR("waitany"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_19waitany, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_19waitany)},
  {__Pyx_NAMESTR("testany"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_20testany, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_20testany)},
  {__Pyx_NAMESTR("waitall"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_21waitall, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_21waitall)},
  {__Pyx_NAMESTR("testall"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_22testall, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_22testall)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_Request = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pf_6mpi4py_3MPI_7Request_3__bool__, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Request = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Request = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_Request = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) PyMPIRequest_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI.Request"), /*tp_name*/
  sizeof(struct PyMPIRequestObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Request, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Request, /*tp_as_number*/
  &__pyx_tp_as_sequence_Request, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Request, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_Request, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("\n    Request\n    "), /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI_Request, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI_Request, /*tp_clear*/
  __pyx_pf_6mpi4py_3MPI_7Request_2__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Request, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Request, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Prequest(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_tp_new_6mpi4py_3MPI_Request(t, a, k);
  if (!o) return 0;
  if (__pyx_pf_6mpi4py_3MPI_8Prequest___cinit__(o, a, k) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Prequest[] = {
  {__Pyx_NAMESTR("Start"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Prequest_1Start, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Prequest_1Start)},
  {__Pyx_NAMESTR("Startall"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Prequest_2Startall, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Prequest_2Startall)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_Prequest = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Prequest = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Prequest = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_Prequest = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) PyMPIPrequest_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI.Prequest"), /*tp_name*/
  sizeof(struct PyMPIPrequestObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Request, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Prequest, /*tp_as_number*/
  &__pyx_tp_as_sequence_Prequest, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Prequest, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_Prequest, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("\n    Persistent request\n    "), /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI_Request, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI_Request, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Prequest, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Prequest, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Grequest(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_tp_new_6mpi4py_3MPI_Request(t, a, k);
  if (!o) return 0;
  if (__pyx_pf_6mpi4py_3MPI_8Grequest___cinit__(o, a, k) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Grequest[] = {
  {__Pyx_NAMESTR("Start"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Grequest_1Start, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Grequest_1Start)},
  {__Pyx_NAMESTR("Complete"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Grequest_2Complete, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Grequest_2Complete)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_Grequest = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Grequest = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Grequest = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_Grequest = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) PyMPIGrequest_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI.Grequest"), /*tp_name*/
  sizeof(struct PyMPIGrequestObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Request, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Grequest, /*tp_as_number*/
  &__pyx_tp_as_sequence_Grequest, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Grequest, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_Grequest, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("\n    Generalized request\n    "), /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI_Request, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI_Request, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Grequest, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Grequest, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Op(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  if (__pyx_pf_6mpi4py_3MPI_2Op___cinit__(o, __pyx_empty_tuple, NULL) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Op(PyObject *o) {
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_6mpi4py_3MPI_2Op_1__dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_2Op_is_commutative(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_2Op_14is_commutative___get__(o);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Op[] = {
  {__Pyx_NAMESTR("Create"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_2Op_5Create, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_2Op_5Create)},
  {__Pyx_NAMESTR("Free"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_2Op_6Free, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_2Op_6Free)},
  {__Pyx_NAMESTR("Is_commutative"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_2Op_7Is_commutative, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_2Op_7Is_commutative)},
  {__Pyx_NAMESTR("Reduce_local"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_2Op_8Reduce_local, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_2Op_8Reduce_local)},
  {__Pyx_NAMESTR("py2f"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_2Op_9py2f, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_2Op_9py2f)},
  {__Pyx_NAMESTR("f2py"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_2Op_10f2py, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_2Op_10f2py)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Op[] = {
  {(char *)"is_commutative", __pyx_getprop_6mpi4py_3MPI_2Op_is_commutative, 0, __Pyx_DOCSTR(__pyx_k_121), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_Op = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pf_6mpi4py_3MPI_2Op_3__bool__, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Op = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Op = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_Op = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) PyMPIOp_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI.Op"), /*tp_name*/
  sizeof(struct PyMPIOpObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Op, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Op, /*tp_as_number*/
  &__pyx_tp_as_sequence_Op, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Op, /*tp_as_mapping*/
  0, /*tp_hash*/
  __pyx_pf_6mpi4py_3MPI_2Op_4__call__, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_Op, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("\n    Op\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pf_6mpi4py_3MPI_2Op_2__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Op, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Op, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Op, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Group(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  if (__pyx_pf_6mpi4py_3MPI_5Group___cinit__(o, __pyx_empty_tuple, NULL) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Group(PyObject *o) {
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_6mpi4py_3MPI_5Group_1__dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_5Group_size(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_5Group_4size___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_5Group_rank(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_5Group_4rank___get__(o);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Group[] = {
  {__Pyx_NAMESTR("Get_size"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_4Get_size, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_4Get_size)},
  {__Pyx_NAMESTR("Get_rank"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_5Get_rank, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_5Get_rank)},
  {__Pyx_NAMESTR("Translate_ranks"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_6Translate_ranks, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_6Translate_ranks)},
  {__Pyx_NAMESTR("Compare"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_7Compare, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_7Compare)},
  {__Pyx_NAMESTR("Dup"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_8Dup, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_8Dup)},
  {__Pyx_NAMESTR("Union"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_9Union, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_9Union)},
  {__Pyx_NAMESTR("Intersect"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_10Intersect, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_10Intersect)},
  {__Pyx_NAMESTR("Difference"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_11Difference, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_11Difference)},
  {__Pyx_NAMESTR("Incl"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_12Incl, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_12Incl)},
  {__Pyx_NAMESTR("Excl"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_13Excl, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_13Excl)},
  {__Pyx_NAMESTR("Range_incl"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_14Range_incl, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_14Range_incl)},
  {__Pyx_NAMESTR("Range_excl"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_15Range_excl, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_15Range_excl)},
  {__Pyx_NAMESTR("Free"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_16Free, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_16Free)},
  {__Pyx_NAMESTR("py2f"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_17py2f, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_17py2f)},
  {__Pyx_NAMESTR("f2py"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_18f2py, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_18f2py)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Group[] = {
  {(char *)"size", __pyx_getprop_6mpi4py_3MPI_5Group_size, 0, __Pyx_DOCSTR(__pyx_k_122), 0},
  {(char *)"rank", __pyx_getprop_6mpi4py_3MPI_5Group_rank, 0, __Pyx_DOCSTR(__pyx_k_123), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_Group = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pf_6mpi4py_3MPI_5Group_3__bool__, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Group = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Group = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_Group = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) PyMPIGroup_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI.Group"), /*tp_name*/
  sizeof(struct PyMPIGroupObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Group, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Group, /*tp_as_number*/
  &__pyx_tp_as_sequence_Group, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Group, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_Group, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("\n    Group\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pf_6mpi4py_3MPI_5Group_2__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Group, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Group, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Group, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Info(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  if (__pyx_pf_6mpi4py_3MPI_4Info___cinit__(o, __pyx_empty_tuple, NULL) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Info(PyObject *o) {
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_6mpi4py_3MPI_4Info_1__dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  (*Py_TYPE(o)->tp_free)(o);
}
static PyObject *__pyx_sq_item_6mpi4py_3MPI_Info(PyObject *o, Py_ssize_t i) {
  PyObject *r;
  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
  Py_DECREF(x);
  return r;
}

static int __pyx_mp_ass_subscript_6mpi4py_3MPI_Info(PyObject *o, PyObject *i, PyObject *v) {
  if (v) {
    return __pyx_pf_6mpi4py_3MPI_4Info_18__setitem__(o, i, v);
  }
  else {
    return __pyx_pf_6mpi4py_3MPI_4Info_19__delitem__(o, i);
  }
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Info[] = {
  {__Pyx_NAMESTR("Create"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_4Create, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_4Create)},
  {__Pyx_NAMESTR("Free"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_5Free, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_5Free)},
  {__Pyx_NAMESTR("Dup"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_6Dup, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_6Dup)},
  {__Pyx_NAMESTR("Get"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_7Get, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_7Get)},
  {__Pyx_NAMESTR("Set"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_8Set, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_8Set)},
  {__Pyx_NAMESTR("Delete"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_9Delete, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_9Delete)},
  {__Pyx_NAMESTR("Get_nkeys"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_10Get_nkeys, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_10Get_nkeys)},
  {__Pyx_NAMESTR("Get_nthkey"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_11Get_nthkey, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_11Get_nthkey)},
  {__Pyx_NAMESTR("py2f"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_12py2f, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_12py2f)},
  {__Pyx_NAMESTR("f2py"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_13f2py, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_13f2py)},
  {__Pyx_NAMESTR("get"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_20get, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_20get)},
  {__Pyx_NAMESTR("keys"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_21keys, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_21keys)},
  {__Pyx_NAMESTR("values"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_22values, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_22values)},
  {__Pyx_NAMESTR("items"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_23items, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_23items)},
  {__Pyx_NAMESTR("update"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_24update, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_24update)},
  {__Pyx_NAMESTR("clear"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_25clear, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_25clear)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_Info = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pf_6mpi4py_3MPI_4Info_3__bool__, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Info = {
  __pyx_pf_6mpi4py_3MPI_4Info_14__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_6mpi4py_3MPI_Info, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  __pyx_pf_6mpi4py_3MPI_4Info_15__contains__, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Info = {
  __pyx_pf_6mpi4py_3MPI_4Info_14__len__, /*mp_length*/
  __pyx_pf_6mpi4py_3MPI_4Info_17__getitem__, /*mp_subscript*/
  __pyx_mp_ass_subscript_6mpi4py_3MPI_Info, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_Info = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) PyMPIInfo_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI.Info"), /*tp_name*/
  sizeof(struct PyMPIInfoObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Info, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Info, /*tp_as_number*/
  &__pyx_tp_as_sequence_Info, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Info, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_Info, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("\n    Info\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pf_6mpi4py_3MPI_4Info_2__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pf_6mpi4py_3MPI_4Info_16__iter__, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Info, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Info, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Errhandler(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  if (__pyx_pf_6mpi4py_3MPI_10Errhandler___cinit__(o, __pyx_empty_tuple, NULL) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Errhandler(PyObject *o) {
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_6mpi4py_3MPI_10Errhandler_1__dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  (*Py_TYPE(o)->tp_free)(o);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Errhandler[] = {
  {__Pyx_NAMESTR("Free"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_10Errhandler_4Free, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_10Errhandler_4Free)},
  {__Pyx_NAMESTR("py2f"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_10Errhandler_5py2f, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_10Errhandler_5py2f)},
  {__Pyx_NAMESTR("f2py"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_10Errhandler_6f2py, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_10Errhandler_6f2py)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_Errhandler = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pf_6mpi4py_3MPI_10Errhandler_3__bool__, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Errhandler = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Errhandler = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_Errhandler = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) PyMPIErrhandler_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI.Errhandler"), /*tp_name*/
  sizeof(struct PyMPIErrhandlerObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Errhandler, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Errhandler, /*tp_as_number*/
  &__pyx_tp_as_sequence_Errhandler, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Errhandler, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_Errhandler, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("\n    Error Handler\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pf_6mpi4py_3MPI_10Errhandler_2__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Errhandler, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Errhandler, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Comm(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  if (__pyx_pf_6mpi4py_3MPI_4Comm___cinit__(o, a, k) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Comm(PyObject *o) {
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_6mpi4py_3MPI_4Comm_1__dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4Comm_group(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_4Comm_5group___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4Comm_size(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_4Comm_4size___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4Comm_rank(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_4Comm_4rank___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4Comm_is_inter(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_4Comm_8is_inter___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4Comm_is_intra(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_4Comm_8is_intra___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4Comm_topology(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_4Comm_8topology___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4Comm_name(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_4Comm_4name___get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_4Comm_name(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_6mpi4py_3MPI_4Comm_4name_1__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Comm[] = {
  {__Pyx_NAMESTR("Get_group"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_4Get_group, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_4Get_group)},
  {__Pyx_NAMESTR("Get_size"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_5Get_size, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_5Get_size)},
  {__Pyx_NAMESTR("Get_rank"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_6Get_rank, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_6Get_rank)},
  {__Pyx_NAMESTR("Compare"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_7Compare, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_7Compare)},
  {__Pyx_NAMESTR("Clone"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_8Clone, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_8Clone)},
  {__Pyx_NAMESTR("Free"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_9Free, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_9Free)},
  {__Pyx_NAMESTR("Send"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_10Send, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_10Send)},
  {__Pyx_NAMESTR("Recv"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_11Recv, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_11Recv)},
  {__Pyx_NAMESTR("Sendrecv"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_12Sendrecv, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_12Sendrecv)},
  {__Pyx_NAMESTR("Sendrecv_replace"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_13Sendrecv_replace, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_13Sendrecv_replace)},
  {__Pyx_NAMESTR("Isend"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_14Isend, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_14Isend)},
  {__Pyx_NAMESTR("Irecv"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_15Irecv, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_15Irecv)},
  {__Pyx_NAMESTR("Probe"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_16Probe, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_16Probe)},
  {__Pyx_NAMESTR("Iprobe"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_17Iprobe, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_17Iprobe)},
  {__Pyx_NAMESTR("Send_init"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_18Send_init, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_18Send_init)},
  {__Pyx_NAMESTR("Recv_init"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_19Recv_init, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_19Recv_init)},
  {__Pyx_NAMESTR("Bsend"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_20Bsend, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_20Bsend)},
  {__Pyx_NAMESTR("Ssend"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_21Ssend, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_21Ssend)},
  {__Pyx_NAMESTR("Rsend"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_22Rsend, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_22Rsend)},
  {__Pyx_NAMESTR("Ibsend"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_23Ibsend, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_23Ibsend)},
  {__Pyx_NAMESTR("Issend"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_24Issend, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_24Issend)},
  {__Pyx_NAMESTR("Irsend"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_25Irsend, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_25Irsend)},
  {__Pyx_NAMESTR("Bsend_init"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_26Bsend_init, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_26Bsend_init)},
  {__Pyx_NAMESTR("Ssend_init"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_27Ssend_init, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_27Ssend_init)},
  {__Pyx_NAMESTR("Rsend_init"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_28Rsend_init, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_28Rsend_init)},
  {__Pyx_NAMESTR("Barrier"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_29Barrier, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_29Barrier)},
  {__Pyx_NAMESTR("Bcast"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_30Bcast, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_30Bcast)},
  {__Pyx_NAMESTR("Gather"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_31Gather, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_31Gather)},
  {__Pyx_NAMESTR("Gatherv"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_32Gatherv, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_32Gatherv)},
  {__Pyx_NAMESTR("Scatter"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_33Scatter, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_33Scatter)},
  {__Pyx_NAMESTR("Scatterv"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_34Scatterv, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_34Scatterv)},
  {__Pyx_NAMESTR("Allgather"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_35Allgather, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_35Allgather)},
  {__Pyx_NAMESTR("Allgatherv"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_36Allgatherv, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_36Allgatherv)},
  {__Pyx_NAMESTR("Alltoall"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_37Alltoall, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_37Alltoall)},
  {__Pyx_NAMESTR("Alltoallv"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_38Alltoallv, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_38Alltoallv)},
  {__Pyx_NAMESTR("Alltoallw"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_39Alltoallw, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_39Alltoallw)},
  {__Pyx_NAMESTR("Reduce"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_40Reduce, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_40Reduce)},
  {__Pyx_NAMESTR("Allreduce"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_41Allreduce, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_41Allreduce)},
  {__Pyx_NAMESTR("Reduce_scatter_block"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_42Reduce_scatter_block, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_42Reduce_scatter_block)},
  {__Pyx_NAMESTR("Reduce_scatter"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_43Reduce_scatter, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_43Reduce_scatter)},
  {__Pyx_NAMESTR("Is_inter"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_44Is_inter, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_44Is_inter)},
  {__Pyx_NAMESTR("Is_intra"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_45Is_intra, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_45Is_intra)},
  {__Pyx_NAMESTR("Get_topology"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_46Get_topology, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_46Get_topology)},
  {__Pyx_NAMESTR("Get_parent"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_47Get_parent, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_47Get_parent)},
  {__Pyx_NAMESTR("Disconnect"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_48Disconnect, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_48Disconnect)},
  {__Pyx_NAMESTR("Join"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_49Join, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_49Join)},
  {__Pyx_NAMESTR("Get_attr"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_50Get_attr, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_50Get_attr)},
  {__Pyx_NAMESTR("Set_attr"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_51Set_attr, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_51Set_attr)},
  {__Pyx_NAMESTR("Delete_attr"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_52Delete_attr, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_52Delete_attr)},
  {__Pyx_NAMESTR("Create_keyval"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_53Create_keyval, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_53Create_keyval)},
  {__Pyx_NAMESTR("Free_keyval"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_54Free_keyval, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_54Free_keyval)},
  {__Pyx_NAMESTR("Get_errhandler"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_55Get_errhandler, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_55Get_errhandler)},
  {__Pyx_NAMESTR("Set_errhandler"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_56Set_errhandler, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_56Set_errhandler)},
  {__Pyx_NAMESTR("Call_errhandler"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_57Call_errhandler, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_57Call_errhandler)},
  {__Pyx_NAMESTR("Abort"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_58Abort, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_58Abort)},
  {__Pyx_NAMESTR("Get_name"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_59Get_name, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_59Get_name)},
  {__Pyx_NAMESTR("Set_name"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_60Set_name, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_60Set_name)},
  {__Pyx_NAMESTR("py2f"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_61py2f, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_61py2f)},
  {__Pyx_NAMESTR("f2py"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_62f2py, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_62f2py)},
  {__Pyx_NAMESTR("send"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_63send, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_63send)},
  {__Pyx_NAMESTR("bsend"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_64bsend, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_64bsend)},
  {__Pyx_NAMESTR("ssend"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_65ssend, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_65ssend)},
  {__Pyx_NAMESTR("recv"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_66recv, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_66recv)},
  {__Pyx_NAMESTR("sendrecv"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_67sendrecv, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_67sendrecv)},
  {__Pyx_NAMESTR("isend"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_68isend, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_68isend)},
  {__Pyx_NAMESTR("ibsend"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_69ibsend, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_69ibsend)},
  {__Pyx_NAMESTR("issend"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_70issend, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_70issend)},
  {__Pyx_NAMESTR("irecv"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_71irecv, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_71irecv)},
  {__Pyx_NAMESTR("barrier"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_72barrier, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_72barrier)},
  {__Pyx_NAMESTR("bcast"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_73bcast, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_73bcast)},
  {__Pyx_NAMESTR("gather"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_74gather, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_74gather)},
  {__Pyx_NAMESTR("scatter"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_75scatter, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_75scatter)},
  {__Pyx_NAMESTR("allgather"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_76allgather, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_76allgather)},
  {__Pyx_NAMESTR("alltoall"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_77alltoall, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_77alltoall)},
  {__Pyx_NAMESTR("reduce"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_78reduce, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_78reduce)},
  {__Pyx_NAMESTR("allreduce"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_79allreduce, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_79allreduce)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Comm[] = {
  {(char *)"group", __pyx_getprop_6mpi4py_3MPI_4Comm_group, 0, __Pyx_DOCSTR(__pyx_k_124), 0},
  {(char *)"size", __pyx_getprop_6mpi4py_3MPI_4Comm_size, 0, __Pyx_DOCSTR(__pyx_k_125), 0},
  {(char *)"rank", __pyx_getprop_6mpi4py_3MPI_4Comm_rank, 0, __Pyx_DOCSTR(__pyx_k_126), 0},
  {(char *)"is_inter", __pyx_getprop_6mpi4py_3MPI_4Comm_is_inter, 0, __Pyx_DOCSTR(__pyx_k_127), 0},
  {(char *)"is_intra", __pyx_getprop_6mpi4py_3MPI_4Comm_is_intra, 0, __Pyx_DOCSTR(__pyx_k_128), 0},
  {(char *)"topology", __pyx_getprop_6mpi4py_3MPI_4Comm_topology, 0, __Pyx_DOCSTR(__pyx_k_129), 0},
  {(char *)"name", __pyx_getprop_6mpi4py_3MPI_4Comm_name, __pyx_setprop_6mpi4py_3MPI_4Comm_name, __Pyx_DOCSTR(__pyx_k_130), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_Comm = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pf_6mpi4py_3MPI_4Comm_3__bool__, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Comm = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Comm = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_Comm = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) PyMPIComm_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI.Comm"), /*tp_name*/
  sizeof(struct PyMPICommObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Comm, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Comm, /*tp_as_number*/
  &__pyx_tp_as_sequence_Comm, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Comm, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_Comm, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("\n    Communicator\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pf_6mpi4py_3MPI_4Comm_2__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Comm, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Comm, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Comm, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Intracomm(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_tp_new_6mpi4py_3MPI_Comm(t, a, k);
  if (!o) return 0;
  if (__pyx_pf_6mpi4py_3MPI_9Intracomm___cinit__(o, a, k) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Intracomm[] = {
  {__Pyx_NAMESTR("Dup"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_1Dup, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_1Dup)},
  {__Pyx_NAMESTR("Create"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_2Create, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_2Create)},
  {__Pyx_NAMESTR("Split"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_3Split, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_3Split)},
  {__Pyx_NAMESTR("Create_cart"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_4Create_cart, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_4Create_cart)},
  {__Pyx_NAMESTR("Create_graph"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_5Create_graph, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_5Create_graph)},
  {__Pyx_NAMESTR("Create_dist_graph_adjacent"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_6Create_dist_graph_adjacent, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_6Create_dist_graph_adjacent)},
  {__Pyx_NAMESTR("Create_dist_graph"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_7Create_dist_graph, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_7Create_dist_graph)},
  {__Pyx_NAMESTR("Create_intercomm"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_8Create_intercomm, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_8Create_intercomm)},
  {__Pyx_NAMESTR("Scan"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_9Scan, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_9Scan)},
  {__Pyx_NAMESTR("Exscan"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_10Exscan, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_10Exscan)},
  {__Pyx_NAMESTR("scan"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_11scan, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_11scan)},
  {__Pyx_NAMESTR("exscan"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_12exscan, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_12exscan)},
  {__Pyx_NAMESTR("Spawn"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_13Spawn, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_13Spawn)},
  {__Pyx_NAMESTR("Spawn_multiple"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_14Spawn_multiple, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_14Spawn_multiple)},
  {__Pyx_NAMESTR("Accept"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_15Accept, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_15Accept)},
  {__Pyx_NAMESTR("Connect"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_16Connect, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_16Connect)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_Intracomm = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Intracomm = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Intracomm = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_Intracomm = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) PyMPIIntracomm_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI.Intracomm"), /*tp_name*/
  sizeof(struct PyMPIIntracommObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Comm, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Intracomm, /*tp_as_number*/
  &__pyx_tp_as_sequence_Intracomm, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Intracomm, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_Intracomm, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("\n    Intracommunicator\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Intracomm, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Intracomm, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Cartcomm(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_tp_new_6mpi4py_3MPI_Intracomm(t, a, k);
  if (!o) return 0;
  if (__pyx_pf_6mpi4py_3MPI_8Cartcomm___cinit__(o, a, k) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Cartcomm_dim(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_8Cartcomm_3dim___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Cartcomm_ndim(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_8Cartcomm_4ndim___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Cartcomm_topo(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_8Cartcomm_4topo___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Cartcomm_dims(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_8Cartcomm_4dims___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Cartcomm_periods(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_8Cartcomm_7periods___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Cartcomm_coords(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_8Cartcomm_6coords___get__(o);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Cartcomm[] = {
  {__Pyx_NAMESTR("Dup"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Cartcomm_1Dup, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_1Dup)},
  {__Pyx_NAMESTR("Get_dim"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Cartcomm_2Get_dim, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_2Get_dim)},
  {__Pyx_NAMESTR("Get_topo"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Cartcomm_3Get_topo, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_3Get_topo)},
  {__Pyx_NAMESTR("Get_cart_rank"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Cartcomm_4Get_cart_rank, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_4Get_cart_rank)},
  {__Pyx_NAMESTR("Get_coords"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Cartcomm_5Get_coords, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_5Get_coords)},
  {__Pyx_NAMESTR("Shift"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Cartcomm_6Shift, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_6Shift)},
  {__Pyx_NAMESTR("Sub"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Cartcomm_7Sub, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_7Sub)},
  {__Pyx_NAMESTR("Map"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Cartcomm_8Map, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_8Map)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Cartcomm[] = {
  {(char *)"dim", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_dim, 0, __Pyx_DOCSTR(__pyx_k_131), 0},
  {(char *)"ndim", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_ndim, 0, __Pyx_DOCSTR(__pyx_k_131), 0},
  {(char *)"topo", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_topo, 0, __Pyx_DOCSTR(__pyx_k_132), 0},
  {(char *)"dims", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_dims, 0, __Pyx_DOCSTR(__pyx_k__dimensions), 0},
  {(char *)"periods", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_periods, 0, __Pyx_DOCSTR(__pyx_k__periodicity), 0},
  {(char *)"coords", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_coords, 0, __Pyx_DOCSTR(__pyx_k__coordinates), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_Cartcomm = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Cartcomm = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Cartcomm = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_Cartcomm = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) PyMPICartcomm_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI.Cartcomm"), /*tp_name*/
  sizeof(struct PyMPICartcommObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Comm, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Cartcomm, /*tp_as_number*/
  &__pyx_tp_as_sequence_Cartcomm, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Cartcomm, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_Cartcomm, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("\n    Cartesian topology intracommunicator\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Cartcomm, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Cartcomm, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Cartcomm, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Graphcomm(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_tp_new_6mpi4py_3MPI_Intracomm(t, a, k);
  if (!o) return 0;
  if (__pyx_pf_6mpi4py_3MPI_9Graphcomm___cinit__(o, a, k) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Graphcomm_dims(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_9Graphcomm_4dims___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Graphcomm_nnodes(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_9Graphcomm_6nnodes___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Graphcomm_nedges(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_9Graphcomm_6nedges___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Graphcomm_topo(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_9Graphcomm_4topo___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Graphcomm_index(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_9Graphcomm_5index___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Graphcomm_edges(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_9Graphcomm_5edges___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Graphcomm_nneighbors(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_9Graphcomm_10nneighbors___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Graphcomm_neighbors(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_9Graphcomm_9neighbors___get__(o);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Graphcomm[] = {
  {__Pyx_NAMESTR("Dup"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Graphcomm_1Dup, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Graphcomm_1Dup)},
  {__Pyx_NAMESTR("Get_dims"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Graphcomm_2Get_dims, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Graphcomm_2Get_dims)},
  {__Pyx_NAMESTR("Get_topo"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Graphcomm_3Get_topo, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Graphcomm_3Get_topo)},
  {__Pyx_NAMESTR("Get_neighbors_count"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Graphcomm_4Get_neighbors_count, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Graphcomm_4Get_neighbors_count)},
  {__Pyx_NAMESTR("Get_neighbors"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Graphcomm_5Get_neighbors, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Graphcomm_5Get_neighbors)},
  {__Pyx_NAMESTR("Map"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Graphcomm_6Map, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Graphcomm_6Map)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Graphcomm[] = {
  {(char *)"dims", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_dims, 0, __Pyx_DOCSTR(__pyx_k_133), 0},
  {(char *)"nnodes", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_nnodes, 0, __Pyx_DOCSTR(__pyx_k_134), 0},
  {(char *)"nedges", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_nedges, 0, __Pyx_DOCSTR(__pyx_k_135), 0},
  {(char *)"topo", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_topo, 0, __Pyx_DOCSTR(__pyx_k_132), 0},
  {(char *)"index", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_index, 0, __Pyx_DOCSTR(__pyx_k__index), 0},
  {(char *)"edges", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_edges, 0, __Pyx_DOCSTR(__pyx_k__edges), 0},
  {(char *)"nneighbors", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_nneighbors, 0, __Pyx_DOCSTR(__pyx_k_136), 0},
  {(char *)"neighbors", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_neighbors, 0, __Pyx_DOCSTR(__pyx_k__neighbors), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_Graphcomm = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Graphcomm = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Graphcomm = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_Graphcomm = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) PyMPIGraphcomm_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI.Graphcomm"), /*tp_name*/
  sizeof(struct PyMPIGraphcommObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Comm, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Graphcomm, /*tp_as_number*/
  &__pyx_tp_as_sequence_Graphcomm, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Graphcomm, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_Graphcomm, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("\n    General graph topology intracommunicator\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Graphcomm, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Graphcomm, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Graphcomm, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Distgraphcomm(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_tp_new_6mpi4py_3MPI_Intracomm(t, a, k);
  if (!o) return 0;
  if (__pyx_pf_6mpi4py_3MPI_13Distgraphcomm___cinit__(o, a, k) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Distgraphcomm[] = {
  {__Pyx_NAMESTR("Dup"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_13Distgraphcomm_1Dup, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_13Distgraphcomm_1Dup)},
  {__Pyx_NAMESTR("Get_dist_neighbors_count"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_13Distgraphcomm_2Get_dist_neighbors_count, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_13Distgraphcomm_2Get_dist_neighbors_count)},
  {__Pyx_NAMESTR("Get_dist_neighbors"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_13Distgraphcomm_3Get_dist_neighbors, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_13Distgraphcomm_3Get_dist_neighbors)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_Distgraphcomm = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Distgraphcomm = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Distgraphcomm = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_Distgraphcomm = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) PyMPIDistgraphcomm_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI.Distgraphcomm"), /*tp_name*/
  sizeof(struct PyMPIDistgraphcommObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Comm, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Distgraphcomm, /*tp_as_number*/
  &__pyx_tp_as_sequence_Distgraphcomm, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Distgraphcomm, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_Distgraphcomm, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("\n    Distributed graph topology intracommunicator\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Distgraphcomm, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Distgraphcomm, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Intercomm(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_tp_new_6mpi4py_3MPI_Comm(t, a, k);
  if (!o) return 0;
  if (__pyx_pf_6mpi4py_3MPI_9Intercomm___cinit__(o, a, k) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Intercomm_remote_group(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_9Intercomm_12remote_group___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Intercomm_remote_size(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_9Intercomm_11remote_size___get__(o);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Intercomm[] = {
  {__Pyx_NAMESTR("Get_remote_group"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intercomm_1Get_remote_group, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intercomm_1Get_remote_group)},
  {__Pyx_NAMESTR("Get_remote_size"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intercomm_2Get_remote_size, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intercomm_2Get_remote_size)},
  {__Pyx_NAMESTR("Dup"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intercomm_3Dup, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intercomm_3Dup)},
  {__Pyx_NAMESTR("Create"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intercomm_4Create, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intercomm_4Create)},
  {__Pyx_NAMESTR("Split"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intercomm_5Split, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intercomm_5Split)},
  {__Pyx_NAMESTR("Merge"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intercomm_6Merge, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intercomm_6Merge)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Intercomm[] = {
  {(char *)"remote_group", __pyx_getprop_6mpi4py_3MPI_9Intercomm_remote_group, 0, __Pyx_DOCSTR(__pyx_k_137), 0},
  {(char *)"remote_size", __pyx_getprop_6mpi4py_3MPI_9Intercomm_remote_size, 0, __Pyx_DOCSTR(__pyx_k_138), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_Intercomm = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Intercomm = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Intercomm = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_Intercomm = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) PyMPIIntercomm_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI.Intercomm"), /*tp_name*/
  sizeof(struct PyMPIIntercommObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Comm, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Intercomm, /*tp_as_number*/
  &__pyx_tp_as_sequence_Intercomm, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Intercomm, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_Intercomm, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("\n    Intercommunicator\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Intercomm, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Intercomm, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Intercomm, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Win(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  if (__pyx_pf_6mpi4py_3MPI_3Win___cinit__(o, a, k) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Win(PyObject *o) {
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_6mpi4py_3MPI_3Win_1__dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_3Win_group(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_3Win_5group___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_3Win_attrs(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_3Win_5attrs___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_3Win_memory(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_3Win_6memory___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_3Win_name(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_3Win_4name___get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_3Win_name(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_6mpi4py_3MPI_3Win_4name_1__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Win[] = {
  {__Pyx_NAMESTR("Create"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_4Create, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_4Create)},
  {__Pyx_NAMESTR("Free"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_5Free, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_5Free)},
  {__Pyx_NAMESTR("Get_group"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_6Get_group, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_6Get_group)},
  {__Pyx_NAMESTR("Get_attr"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_7Get_attr, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_7Get_attr)},
  {__Pyx_NAMESTR("Set_attr"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_8Set_attr, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_8Set_attr)},
  {__Pyx_NAMESTR("Delete_attr"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_9Delete_attr, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_9Delete_attr)},
  {__Pyx_NAMESTR("Create_keyval"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_10Create_keyval, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_10Create_keyval)},
  {__Pyx_NAMESTR("Free_keyval"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_11Free_keyval, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_11Free_keyval)},
  {__Pyx_NAMESTR("Put"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_12Put, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_12Put)},
  {__Pyx_NAMESTR("Get"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_13Get, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_13Get)},
  {__Pyx_NAMESTR("Accumulate"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_14Accumulate, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_14Accumulate)},
  {__Pyx_NAMESTR("Fence"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_15Fence, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_15Fence)},
  {__Pyx_NAMESTR("Start"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_16Start, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_16Start)},
  {__Pyx_NAMESTR("Complete"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_17Complete, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_17Complete)},
  {__Pyx_NAMESTR("Post"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_18Post, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_18Post)},
  {__Pyx_NAMESTR("Wait"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_19Wait, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_19Wait)},
  {__Pyx_NAMESTR("Test"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_20Test, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_20Test)},
  {__Pyx_NAMESTR("Lock"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_21Lock, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_21Lock)},
  {__Pyx_NAMESTR("Unlock"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_22Unlock, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_22Unlock)},
  {__Pyx_NAMESTR("Get_errhandler"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_23Get_errhandler, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_23Get_errhandler)},
  {__Pyx_NAMESTR("Set_errhandler"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_24Set_errhandler, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_24Set_errhandler)},
  {__Pyx_NAMESTR("Call_errhandler"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_25Call_errhandler, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_25Call_errhandler)},
  {__Pyx_NAMESTR("Get_name"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_26Get_name, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_26Get_name)},
  {__Pyx_NAMESTR("Set_name"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_27Set_name, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_27Set_name)},
  {__Pyx_NAMESTR("py2f"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_28py2f, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_28py2f)},
  {__Pyx_NAMESTR("f2py"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_29f2py, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_29f2py)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Win[] = {
  {(char *)"group", __pyx_getprop_6mpi4py_3MPI_3Win_group, 0, __Pyx_DOCSTR(__pyx_k_139), 0},
  {(char *)"attrs", __pyx_getprop_6mpi4py_3MPI_3Win_attrs, 0, __Pyx_DOCSTR(__pyx_k_140), 0},
  {(char *)"memory", __pyx_getprop_6mpi4py_3MPI_3Win_memory, 0, __Pyx_DOCSTR(__pyx_k_141), 0},
  {(char *)"name", __pyx_getprop_6mpi4py_3MPI_3Win_name, __pyx_setprop_6mpi4py_3MPI_3Win_name, __Pyx_DOCSTR(__pyx_k_142), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_Win = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pf_6mpi4py_3MPI_3Win_3__bool__, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Win = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Win = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_Win = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) PyMPIWin_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI.Win"), /*tp_name*/
  sizeof(struct PyMPIWinObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Win, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Win, /*tp_as_number*/
  &__pyx_tp_as_sequence_Win, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Win, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_Win, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("\n    Window\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pf_6mpi4py_3MPI_3Win_2__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Win, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Win, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Win, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI_File(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  if (__pyx_pf_6mpi4py_3MPI_4File___cinit__(o, a, k) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_File(PyObject *o) {
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_6mpi4py_3MPI_4File_1__dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4File_size(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_4File_4size___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4File_group(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_4File_5group___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4File_amode(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_4File_5amode___get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4File_info(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_4File_4info___get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_4File_info(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_6mpi4py_3MPI_4File_4info_1__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4File_atomicity(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_4File_9atomicity___get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_4File_atomicity(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_6mpi4py_3MPI_4File_9atomicity_1__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_File[] = {
  {__Pyx_NAMESTR("Open"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_4Open, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_4Open)},
  {__Pyx_NAMESTR("Close"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_5Close, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_5Close)},
  {__Pyx_NAMESTR("Delete"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_6Delete, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_6Delete)},
  {__Pyx_NAMESTR("Set_size"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_7Set_size, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_7Set_size)},
  {__Pyx_NAMESTR("Preallocate"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_8Preallocate, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_8Preallocate)},
  {__Pyx_NAMESTR("Get_size"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_9Get_size, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_9Get_size)},
  {__Pyx_NAMESTR("Get_group"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_10Get_group, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_10Get_group)},
  {__Pyx_NAMESTR("Get_amode"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_11Get_amode, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_11Get_amode)},
  {__Pyx_NAMESTR("Set_info"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_12Set_info, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_12Set_info)},
  {__Pyx_NAMESTR("Get_info"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_13Get_info, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_13Get_info)},
  {__Pyx_NAMESTR("Set_view"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_14Set_view, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_14Set_view)},
  {__Pyx_NAMESTR("Get_view"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_15Get_view, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_15Get_view)},
  {__Pyx_NAMESTR("Read_at"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_16Read_at, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_16Read_at)},
  {__Pyx_NAMESTR("Read_at_all"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_17Read_at_all, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_17Read_at_all)},
  {__Pyx_NAMESTR("Write_at"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_18Write_at, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_18Write_at)},
  {__Pyx_NAMESTR("Write_at_all"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_19Write_at_all, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_19Write_at_all)},
  {__Pyx_NAMESTR("Iread_at"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_20Iread_at, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_20Iread_at)},
  {__Pyx_NAMESTR("Iwrite_at"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_21Iwrite_at, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_21Iwrite_at)},
  {__Pyx_NAMESTR("Read"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_22Read, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_22Read)},
  {__Pyx_NAMESTR("Read_all"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_23Read_all, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_23Read_all)},
  {__Pyx_NAMESTR("Write"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_24Write, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_24Write)},
  {__Pyx_NAMESTR("Write_all"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_25Write_all, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_25Write_all)},
  {__Pyx_NAMESTR("Iread"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_26Iread, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_26Iread)},
  {__Pyx_NAMESTR("Iwrite"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_27Iwrite, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_27Iwrite)},
  {__Pyx_NAMESTR("Seek"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_28Seek, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_28Seek)},
  {__Pyx_NAMESTR("Get_position"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_29Get_position, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_29Get_position)},
  {__Pyx_NAMESTR("Get_byte_offset"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_30Get_byte_offset, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_30Get_byte_offset)},
  {__Pyx_NAMESTR("Read_shared"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_31Read_shared, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_31Read_shared)},
  {__Pyx_NAMESTR("Write_shared"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_32Write_shared, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_32Write_shared)},
  {__Pyx_NAMESTR("Iread_shared"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_33Iread_shared, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_33Iread_shared)},
  {__Pyx_NAMESTR("Iwrite_shared"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_34Iwrite_shared, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_34Iwrite_shared)},
  {__Pyx_NAMESTR("Read_ordered"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_35Read_ordered, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_35Read_ordered)},
  {__Pyx_NAMESTR("Write_ordered"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_36Write_ordered, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_36Write_ordered)},
  {__Pyx_NAMESTR("Seek_shared"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_37Seek_shared, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_37Seek_shared)},
  {__Pyx_NAMESTR("Get_position_shared"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_38Get_position_shared, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_38Get_position_shared)},
  {__Pyx_NAMESTR("Read_at_all_begin"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_39Read_at_all_begin, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_39Read_at_all_begin)},
  {__Pyx_NAMESTR("Read_at_all_end"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_40Read_at_all_end, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_40Read_at_all_end)},
  {__Pyx_NAMESTR("Write_at_all_begin"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_41Write_at_all_begin, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_41Write_at_all_begin)},
  {__Pyx_NAMESTR("Write_at_all_end"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_42Write_at_all_end, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_42Write_at_all_end)},
  {__Pyx_NAMESTR("Read_all_begin"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_43Read_all_begin, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_43Read_all_begin)},
  {__Pyx_NAMESTR("Read_all_end"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_44Read_all_end, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_44Read_all_end)},
  {__Pyx_NAMESTR("Write_all_begin"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_45Write_all_begin, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_45Write_all_begin)},
  {__Pyx_NAMESTR("Write_all_end"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_46Write_all_end, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_46Write_all_end)},
  {__Pyx_NAMESTR("Read_ordered_begin"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_47Read_ordered_begin, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_47Read_ordered_begin)},
  {__Pyx_NAMESTR("Read_ordered_end"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_48Read_ordered_end, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_48Read_ordered_end)},
  {__Pyx_NAMESTR("Write_ordered_begin"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_49Write_ordered_begin, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_49Write_ordered_begin)},
  {__Pyx_NAMESTR("Write_ordered_end"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_50Write_ordered_end, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_50Write_ordered_end)},
  {__Pyx_NAMESTR("Get_type_extent"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_51Get_type_extent, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_51Get_type_extent)},
  {__Pyx_NAMESTR("Set_atomicity"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_52Set_atomicity, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_52Set_atomicity)},
  {__Pyx_NAMESTR("Get_atomicity"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_53Get_atomicity, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_53Get_atomicity)},
  {__Pyx_NAMESTR("Sync"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_54Sync, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_54Sync)},
  {__Pyx_NAMESTR("Get_errhandler"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_55Get_errhandler, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_55Get_errhandler)},
  {__Pyx_NAMESTR("Set_errhandler"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_56Set_errhandler, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_56Set_errhandler)},
  {__Pyx_NAMESTR("Call_errhandler"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_57Call_errhandler, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_57Call_errhandler)},
  {__Pyx_NAMESTR("py2f"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_58py2f, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_58py2f)},
  {__Pyx_NAMESTR("f2py"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_59f2py, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_59f2py)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_File[] = {
  {(char *)"size", __pyx_getprop_6mpi4py_3MPI_4File_size, 0, __Pyx_DOCSTR(__pyx_k_143), 0},
  {(char *)"group", __pyx_getprop_6mpi4py_3MPI_4File_group, 0, __Pyx_DOCSTR(__pyx_k_144), 0},
  {(char *)"amode", __pyx_getprop_6mpi4py_3MPI_4File_amode, 0, __Pyx_DOCSTR(__pyx_k_145), 0},
  {(char *)"info", __pyx_getprop_6mpi4py_3MPI_4File_info, __pyx_setprop_6mpi4py_3MPI_4File_info, __Pyx_DOCSTR(__pyx_k_146), 0},
  {(char *)"atomicity", __pyx_getprop_6mpi4py_3MPI_4File_atomicity, __pyx_setprop_6mpi4py_3MPI_4File_atomicity, __Pyx_DOCSTR(__pyx_k__atomicity), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_File = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pf_6mpi4py_3MPI_4File_3__bool__, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_File = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_File = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_File = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) PyMPIFile_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI.File"), /*tp_name*/
  sizeof(struct PyMPIFileObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_File, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_File, /*tp_as_number*/
  &__pyx_tp_as_sequence_File, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_File, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_File, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("\n    File\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pf_6mpi4py_3MPI_4File_2__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_File, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_File, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_File, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_buffer(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__p_buffer(PyObject *o) {
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_6mpi4py_3MPI_9_p_buffer___dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  (*Py_TYPE(o)->tp_free)(o);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI__p_buffer[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__p_buffer = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__p_buffer = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__p_buffer = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__p_buffer = {
  #if PY_MAJOR_VERSION < 3
  __pyx_pf_6mpi4py_3MPI_9_p_buffer_4__getreadbuffer__, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_pf_6mpi4py_3MPI_9_p_buffer_5__getwritebuffer__, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_pf_6mpi4py_3MPI_9_p_buffer_3__getsegcount__, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  __pyx_pf_6mpi4py_3MPI_9_p_buffer_1__getbuffer__, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  __pyx_pf_6mpi4py_3MPI_9_p_buffer_2__releasebuffer__, /*bf_releasebuffer*/
  #endif
};

static PyTypeObject __pyx_type_6mpi4py_3MPI__p_buffer = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI._p_buffer"), /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_buffer), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__p_buffer, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number__p_buffer, /*tp_as_number*/
  &__pyx_tp_as_sequence__p_buffer, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__p_buffer, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__p_buffer, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI__p_buffer, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI__p_buffer, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_greq __pyx_vtable_6mpi4py_3MPI__p_greq;

static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_greq(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI__p_greq *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_6mpi4py_3MPI__p_greq *)o);
  p->__pyx_vtab = __pyx_vtabptr_6mpi4py_3MPI__p_greq;
  p->query_fn = Py_None; Py_INCREF(Py_None);
  p->free_fn = Py_None; Py_INCREF(Py_None);
  p->cancel_fn = Py_None; Py_INCREF(Py_None);
  p->args = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->kargs = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (__pyx_pf_6mpi4py_3MPI_7_p_greq___cinit__(o, a, k) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__p_greq(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_greq *p = (struct __pyx_obj_6mpi4py_3MPI__p_greq *)o;
  Py_XDECREF(p->query_fn);
  Py_XDECREF(p->free_fn);
  Py_XDECREF(p->cancel_fn);
  Py_XDECREF(((PyObject *)p->args));
  Py_XDECREF(((PyObject *)p->kargs));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_6mpi4py_3MPI__p_greq(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6mpi4py_3MPI__p_greq *p = (struct __pyx_obj_6mpi4py_3MPI__p_greq *)o;
  if (p->query_fn) {
    e = (*v)(p->query_fn, a); if (e) return e;
  }
  if (p->free_fn) {
    e = (*v)(p->free_fn, a); if (e) return e;
  }
  if (p->cancel_fn) {
    e = (*v)(p->cancel_fn, a); if (e) return e;
  }
  if (p->args) {
    e = (*v)(p->args, a); if (e) return e;
  }
  if (p->kargs) {
    e = (*v)(p->kargs, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI__p_greq(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_greq *p = (struct __pyx_obj_6mpi4py_3MPI__p_greq *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->query_fn);
  p->query_fn = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->free_fn);
  p->free_fn = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->cancel_fn);
  p->cancel_fn = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->args);
  p->args = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->kargs);
  p->kargs = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI__p_greq[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__p_greq = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__p_greq = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__p_greq = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__p_greq = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

static PyTypeObject __pyx_type_6mpi4py_3MPI__p_greq = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI._p_greq"), /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_greq), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__p_greq, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number__p_greq, /*tp_as_number*/
  &__pyx_tp_as_sequence__p_greq, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__p_greq, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__p_greq, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI__p_greq, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI__p_greq, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI__p_greq, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI__p_greq, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_message(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI__p_message *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_6mpi4py_3MPI__p_message *)o);
  p->buf = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)Py_None); Py_INCREF(Py_None);
  p->count = Py_None; Py_INCREF(Py_None);
  p->displ = Py_None; Py_INCREF(Py_None);
  p->type = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__p_message(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_message *p = (struct __pyx_obj_6mpi4py_3MPI__p_message *)o;
  Py_XDECREF(((PyObject *)p->buf));
  Py_XDECREF(p->count);
  Py_XDECREF(p->displ);
  Py_XDECREF(((PyObject *)p->type));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_6mpi4py_3MPI__p_message(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6mpi4py_3MPI__p_message *p = (struct __pyx_obj_6mpi4py_3MPI__p_message *)o;
  if (p->buf) {
    e = (*v)(((PyObject*)p->buf), a); if (e) return e;
  }
  if (p->count) {
    e = (*v)(p->count, a); if (e) return e;
  }
  if (p->displ) {
    e = (*v)(p->displ, a); if (e) return e;
  }
  if (p->type) {
    e = (*v)(((PyObject*)p->type), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI__p_message(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_message *p = (struct __pyx_obj_6mpi4py_3MPI__p_message *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->buf);
  p->buf = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->count);
  p->count = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->displ);
  p->displ = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->type);
  p->type = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI__p_message[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__p_message = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__p_message = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__p_message = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__p_message = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

static PyTypeObject __pyx_type_6mpi4py_3MPI__p_message = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI._p_message"), /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_message), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__p_message, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number__p_message, /*tp_as_number*/
  &__pyx_tp_as_sequence__p_message, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__p_message, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__p_message, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI__p_message, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI__p_message, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI__p_message, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI__p_message, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_p2p __pyx_vtable_6mpi4py_3MPI__p_msg_p2p;

static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_msg_p2p(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)o);
  p->__pyx_vtab = __pyx_vtabptr_6mpi4py_3MPI__p_msg_p2p;
  p->_msg = Py_None; Py_INCREF(Py_None);
  if (__pyx_pf_6mpi4py_3MPI_10_p_msg_p2p___cinit__(o, __pyx_empty_tuple, NULL) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__p_msg_p2p(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)o;
  Py_XDECREF(p->_msg);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_6mpi4py_3MPI__p_msg_p2p(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)o;
  if (p->_msg) {
    e = (*v)(p->_msg, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI__p_msg_p2p(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_msg);
  p->_msg = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI__p_msg_p2p[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__p_msg_p2p = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__p_msg_p2p = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__p_msg_p2p = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__p_msg_p2p = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

static PyTypeObject __pyx_type_6mpi4py_3MPI__p_msg_p2p = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI._p_msg_p2p"), /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__p_msg_p2p, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number__p_msg_p2p, /*tp_as_number*/
  &__pyx_tp_as_sequence__p_msg_p2p, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__p_msg_p2p, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__p_msg_p2p, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI__p_msg_p2p, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI__p_msg_p2p, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI__p_msg_p2p, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI__p_msg_p2p, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco __pyx_vtable_6mpi4py_3MPI__p_msg_cco;

static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_msg_cco(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)o);
  p->__pyx_vtab = __pyx_vtabptr_6mpi4py_3MPI__p_msg_cco;
  p->_smsg = Py_None; Py_INCREF(Py_None);
  p->_rmsg = Py_None; Py_INCREF(Py_None);
  p->_rcnt = Py_None; Py_INCREF(Py_None);
  if (__pyx_pf_6mpi4py_3MPI_10_p_msg_cco___cinit__(o, __pyx_empty_tuple, NULL) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__p_msg_cco(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)o;
  Py_XDECREF(p->_smsg);
  Py_XDECREF(p->_rmsg);
  Py_XDECREF(p->_rcnt);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_6mpi4py_3MPI__p_msg_cco(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)o;
  if (p->_smsg) {
    e = (*v)(p->_smsg, a); if (e) return e;
  }
  if (p->_rmsg) {
    e = (*v)(p->_rmsg, a); if (e) return e;
  }
  if (p->_rcnt) {
    e = (*v)(p->_rcnt, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI__p_msg_cco(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_smsg);
  p->_smsg = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_rmsg);
  p->_rmsg = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_rcnt);
  p->_rcnt = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI__p_msg_cco[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__p_msg_cco = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__p_msg_cco = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__p_msg_cco = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__p_msg_cco = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

static PyTypeObject __pyx_type_6mpi4py_3MPI__p_msg_cco = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI._p_msg_cco"), /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__p_msg_cco, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number__p_msg_cco, /*tp_as_number*/
  &__pyx_tp_as_sequence__p_msg_cco, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__p_msg_cco, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__p_msg_cco, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI__p_msg_cco, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI__p_msg_cco, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI__p_msg_cco, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI__p_msg_cco, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_rma __pyx_vtable_6mpi4py_3MPI__p_msg_rma;

static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_msg_rma(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)o);
  p->__pyx_vtab = __pyx_vtabptr_6mpi4py_3MPI__p_msg_rma;
  p->_origin = Py_None; Py_INCREF(Py_None);
  p->_target = Py_None; Py_INCREF(Py_None);
  if (__pyx_pf_6mpi4py_3MPI_10_p_msg_rma___cinit__(o, __pyx_empty_tuple, NULL) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__p_msg_rma(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)o;
  Py_XDECREF(p->_origin);
  Py_XDECREF(p->_target);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_6mpi4py_3MPI__p_msg_rma(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)o;
  if (p->_origin) {
    e = (*v)(p->_origin, a); if (e) return e;
  }
  if (p->_target) {
    e = (*v)(p->_target, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI__p_msg_rma(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_origin);
  p->_origin = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_target);
  p->_target = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI__p_msg_rma[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__p_msg_rma = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__p_msg_rma = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__p_msg_rma = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__p_msg_rma = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

static PyTypeObject __pyx_type_6mpi4py_3MPI__p_msg_rma = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI._p_msg_rma"), /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__p_msg_rma, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number__p_msg_rma, /*tp_as_number*/
  &__pyx_tp_as_sequence__p_msg_rma, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__p_msg_rma, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__p_msg_rma, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI__p_msg_rma, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI__p_msg_rma, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI__p_msg_rma, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI__p_msg_rma, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_io __pyx_vtable_6mpi4py_3MPI__p_msg_io;

static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_msg_io(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)o);
  p->__pyx_vtab = __pyx_vtabptr_6mpi4py_3MPI__p_msg_io;
  p->_msg = Py_None; Py_INCREF(Py_None);
  if (__pyx_pf_6mpi4py_3MPI_9_p_msg_io___cinit__(o, __pyx_empty_tuple, NULL) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__p_msg_io(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)o;
  Py_XDECREF(p->_msg);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_6mpi4py_3MPI__p_msg_io(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)o;
  if (p->_msg) {
    e = (*v)(p->_msg, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI__p_msg_io(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_msg);
  p->_msg = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI__p_msg_io[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__p_msg_io = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__p_msg_io = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__p_msg_io = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__p_msg_io = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

static PyTypeObject __pyx_type_6mpi4py_3MPI__p_msg_io = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI._p_msg_io"), /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_msg_io), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__p_msg_io, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number__p_msg_io, /*tp_as_number*/
  &__pyx_tp_as_sequence__p_msg_io, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__p_msg_io, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__p_msg_io, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI__p_msg_io, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI__p_msg_io, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI__p_msg_io, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI__p_msg_io, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickle __pyx_vtable_6mpi4py_3MPI__p_Pickle;

static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_Pickle(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)o);
  p->__pyx_vtab = __pyx_vtabptr_6mpi4py_3MPI__p_Pickle;
  p->ob_dumps = Py_None; Py_INCREF(Py_None);
  p->ob_loads = Py_None; Py_INCREF(Py_None);
  p->ob_PROTOCOL = Py_None; Py_INCREF(Py_None);
  if (__pyx_pf_6mpi4py_3MPI_9_p_Pickle___cinit__(o, __pyx_empty_tuple, NULL) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__p_Pickle(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *p = (struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)o;
  Py_XDECREF(p->ob_dumps);
  Py_XDECREF(p->ob_loads);
  Py_XDECREF(p->ob_PROTOCOL);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_6mpi4py_3MPI__p_Pickle(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *p = (struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)o;
  if (p->ob_dumps) {
    e = (*v)(p->ob_dumps, a); if (e) return e;
  }
  if (p->ob_loads) {
    e = (*v)(p->ob_loads, a); if (e) return e;
  }
  if (p->ob_PROTOCOL) {
    e = (*v)(p->ob_PROTOCOL, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI__p_Pickle(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickle *p = (struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->ob_dumps);
  p->ob_dumps = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->ob_loads);
  p->ob_loads = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->ob_PROTOCOL);
  p->ob_PROTOCOL = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9_p_Pickle_dumps(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_9_p_Pickle_5dumps___get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_9_p_Pickle_dumps(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_6mpi4py_3MPI_9_p_Pickle_5dumps_1__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9_p_Pickle_loads(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_9_p_Pickle_5loads___get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_9_p_Pickle_loads(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_6mpi4py_3MPI_9_p_Pickle_5loads_1__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9_p_Pickle_PROTOCOL(PyObject *o, void *x) {
  return __pyx_pf_6mpi4py_3MPI_9_p_Pickle_8PROTOCOL___get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_9_p_Pickle_PROTOCOL(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_6mpi4py_3MPI_9_p_Pickle_8PROTOCOL_1__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI__p_Pickle[] = {
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI__p_Pickle[] = {
  {(char *)"dumps", __pyx_getprop_6mpi4py_3MPI_9_p_Pickle_dumps, __pyx_setprop_6mpi4py_3MPI_9_p_Pickle_dumps, 0, 0},
  {(char *)"loads", __pyx_getprop_6mpi4py_3MPI_9_p_Pickle_loads, __pyx_setprop_6mpi4py_3MPI_9_p_Pickle_loads, 0, 0},
  {(char *)"PROTOCOL", __pyx_getprop_6mpi4py_3MPI_9_p_Pickle_PROTOCOL, __pyx_setprop_6mpi4py_3MPI_9_p_Pickle_PROTOCOL, 0, 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__p_Pickle = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if PY_VERSION_HEX >= 0x02050000
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__p_Pickle = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__p_Pickle = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__p_Pickle = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

static PyTypeObject __pyx_type_6mpi4py_3MPI__p_Pickle = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI._p_Pickle"), /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_Pickle), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__p_Pickle, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number__p_Pickle, /*tp_as_number*/
  &__pyx_tp_as_sequence__p_Pickle, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__p_Pickle, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__p_Pickle, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI__p_Pickle, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI__p_Pickle, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI__p_Pickle, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI__p_Pickle, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI__p_Pickle, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyMethodDef __pyx_methods[] = {
  {0, 0, 0, 0}
};

#if PY_MAJOR_VERSION >= 3
static struct PyModuleDef __pyx_moduledef = {
    PyModuleDef_HEAD_INIT,
    __Pyx_NAMESTR("MPI"),
    0, /* m_doc */
    -1, /* m_size */
    __pyx_methods /* m_methods */,
    NULL, /* m_reload */
    NULL, /* m_traverse */
    NULL, /* m_clear */
    NULL /* m_free */
};
#endif

static __Pyx_StringTabEntry __pyx_string_tab[] = {
  {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0},
  {&__pyx_kp_s_10, __pyx_k_10, sizeof(__pyx_k_10), 0, 0, 1, 0},
  {&__pyx_kp_s_13, __pyx_k_13, sizeof(__pyx_k_13), 0, 0, 1, 0},
  {&__pyx_kp_s_147, __pyx_k_147, sizeof(__pyx_k_147), 0, 0, 1, 0},
  {&__pyx_n_s_148, __pyx_k_148, sizeof(__pyx_k_148), 0, 0, 1, 1},
  {&__pyx_kp_s_149, __pyx_k_149, sizeof(__pyx_k_149), 0, 0, 1, 0},
  {&__pyx_kp_s_15, __pyx_k_15, sizeof(__pyx_k_15), 0, 0, 1, 0},
  {&__pyx_kp_s_150, __pyx_k_150, sizeof(__pyx_k_150), 0, 0, 1, 0},
  {&__pyx_kp_s_151, __pyx_k_151, sizeof(__pyx_k_151), 0, 0, 1, 0},
  {&__pyx_kp_s_152, __pyx_k_152, sizeof(__pyx_k_152), 0, 0, 1, 0},
  {&__pyx_n_s_153, __pyx_k_153, sizeof(__pyx_k_153), 0, 0, 1, 1},
  {&__pyx_n_s_154, __pyx_k_154, sizeof(__pyx_k_154), 0, 0, 1, 1},
  {&__pyx_n_s_155, __pyx_k_155, sizeof(__pyx_k_155), 0, 0, 1, 1},
  {&__pyx_n_s_156, __pyx_k_156, sizeof(__pyx_k_156), 0, 0, 1, 1},
  {&__pyx_n_s_157, __pyx_k_157, sizeof(__pyx_k_157), 0, 0, 1, 1},
  {&__pyx_n_s_158, __pyx_k_158, sizeof(__pyx_k_158), 0, 0, 1, 1},
  {&__pyx_n_s_159, __pyx_k_159, sizeof(__pyx_k_159), 0, 0, 1, 1},
  {&__pyx_n_s_160, __pyx_k_160, sizeof(__pyx_k_160), 0, 0, 1, 1},
  {&__pyx_n_s_161, __pyx_k_161, sizeof(__pyx_k_161), 0, 0, 1, 1},
  {&__pyx_kp_s_162, __pyx_k_162, sizeof(__pyx_k_162), 0, 0, 1, 0},
  {&__pyx_n_s_163, __pyx_k_163, sizeof(__pyx_k_163), 0, 0, 1, 1},
  {&__pyx_n_s_164, __pyx_k_164, sizeof(__pyx_k_164), 0, 0, 1, 1},
  {&__pyx_n_s_165, __pyx_k_165, sizeof(__pyx_k_165), 0, 0, 1, 1},
  {&__pyx_kp_s_17, __pyx_k_17, sizeof(__pyx_k_17), 0, 0, 1, 0},
  {&__pyx_kp_s_19, __pyx_k_19, sizeof(__pyx_k_19), 0, 0, 1, 0},
  {&__pyx_kp_s_21, __pyx_k_21, sizeof(__pyx_k_21), 0, 0, 1, 0},
  {&__pyx_kp_s_22, __pyx_k_22, sizeof(__pyx_k_22), 0, 0, 1, 0},
  {&__pyx_kp_s_23, __pyx_k_23, sizeof(__pyx_k_23), 0, 0, 1, 0},
  {&__pyx_kp_s_25, __pyx_k_25, sizeof(__pyx_k_25), 0, 0, 1, 0},
  {&__pyx_kp_s_27, __pyx_k_27, sizeof(__pyx_k_27), 0, 0, 1, 0},
  {&__pyx_kp_s_28, __pyx_k_28, sizeof(__pyx_k_28), 0, 0, 1, 0},
  {&__pyx_kp_s_29, __pyx_k_29, sizeof(__pyx_k_29), 0, 0, 1, 0},
  {&__pyx_kp_s_3, __pyx_k_3, sizeof(__pyx_k_3), 0, 0, 1, 0},
  {&__pyx_kp_s_30, __pyx_k_30, sizeof(__pyx_k_30), 0, 0, 1, 0},
  {&__pyx_kp_s_31, __pyx_k_31, sizeof(__pyx_k_31), 0, 0, 1, 0},
  {&__pyx_kp_s_35, __pyx_k_35, sizeof(__pyx_k_35), 0, 0, 1, 0},
  {&__pyx_kp_s_36, __pyx_k_36, sizeof(__pyx_k_36), 0, 0, 1, 0},
  {&__pyx_kp_s_39, __pyx_k_39, sizeof(__pyx_k_39), 0, 0, 1, 0},
  {&__pyx_kp_s_4, __pyx_k_4, sizeof(__pyx_k_4), 0, 0, 1, 0},
  {&__pyx_kp_s_41, __pyx_k_41, sizeof(__pyx_k_41), 0, 0, 1, 0},
  {&__pyx_kp_s_42, __pyx_k_42, sizeof(__pyx_k_42), 0, 0, 1, 0},
  {&__pyx_kp_s_43, __pyx_k_43, sizeof(__pyx_k_43), 0, 0, 1, 0},
  {&__pyx_kp_s_46, __pyx_k_46, sizeof(__pyx_k_46), 0, 0, 1, 0},
  {&__pyx_kp_s_48, __pyx_k_48, sizeof(__pyx_k_48), 0, 0, 1, 0},
  {&__pyx_kp_s_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 0, 1, 0},
  {&__pyx_kp_b_50, __pyx_k_50, sizeof(__pyx_k_50), 0, 0, 0, 0},
  {&__pyx_kp_s_53, __pyx_k_53, sizeof(__pyx_k_53), 0, 0, 1, 0},
  {&__pyx_kp_s_54, __pyx_k_54, sizeof(__pyx_k_54), 0, 0, 1, 0},
  {&__pyx_kp_s_55, __pyx_k_55, sizeof(__pyx_k_55), 0, 0, 1, 0},
  {&__pyx_kp_s_66, __pyx_k_66, sizeof(__pyx_k_66), 0, 0, 1, 0},
  {&__pyx_kp_s_67, __pyx_k_67, sizeof(__pyx_k_67), 0, 0, 1, 0},
  {&__pyx_kp_s_77, __pyx_k_77, sizeof(__pyx_k_77), 0, 0, 1, 0},
  {&__pyx_kp_s_8, __pyx_k_8, sizeof(__pyx_k_8), 0, 0, 1, 0},
  {&__pyx_kp_s_89, __pyx_k_89, sizeof(__pyx_k_89), 0, 0, 1, 0},
  {&__pyx_kp_s_91, __pyx_k_91, sizeof(__pyx_k_91), 0, 0, 1, 0},
  {&__pyx_kp_s_93, __pyx_k_93, sizeof(__pyx_k_93), 0, 0, 1, 0},
  {&__pyx_kp_s_95, __pyx_k_95, sizeof(__pyx_k_95), 0, 0, 1, 0},
  {&__pyx_n_s__AINT, __pyx_k__AINT, sizeof(__pyx_k__AINT), 0, 0, 1, 1},
  {&__pyx_n_s__ANY_SOURCE, __pyx_k__ANY_SOURCE, sizeof(__pyx_k__ANY_SOURCE), 0, 0, 1, 1},
  {&__pyx_n_s__ANY_TAG, __pyx_k__ANY_TAG, sizeof(__pyx_k__ANY_TAG), 0, 0, 1, 1},
  {&__pyx_n_s__APPNUM, __pyx_k__APPNUM, sizeof(__pyx_k__APPNUM), 0, 0, 1, 1},
  {&__pyx_n_s__Add_error_class, __pyx_k__Add_error_class, sizeof(__pyx_k__Add_error_class), 0, 0, 1, 1},
  {&__pyx_n_s__Add_error_code, __pyx_k__Add_error_code, sizeof(__pyx_k__Add_error_code), 0, 0, 1, 1},
  {&__pyx_n_s__Add_error_string, __pyx_k__Add_error_string, sizeof(__pyx_k__Add_error_string), 0, 0, 1, 1},
  {&__pyx_n_s__Alloc_mem, __pyx_k__Alloc_mem, sizeof(__pyx_k__Alloc_mem), 0, 0, 1, 1},
  {&__pyx_n_s__Attach_buffer, __pyx_k__Attach_buffer, sizeof(__pyx_k__Attach_buffer), 0, 0, 1, 1},
  {&__pyx_n_s__AttributeError, __pyx_k__AttributeError, sizeof(__pyx_k__AttributeError), 0, 0, 1, 1},
  {&__pyx_n_s__B, __pyx_k__B, sizeof(__pyx_k__B), 0, 0, 1, 1},
  {&__pyx_n_s__BAND, __pyx_k__BAND, sizeof(__pyx_k__BAND), 0, 0, 1, 1},
  {&__pyx_n_s__BOOL, __pyx_k__BOOL, sizeof(__pyx_k__BOOL), 0, 0, 1, 1},
  {&__pyx_n_s__BOR, __pyx_k__BOR, sizeof(__pyx_k__BOR), 0, 0, 1, 1},
  {&__pyx_n_s__BOTTOM, __pyx_k__BOTTOM, sizeof(__pyx_k__BOTTOM), 0, 0, 1, 1},
  {&__pyx_n_s__BSEND_OVERHEAD, __pyx_k__BSEND_OVERHEAD, sizeof(__pyx_k__BSEND_OVERHEAD), 0, 0, 1, 1},
  {&__pyx_n_s__BXOR, __pyx_k__BXOR, sizeof(__pyx_k__BXOR), 0, 0, 1, 1},
  {&__pyx_n_s__BYTE, __pyx_k__BYTE, sizeof(__pyx_k__BYTE), 0, 0, 1, 1},
  {&__pyx_n_s__CART, __pyx_k__CART, sizeof(__pyx_k__CART), 0, 0, 1, 1},
  {&__pyx_n_s__CHAR, __pyx_k__CHAR, sizeof(__pyx_k__CHAR), 0, 0, 1, 1},
  {&__pyx_n_s__CHARACTER, __pyx_k__CHARACTER, sizeof(__pyx_k__CHARACTER), 0, 0, 1, 1},
  {&__pyx_n_s__COMBINER_CONTIGUOUS, __pyx_k__COMBINER_CONTIGUOUS, sizeof(__pyx_k__COMBINER_CONTIGUOUS), 0, 0, 1, 1},
  {&__pyx_n_s__COMBINER_DARRAY, __pyx_k__COMBINER_DARRAY, sizeof(__pyx_k__COMBINER_DARRAY), 0, 0, 1, 1},
  {&__pyx_n_s__COMBINER_DUP, __pyx_k__COMBINER_DUP, sizeof(__pyx_k__COMBINER_DUP), 0, 0, 1, 1},
  {&__pyx_n_s__COMBINER_F90_REAL, __pyx_k__COMBINER_F90_REAL, sizeof(__pyx_k__COMBINER_F90_REAL), 0, 0, 1, 1},
  {&__pyx_n_s__COMBINER_HINDEXED, __pyx_k__COMBINER_HINDEXED, sizeof(__pyx_k__COMBINER_HINDEXED), 0, 0, 1, 1},
  {&__pyx_n_s__COMBINER_HVECTOR, __pyx_k__COMBINER_HVECTOR, sizeof(__pyx_k__COMBINER_HVECTOR), 0, 0, 1, 1},
  {&__pyx_n_s__COMBINER_INDEXED, __pyx_k__COMBINER_INDEXED, sizeof(__pyx_k__COMBINER_INDEXED), 0, 0, 1, 1},
  {&__pyx_n_s__COMBINER_NAMED, __pyx_k__COMBINER_NAMED, sizeof(__pyx_k__COMBINER_NAMED), 0, 0, 1, 1},
  {&__pyx_n_s__COMBINER_RESIZED, __pyx_k__COMBINER_RESIZED, sizeof(__pyx_k__COMBINER_RESIZED), 0, 0, 1, 1},
  {&__pyx_n_s__COMBINER_STRUCT, __pyx_k__COMBINER_STRUCT, sizeof(__pyx_k__COMBINER_STRUCT), 0, 0, 1, 1},
  {&__pyx_n_s__COMBINER_SUBARRAY, __pyx_k__COMBINER_SUBARRAY, sizeof(__pyx_k__COMBINER_SUBARRAY), 0, 0, 1, 1},
  {&__pyx_n_s__COMBINER_VECTOR, __pyx_k__COMBINER_VECTOR, sizeof(__pyx_k__COMBINER_VECTOR), 0, 0, 1, 1},
  {&__pyx_n_s__COMM_NULL, __pyx_k__COMM_NULL, sizeof(__pyx_k__COMM_NULL), 0, 0, 1, 1},
  {&__pyx_n_s__COMM_SELF, __pyx_k__COMM_SELF, sizeof(__pyx_k__COMM_SELF), 0, 0, 1, 1},
  {&__pyx_n_s__COMM_WORLD, __pyx_k__COMM_WORLD, sizeof(__pyx_k__COMM_WORLD), 0, 0, 1, 1},
  {&__pyx_n_s__COMPLEX, __pyx_k__COMPLEX, sizeof(__pyx_k__COMPLEX), 0, 0, 1, 1},
  {&__pyx_n_s__COMPLEX16, __pyx_k__COMPLEX16, sizeof(__pyx_k__COMPLEX16), 0, 0, 1, 1},
  {&__pyx_n_s__COMPLEX32, __pyx_k__COMPLEX32, sizeof(__pyx_k__COMPLEX32), 0, 0, 1, 1},
  {&__pyx_n_s__COMPLEX4, __pyx_k__COMPLEX4, sizeof(__pyx_k__COMPLEX4), 0, 0, 1, 1},
  {&__pyx_n_s__COMPLEX8, __pyx_k__COMPLEX8, sizeof(__pyx_k__COMPLEX8), 0, 0, 1, 1},
  {&__pyx_n_s__CONGRUENT, __pyx_k__CONGRUENT, sizeof(__pyx_k__CONGRUENT), 0, 0, 1, 1},
  {&__pyx_n_s__CONTIGUOUS, __pyx_k__CONTIGUOUS, sizeof(__pyx_k__CONTIGUOUS), 0, 0, 1, 1},
  {&__pyx_n_s__C_BOOL, __pyx_k__C_BOOL, sizeof(__pyx_k__C_BOOL), 0, 0, 1, 1},
  {&__pyx_n_s__C_COMPLEX, __pyx_k__C_COMPLEX, sizeof(__pyx_k__C_COMPLEX), 0, 0, 1, 1},
  {&__pyx_n_s__C_DOUBLE_COMPLEX, __pyx_k__C_DOUBLE_COMPLEX, sizeof(__pyx_k__C_DOUBLE_COMPLEX), 0, 0, 1, 1},
  {&__pyx_n_s__C_FLOAT_COMPLEX, __pyx_k__C_FLOAT_COMPLEX, sizeof(__pyx_k__C_FLOAT_COMPLEX), 0, 0, 1, 1},
  {&__pyx_n_s__Close_port, __pyx_k__Close_port, sizeof(__pyx_k__Close_port), 0, 0, 1, 1},
  {&__pyx_n_s__Compare, __pyx_k__Compare, sizeof(__pyx_k__Compare), 0, 0, 1, 1},
  {&__pyx_n_s__Compute_dims, __pyx_k__Compute_dims, sizeof(__pyx_k__Compute_dims), 0, 0, 1, 1},
  {&__pyx_n_s__Create, __pyx_k__Create, sizeof(__pyx_k__Create), 0, 0, 1, 1},
  {&__pyx_n_s__Create_dup, __pyx_k__Create_dup, sizeof(__pyx_k__Create_dup), 0, 0, 1, 1},
  {&__pyx_n_s__Create_f90_complex, __pyx_k__Create_f90_complex, sizeof(__pyx_k__Create_f90_complex), 0, 0, 1, 1},
  {&__pyx_n_s__Create_f90_integer, __pyx_k__Create_f90_integer, sizeof(__pyx_k__Create_f90_integer), 0, 0, 1, 1},
  {&__pyx_n_s__Create_f90_real, __pyx_k__Create_f90_real, sizeof(__pyx_k__Create_f90_real), 0, 0, 1, 1},
  {&__pyx_n_s__Create_keyval, __pyx_k__Create_keyval, sizeof(__pyx_k__Create_keyval), 0, 0, 1, 1},
  {&__pyx_n_s__Create_resized, __pyx_k__Create_resized, sizeof(__pyx_k__Create_resized), 0, 0, 1, 1},
  {&__pyx_n_s__Create_struct, __pyx_k__Create_struct, sizeof(__pyx_k__Create_struct), 0, 0, 1, 1},
  {&__pyx_n_s__D, __pyx_k__D, sizeof(__pyx_k__D), 0, 0, 1, 1},
  {&__pyx_n_s__DARRAY, __pyx_k__DARRAY, sizeof(__pyx_k__DARRAY), 0, 0, 1, 1},
  {&__pyx_n_s__DATATYPE_NULL, __pyx_k__DATATYPE_NULL, sizeof(__pyx_k__DATATYPE_NULL), 0, 0, 1, 1},
  {&__pyx_n_s__DISP_CUR, __pyx_k__DISP_CUR, sizeof(__pyx_k__DISP_CUR), 0, 0, 1, 1},
  {&__pyx_n_s__DISTRIBUTE_BLOCK, __pyx_k__DISTRIBUTE_BLOCK, sizeof(__pyx_k__DISTRIBUTE_BLOCK), 0, 0, 1, 1},
  {&__pyx_n_s__DISTRIBUTE_CYCLIC, __pyx_k__DISTRIBUTE_CYCLIC, sizeof(__pyx_k__DISTRIBUTE_CYCLIC), 0, 0, 1, 1},
  {&__pyx_n_s__DISTRIBUTE_NONE, __pyx_k__DISTRIBUTE_NONE, sizeof(__pyx_k__DISTRIBUTE_NONE), 0, 0, 1, 1},
  {&__pyx_n_s__DIST_GRAPH, __pyx_k__DIST_GRAPH, sizeof(__pyx_k__DIST_GRAPH), 0, 0, 1, 1},
  {&__pyx_n_s__DOUBLE, __pyx_k__DOUBLE, sizeof(__pyx_k__DOUBLE), 0, 0, 1, 1},
  {&__pyx_n_s__DOUBLE_COMPLEX, __pyx_k__DOUBLE_COMPLEX, sizeof(__pyx_k__DOUBLE_COMPLEX), 0, 0, 1, 1},
  {&__pyx_n_s__DOUBLE_INT, __pyx_k__DOUBLE_INT, sizeof(__pyx_k__DOUBLE_INT), 0, 0, 1, 1},
  {&__pyx_n_s__DOUBLE_PRECISION, __pyx_k__DOUBLE_PRECISION, sizeof(__pyx_k__DOUBLE_PRECISION), 0, 0, 1, 1},
  {&__pyx_n_s__DUP, __pyx_k__DUP, sizeof(__pyx_k__DUP), 0, 0, 1, 1},
  {&__pyx_n_s__Delete, __pyx_k__Delete, sizeof(__pyx_k__Delete), 0, 0, 1, 1},
  {&__pyx_n_s__Detach_buffer, __pyx_k__Detach_buffer, sizeof(__pyx_k__Detach_buffer), 0, 0, 1, 1},
  {&__pyx_n_s__Difference, __pyx_k__Difference, sizeof(__pyx_k__Difference), 0, 0, 1, 1},
  {&__pyx_n_s__Dup, __pyx_k__Dup, sizeof(__pyx_k__Dup), 0, 0, 1, 1},
  {&__pyx_n_s__ERRHANDLER_NULL, __pyx_k__ERRHANDLER_NULL, sizeof(__pyx_k__ERRHANDLER_NULL), 0, 0, 1, 1},
  {&__pyx_n_s__ERRORS_ARE_FATAL, __pyx_k__ERRORS_ARE_FATAL, sizeof(__pyx_k__ERRORS_ARE_FATAL), 0, 0, 1, 1},
  {&__pyx_n_s__ERRORS_RETURN, __pyx_k__ERRORS_RETURN, sizeof(__pyx_k__ERRORS_RETURN), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_ACCESS, __pyx_k__ERR_ACCESS, sizeof(__pyx_k__ERR_ACCESS), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_AMODE, __pyx_k__ERR_AMODE, sizeof(__pyx_k__ERR_AMODE), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_ARG, __pyx_k__ERR_ARG, sizeof(__pyx_k__ERR_ARG), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_ASSERT, __pyx_k__ERR_ASSERT, sizeof(__pyx_k__ERR_ASSERT), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_BAD_FILE, __pyx_k__ERR_BAD_FILE, sizeof(__pyx_k__ERR_BAD_FILE), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_BASE, __pyx_k__ERR_BASE, sizeof(__pyx_k__ERR_BASE), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_BUFFER, __pyx_k__ERR_BUFFER, sizeof(__pyx_k__ERR_BUFFER), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_COMM, __pyx_k__ERR_COMM, sizeof(__pyx_k__ERR_COMM), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_CONVERSION, __pyx_k__ERR_CONVERSION, sizeof(__pyx_k__ERR_CONVERSION), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_COUNT, __pyx_k__ERR_COUNT, sizeof(__pyx_k__ERR_COUNT), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_DIMS, __pyx_k__ERR_DIMS, sizeof(__pyx_k__ERR_DIMS), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_DISP, __pyx_k__ERR_DISP, sizeof(__pyx_k__ERR_DISP), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_DUP_DATAREP, __pyx_k__ERR_DUP_DATAREP, sizeof(__pyx_k__ERR_DUP_DATAREP), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_FILE, __pyx_k__ERR_FILE, sizeof(__pyx_k__ERR_FILE), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_FILE_EXISTS, __pyx_k__ERR_FILE_EXISTS, sizeof(__pyx_k__ERR_FILE_EXISTS), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_FILE_IN_USE, __pyx_k__ERR_FILE_IN_USE, sizeof(__pyx_k__ERR_FILE_IN_USE), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_GROUP, __pyx_k__ERR_GROUP, sizeof(__pyx_k__ERR_GROUP), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_INFO, __pyx_k__ERR_INFO, sizeof(__pyx_k__ERR_INFO), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_INFO_KEY, __pyx_k__ERR_INFO_KEY, sizeof(__pyx_k__ERR_INFO_KEY), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_INFO_NOKEY, __pyx_k__ERR_INFO_NOKEY, sizeof(__pyx_k__ERR_INFO_NOKEY), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_INFO_VALUE, __pyx_k__ERR_INFO_VALUE, sizeof(__pyx_k__ERR_INFO_VALUE), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_INTERN, __pyx_k__ERR_INTERN, sizeof(__pyx_k__ERR_INTERN), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_IN_STATUS, __pyx_k__ERR_IN_STATUS, sizeof(__pyx_k__ERR_IN_STATUS), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_IO, __pyx_k__ERR_IO, sizeof(__pyx_k__ERR_IO), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_KEYVAL, __pyx_k__ERR_KEYVAL, sizeof(__pyx_k__ERR_KEYVAL), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_LASTCODE, __pyx_k__ERR_LASTCODE, sizeof(__pyx_k__ERR_LASTCODE), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_LOCKTYPE, __pyx_k__ERR_LOCKTYPE, sizeof(__pyx_k__ERR_LOCKTYPE), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_NAME, __pyx_k__ERR_NAME, sizeof(__pyx_k__ERR_NAME), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_NOT_SAME, __pyx_k__ERR_NOT_SAME, sizeof(__pyx_k__ERR_NOT_SAME), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_NO_MEM, __pyx_k__ERR_NO_MEM, sizeof(__pyx_k__ERR_NO_MEM), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_NO_SPACE, __pyx_k__ERR_NO_SPACE, sizeof(__pyx_k__ERR_NO_SPACE), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_NO_SUCH_FILE, __pyx_k__ERR_NO_SUCH_FILE, sizeof(__pyx_k__ERR_NO_SUCH_FILE), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_OP, __pyx_k__ERR_OP, sizeof(__pyx_k__ERR_OP), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_OTHER, __pyx_k__ERR_OTHER, sizeof(__pyx_k__ERR_OTHER), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_PENDING, __pyx_k__ERR_PENDING, sizeof(__pyx_k__ERR_PENDING), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_PORT, __pyx_k__ERR_PORT, sizeof(__pyx_k__ERR_PORT), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_QUOTA, __pyx_k__ERR_QUOTA, sizeof(__pyx_k__ERR_QUOTA), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_RANK, __pyx_k__ERR_RANK, sizeof(__pyx_k__ERR_RANK), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_READ_ONLY, __pyx_k__ERR_READ_ONLY, sizeof(__pyx_k__ERR_READ_ONLY), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_REQUEST, __pyx_k__ERR_REQUEST, sizeof(__pyx_k__ERR_REQUEST), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_RMA_CONFLICT, __pyx_k__ERR_RMA_CONFLICT, sizeof(__pyx_k__ERR_RMA_CONFLICT), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_RMA_SYNC, __pyx_k__ERR_RMA_SYNC, sizeof(__pyx_k__ERR_RMA_SYNC), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_ROOT, __pyx_k__ERR_ROOT, sizeof(__pyx_k__ERR_ROOT), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_SERVICE, __pyx_k__ERR_SERVICE, sizeof(__pyx_k__ERR_SERVICE), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_SIZE, __pyx_k__ERR_SIZE, sizeof(__pyx_k__ERR_SIZE), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_SPAWN, __pyx_k__ERR_SPAWN, sizeof(__pyx_k__ERR_SPAWN), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_TAG, __pyx_k__ERR_TAG, sizeof(__pyx_k__ERR_TAG), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_TOPOLOGY, __pyx_k__ERR_TOPOLOGY, sizeof(__pyx_k__ERR_TOPOLOGY), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_TRUNCATE, __pyx_k__ERR_TRUNCATE, sizeof(__pyx_k__ERR_TRUNCATE), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_TYPE, __pyx_k__ERR_TYPE, sizeof(__pyx_k__ERR_TYPE), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_UNKNOWN, __pyx_k__ERR_UNKNOWN, sizeof(__pyx_k__ERR_UNKNOWN), 0, 0, 1, 1},
  {&__pyx_n_s__ERR_WIN, __pyx_k__ERR_WIN, sizeof(__pyx_k__ERR_WIN), 0, 0, 1, 1},
  {&__pyx_n_s__Exception, __pyx_k__Exception, sizeof(__pyx_k__Exception), 0, 0, 1, 1},
  {&__pyx_n_s__F, __pyx_k__F, sizeof(__pyx_k__F), 0, 0, 1, 1},
  {&__pyx_n_s__F90_COMPLEX, __pyx_k__F90_COMPLEX, sizeof(__pyx_k__F90_COMPLEX), 0, 0, 1, 1},
  {&__pyx_n_s__F90_INTEGER, __pyx_k__F90_INTEGER, sizeof(__pyx_k__F90_INTEGER), 0, 0, 1, 1},
  {&__pyx_n_s__F90_REAL, __pyx_k__F90_REAL, sizeof(__pyx_k__F90_REAL), 0, 0, 1, 1},
  {&__pyx_n_s__FILE_NULL, __pyx_k__FILE_NULL, sizeof(__pyx_k__FILE_NULL), 0, 0, 1, 1},
  {&__pyx_n_s__FLOAT, __pyx_k__FLOAT, sizeof(__pyx_k__FLOAT), 0, 0, 1, 1},
  {&__pyx_n_s__FLOAT_INT, __pyx_k__FLOAT_INT, sizeof(__pyx_k__FLOAT_INT), 0, 0, 1, 1},
  {&__pyx_n_s__F_BOOL, __pyx_k__F_BOOL, sizeof(__pyx_k__F_BOOL), 0, 0, 1, 1},
  {&__pyx_n_s__F_COMPLEX, __pyx_k__F_COMPLEX, sizeof(__pyx_k__F_COMPLEX), 0, 0, 1, 1},
  {&__pyx_n_s__F_DOUBLE, __pyx_k__F_DOUBLE, sizeof(__pyx_k__F_DOUBLE), 0, 0, 1, 1},
  {&__pyx_n_s__F_DOUBLE_COMPLEX, __pyx_k__F_DOUBLE_COMPLEX, sizeof(__pyx_k__F_DOUBLE_COMPLEX), 0, 0, 1, 1},
  {&__pyx_n_s__F_FLOAT, __pyx_k__F_FLOAT, sizeof(__pyx_k__F_FLOAT), 0, 0, 1, 1},
  {&__pyx_n_s__F_FLOAT_COMPLEX, __pyx_k__F_FLOAT_COMPLEX, sizeof(__pyx_k__F_FLOAT_COMPLEX), 0, 0, 1, 1},
  {&__pyx_n_s__F_INT, __pyx_k__F_INT, sizeof(__pyx_k__F_INT), 0, 0, 1, 1},
  {&__pyx_n_s__Finalize, __pyx_k__Finalize, sizeof(__pyx_k__Finalize), 0, 0, 1, 1},
  {&__pyx_n_s__Free_keyval, __pyx_k__Free_keyval, sizeof(__pyx_k__Free_keyval), 0, 0, 1, 1},
  {&__pyx_n_s__Free_mem, __pyx_k__Free_mem, sizeof(__pyx_k__Free_mem), 0, 0, 1, 1},
  {&__pyx_n_s__G, __pyx_k__G, sizeof(__pyx_k__G), 0, 0, 1, 1},
  {&__pyx_n_s__GRAPH, __pyx_k__GRAPH, sizeof(__pyx_k__GRAPH), 0, 0, 1, 1},
  {&__pyx_n_s__GROUP_EMPTY, __pyx_k__GROUP_EMPTY, sizeof(__pyx_k__GROUP_EMPTY), 0, 0, 1, 1},
  {&__pyx_n_s__GROUP_NULL, __pyx_k__GROUP_NULL, sizeof(__pyx_k__GROUP_NULL), 0, 0, 1, 1},
  {&__pyx_n_s__Get, __pyx_k__Get, sizeof(__pyx_k__Get), 0, 0, 1, 1},
  {&__pyx_n_s__Get_address, __pyx_k__Get_address, sizeof(__pyx_k__Get_address), 0, 0, 1, 1},
  {&__pyx_n_s__Get_amode, __pyx_k__Get_amode, sizeof(__pyx_k__Get_amode), 0, 0, 1, 1},
  {&__pyx_n_s__Get_atomicity, __pyx_k__Get_atomicity, sizeof(__pyx_k__Get_atomicity), 0, 0, 1, 1},
  {&__pyx_n_s__Get_count, __pyx_k__Get_count, sizeof(__pyx_k__Get_count), 0, 0, 1, 1},
  {&__pyx_n_s__Get_dim, __pyx_k__Get_dim, sizeof(__pyx_k__Get_dim), 0, 0, 1, 1},
  {&__pyx_n_s__Get_error, __pyx_k__Get_error, sizeof(__pyx_k__Get_error), 0, 0, 1, 1},
  {&__pyx_n_s__Get_error_class, __pyx_k__Get_error_class, sizeof(__pyx_k__Get_error_class), 0, 0, 1, 1},
  {&__pyx_n_s__Get_error_code, __pyx_k__Get_error_code, sizeof(__pyx_k__Get_error_code), 0, 0, 1, 1},
  {&__pyx_n_s__Get_error_string, __pyx_k__Get_error_string, sizeof(__pyx_k__Get_error_string), 0, 0, 1, 1},
  {&__pyx_n_s__Get_group, __pyx_k__Get_group, sizeof(__pyx_k__Get_group), 0, 0, 1, 1},
  {&__pyx_n_s__Get_info, __pyx_k__Get_info, sizeof(__pyx_k__Get_info), 0, 0, 1, 1},
  {&__pyx_n_s__Get_name, __pyx_k__Get_name, sizeof(__pyx_k__Get_name), 0, 0, 1, 1},
  {&__pyx_n_s__Get_neighbors, __pyx_k__Get_neighbors, sizeof(__pyx_k__Get_neighbors), 0, 0, 1, 1},
  {&__pyx_n_s__Get_neighbors_count, __pyx_k__Get_neighbors_count, sizeof(__pyx_k__Get_neighbors_count), 0, 0, 1, 1},
  {&__pyx_n_s__Get_nkeys, __pyx_k__Get_nkeys, sizeof(__pyx_k__Get_nkeys), 0, 0, 1, 1},
  {&__pyx_n_s__Get_nthkey, __pyx_k__Get_nthkey, sizeof(__pyx_k__Get_nthkey), 0, 0, 1, 1},
  {&__pyx_n_s__Get_parent, __pyx_k__Get_parent, sizeof(__pyx_k__Get_parent), 0, 0, 1, 1},
  {&__pyx_n_s__Get_processor_name, __pyx_k__Get_processor_name, sizeof(__pyx_k__Get_processor_name), 0, 0, 1, 1},
  {&__pyx_n_s__Get_rank, __pyx_k__Get_rank, sizeof(__pyx_k__Get_rank), 0, 0, 1, 1},
  {&__pyx_n_s__Get_remote_group, __pyx_k__Get_remote_group, sizeof(__pyx_k__Get_remote_group), 0, 0, 1, 1},
  {&__pyx_n_s__Get_remote_size, __pyx_k__Get_remote_size, sizeof(__pyx_k__Get_remote_size), 0, 0, 1, 1},
  {&__pyx_n_s__Get_size, __pyx_k__Get_size, sizeof(__pyx_k__Get_size), 0, 0, 1, 1},
  {&__pyx_n_s__Get_source, __pyx_k__Get_source, sizeof(__pyx_k__Get_source), 0, 0, 1, 1},
  {&__pyx_n_s__Get_tag, __pyx_k__Get_tag, sizeof(__pyx_k__Get_tag), 0, 0, 1, 1},
  {&__pyx_n_s__Get_topo, __pyx_k__Get_topo, sizeof(__pyx_k__Get_topo), 0, 0, 1, 1},
  {&__pyx_n_s__Get_topology, __pyx_k__Get_topology, sizeof(__pyx_k__Get_topology), 0, 0, 1, 1},
  {&__pyx_n_s__Get_version, __pyx_k__Get_version, sizeof(__pyx_k__Get_version), 0, 0, 1, 1},
  {&__pyx_n_s__H, __pyx_k__H, sizeof(__pyx_k__H), 0, 0, 1, 1},
  {&__pyx_n_s__HIGHEST_PROTOCOL, __pyx_k__HIGHEST_PROTOCOL, sizeof(__pyx_k__HIGHEST_PROTOCOL), 0, 0, 1, 1},
  {&__pyx_n_s__HINDEXED, __pyx_k__HINDEXED, sizeof(__pyx_k__HINDEXED), 0, 0, 1, 1},
  {&__pyx_n_s__HOST, __pyx_k__HOST, sizeof(__pyx_k__HOST), 0, 0, 1, 1},
  {&__pyx_n_s__HVECTOR, __pyx_k__HVECTOR, sizeof(__pyx_k__HVECTOR), 0, 0, 1, 1},
  {&__pyx_n_s__I, __pyx_k__I, sizeof(__pyx_k__I), 0, 0, 1, 1},
  {&__pyx_n_s__IDENT, __pyx_k__IDENT, sizeof(__pyx_k__IDENT), 0, 0, 1, 1},
  {&__pyx_n_s__INDEXED, __pyx_k__INDEXED, sizeof(__pyx_k__INDEXED), 0, 0, 1, 1},
  {&__pyx_n_s__INDEXED_BLOCK, __pyx_k__INDEXED_BLOCK, sizeof(__pyx_k__INDEXED_BLOCK), 0, 0, 1, 1},
  {&__pyx_n_s__INFO_NULL, __pyx_k__INFO_NULL, sizeof(__pyx_k__INFO_NULL), 0, 0, 1, 1},
  {&__pyx_n_s__INT, __pyx_k__INT, sizeof(__pyx_k__INT), 0, 0, 1, 1},
  {&__pyx_n_s__INT16_T, __pyx_k__INT16_T, sizeof(__pyx_k__INT16_T), 0, 0, 1, 1},
  {&__pyx_n_s__INT32_T, __pyx_k__INT32_T, sizeof(__pyx_k__INT32_T), 0, 0, 1, 1},
  {&__pyx_n_s__INT64_T, __pyx_k__INT64_T, sizeof(__pyx_k__INT64_T), 0, 0, 1, 1},
  {&__pyx_n_s__INT8_T, __pyx_k__INT8_T, sizeof(__pyx_k__INT8_T), 0, 0, 1, 1},
  {&__pyx_n_s__INTEGER, __pyx_k__INTEGER, sizeof(__pyx_k__INTEGER), 0, 0, 1, 1},
  {&__pyx_n_s__INTEGER1, __pyx_k__INTEGER1, sizeof(__pyx_k__INTEGER1), 0, 0, 1, 1},
  {&__pyx_n_s__INTEGER16, __pyx_k__INTEGER16, sizeof(__pyx_k__INTEGER16), 0, 0, 1, 1},
  {&__pyx_n_s__INTEGER2, __pyx_k__INTEGER2, sizeof(__pyx_k__INTEGER2), 0, 0, 1, 1},
  {&__pyx_n_s__INTEGER4, __pyx_k__INTEGER4, sizeof(__pyx_k__INTEGER4), 0, 0, 1, 1},
  {&__pyx_n_s__INTEGER8, __pyx_k__INTEGER8, sizeof(__pyx_k__INTEGER8), 0, 0, 1, 1},
  {&__pyx_n_s__INT_INT, __pyx_k__INT_INT, sizeof(__pyx_k__INT_INT), 0, 0, 1, 1},
  {&__pyx_n_s__IN_PLACE, __pyx_k__IN_PLACE, sizeof(__pyx_k__IN_PLACE), 0, 0, 1, 1},
  {&__pyx_n_s__IO, __pyx_k__IO, sizeof(__pyx_k__IO), 0, 0, 1, 1},
  {&__pyx_n_s__ImportError, __pyx_k__ImportError, sizeof(__pyx_k__ImportError), 0, 0, 1, 1},
  {&__pyx_n_s__Init, __pyx_k__Init, sizeof(__pyx_k__Init), 0, 0, 1, 1},
  {&__pyx_n_s__Init_thread, __pyx_k__Init_thread, sizeof(__pyx_k__Init_thread), 0, 0, 1, 1},
  {&__pyx_n_s__Intersect, __pyx_k__Intersect, sizeof(__pyx_k__Intersect), 0, 0, 1, 1},
  {&__pyx_n_s__Is_cancelled, __pyx_k__Is_cancelled, sizeof(__pyx_k__Is_cancelled), 0, 0, 1, 1},
  {&__pyx_n_s__Is_commutative, __pyx_k__Is_commutative, sizeof(__pyx_k__Is_commutative), 0, 0, 1, 1},
  {&__pyx_n_s__Is_finalized, __pyx_k__Is_finalized, sizeof(__pyx_k__Is_finalized), 0, 0, 1, 1},
  {&__pyx_n_s__Is_initialized, __pyx_k__Is_initialized, sizeof(__pyx_k__Is_initialized), 0, 0, 1, 1},
  {&__pyx_n_s__Is_inter, __pyx_k__Is_inter, sizeof(__pyx_k__Is_inter), 0, 0, 1, 1},
  {&__pyx_n_s__Is_intra, __pyx_k__Is_intra, sizeof(__pyx_k__Is_intra), 0, 0, 1, 1},
  {&__pyx_n_s__Is_thread_main, __pyx_k__Is_thread_main, sizeof(__pyx_k__Is_thread_main), 0, 0, 1, 1},
  {&__pyx_n_s__Join, __pyx_k__Join, sizeof(__pyx_k__Join), 0, 0, 1, 1},
  {&__pyx_n_s__KEYVAL_INVALID, __pyx_k__KEYVAL_INVALID, sizeof(__pyx_k__KEYVAL_INVALID), 0, 0, 1, 1},
  {&__pyx_n_s__KeyError, __pyx_k__KeyError, sizeof(__pyx_k__KeyError), 0, 0, 1, 1},
  {&__pyx_n_s__L, __pyx_k__L, sizeof(__pyx_k__L), 0, 0, 1, 1},
  {&__pyx_n_s__LAND, __pyx_k__LAND, sizeof(__pyx_k__LAND), 0, 0, 1, 1},
  {&__pyx_n_s__LASTUSEDCODE, __pyx_k__LASTUSEDCODE, sizeof(__pyx_k__LASTUSEDCODE), 0, 0, 1, 1},
  {&__pyx_n_s__LB, __pyx_k__LB, sizeof(__pyx_k__LB), 0, 0, 1, 1},
  {&__pyx_n_s__LOCK_EXCLUSIVE, __pyx_k__LOCK_EXCLUSIVE, sizeof(__pyx_k__LOCK_EXCLUSIVE), 0, 0, 1, 1},
  {&__pyx_n_s__LOCK_SHARED, __pyx_k__LOCK_SHARED, sizeof(__pyx_k__LOCK_SHARED), 0, 0, 1, 1},
  {&__pyx_n_s__LOGICAL, __pyx_k__LOGICAL, sizeof(__pyx_k__LOGICAL), 0, 0, 1, 1},
  {&__pyx_n_s__LOGICAL1, __pyx_k__LOGICAL1, sizeof(__pyx_k__LOGICAL1), 0, 0, 1, 1},
  {&__pyx_n_s__LOGICAL2, __pyx_k__LOGICAL2, sizeof(__pyx_k__LOGICAL2), 0, 0, 1, 1},
  {&__pyx_n_s__LOGICAL4, __pyx_k__LOGICAL4, sizeof(__pyx_k__LOGICAL4), 0, 0, 1, 1},
  {&__pyx_n_s__LOGICAL8, __pyx_k__LOGICAL8, sizeof(__pyx_k__LOGICAL8), 0, 0, 1, 1},
  {&__pyx_n_s__LONG, __pyx_k__LONG, sizeof(__pyx_k__LONG), 0, 0, 1, 1},
  {&__pyx_n_s__LONG_DOUBLE, __pyx_k__LONG_DOUBLE, sizeof(__pyx_k__LONG_DOUBLE), 0, 0, 1, 1},
  {&__pyx_n_s__LONG_DOUBLE_INT, __pyx_k__LONG_DOUBLE_INT, sizeof(__pyx_k__LONG_DOUBLE_INT), 0, 0, 1, 1},
  {&__pyx_n_s__LONG_INT, __pyx_k__LONG_INT, sizeof(__pyx_k__LONG_INT), 0, 0, 1, 1},
  {&__pyx_n_s__LONG_LONG, __pyx_k__LONG_LONG, sizeof(__pyx_k__LONG_LONG), 0, 0, 1, 1},
  {&__pyx_n_s__LOR, __pyx_k__LOR, sizeof(__pyx_k__LOR), 0, 0, 1, 1},
  {&__pyx_n_s__LXOR, __pyx_k__LXOR, sizeof(__pyx_k__LXOR), 0, 0, 1, 1},
  {&__pyx_n_s__Lookup_name, __pyx_k__Lookup_name, sizeof(__pyx_k__Lookup_name), 0, 0, 1, 1},
  {&__pyx_n_s__MAX, __pyx_k__MAX, sizeof(__pyx_k__MAX), 0, 0, 1, 1},
  {&__pyx_n_s__MAXLOC, __pyx_k__MAXLOC, sizeof(__pyx_k__MAXLOC), 0, 0, 1, 1},
  {&__pyx_n_s__MAX_DATAREP_STRING, __pyx_k__MAX_DATAREP_STRING, sizeof(__pyx_k__MAX_DATAREP_STRING), 0, 0, 1, 1},
  {&__pyx_n_s__MAX_ERROR_STRING, __pyx_k__MAX_ERROR_STRING, sizeof(__pyx_k__MAX_ERROR_STRING), 0, 0, 1, 1},
  {&__pyx_n_s__MAX_INFO_KEY, __pyx_k__MAX_INFO_KEY, sizeof(__pyx_k__MAX_INFO_KEY), 0, 0, 1, 1},
  {&__pyx_n_s__MAX_INFO_VAL, __pyx_k__MAX_INFO_VAL, sizeof(__pyx_k__MAX_INFO_VAL), 0, 0, 1, 1},
  {&__pyx_n_s__MAX_OBJECT_NAME, __pyx_k__MAX_OBJECT_NAME, sizeof(__pyx_k__MAX_OBJECT_NAME), 0, 0, 1, 1},
  {&__pyx_n_s__MAX_PORT_NAME, __pyx_k__MAX_PORT_NAME, sizeof(__pyx_k__MAX_PORT_NAME), 0, 0, 1, 1},
  {&__pyx_n_s__MAX_PROCESSOR_NAME, __pyx_k__MAX_PROCESSOR_NAME, sizeof(__pyx_k__MAX_PROCESSOR_NAME), 0, 0, 1, 1},
  {&__pyx_n_s__MIN, __pyx_k__MIN, sizeof(__pyx_k__MIN), 0, 0, 1, 1},
  {&__pyx_n_s__MINLOC, __pyx_k__MINLOC, sizeof(__pyx_k__MINLOC), 0, 0, 1, 1},
  {&__pyx_n_s__MODE_APPEND, __pyx_k__MODE_APPEND, sizeof(__pyx_k__MODE_APPEND), 0, 0, 1, 1},
  {&__pyx_n_s__MODE_CREATE, __pyx_k__MODE_CREATE, sizeof(__pyx_k__MODE_CREATE), 0, 0, 1, 1},
  {&__pyx_n_s__MODE_EXCL, __pyx_k__MODE_EXCL, sizeof(__pyx_k__MODE_EXCL), 0, 0, 1, 1},
  {&__pyx_n_s__MODE_NOCHECK, __pyx_k__MODE_NOCHECK, sizeof(__pyx_k__MODE_NOCHECK), 0, 0, 1, 1},
  {&__pyx_n_s__MODE_NOPRECEDE, __pyx_k__MODE_NOPRECEDE, sizeof(__pyx_k__MODE_NOPRECEDE), 0, 0, 1, 1},
  {&__pyx_n_s__MODE_NOPUT, __pyx_k__MODE_NOPUT, sizeof(__pyx_k__MODE_NOPUT), 0, 0, 1, 1},
  {&__pyx_n_s__MODE_NOSTORE, __pyx_k__MODE_NOSTORE, sizeof(__pyx_k__MODE_NOSTORE), 0, 0, 1, 1},
  {&__pyx_n_s__MODE_NOSUCCEED, __pyx_k__MODE_NOSUCCEED, sizeof(__pyx_k__MODE_NOSUCCEED), 0, 0, 1, 1},
  {&__pyx_n_s__MODE_RDONLY, __pyx_k__MODE_RDONLY, sizeof(__pyx_k__MODE_RDONLY), 0, 0, 1, 1},
  {&__pyx_n_s__MODE_RDWR, __pyx_k__MODE_RDWR, sizeof(__pyx_k__MODE_RDWR), 0, 0, 1, 1},
  {&__pyx_n_s__MODE_SEQUENTIAL, __pyx_k__MODE_SEQUENTIAL, sizeof(__pyx_k__MODE_SEQUENTIAL), 0, 0, 1, 1},
  {&__pyx_n_s__MODE_UNIQUE_OPEN, __pyx_k__MODE_UNIQUE_OPEN, sizeof(__pyx_k__MODE_UNIQUE_OPEN), 0, 0, 1, 1},
  {&__pyx_n_s__MODE_WRONLY, __pyx_k__MODE_WRONLY, sizeof(__pyx_k__MODE_WRONLY), 0, 0, 1, 1},
  {&__pyx_n_s__Match_size, __pyx_k__Match_size, sizeof(__pyx_k__Match_size), 0, 0, 1, 1},
  {&__pyx_n_s__NotImplemented, __pyx_k__NotImplemented, sizeof(__pyx_k__NotImplemented), 0, 0, 1, 1},
  {&__pyx_n_s__NotImplementedError, __pyx_k__NotImplementedError, sizeof(__pyx_k__NotImplementedError), 0, 0, 1, 1},
  {&__pyx_n_s__OFFSET, __pyx_k__OFFSET, sizeof(__pyx_k__OFFSET), 0, 0, 1, 1},
  {&__pyx_n_s__OP_NULL, __pyx_k__OP_NULL, sizeof(__pyx_k__OP_NULL), 0, 0, 1, 1},
  {&__pyx_n_s__ORDER_C, __pyx_k__ORDER_C, sizeof(__pyx_k__ORDER_C), 0, 0, 1, 1},
  {&__pyx_n_s__ORDER_F, __pyx_k__ORDER_F, sizeof(__pyx_k__ORDER_F), 0, 0, 1, 1},
  {&__pyx_n_s__ORDER_FORTRAN, __pyx_k__ORDER_FORTRAN, sizeof(__pyx_k__ORDER_FORTRAN), 0, 0, 1, 1},
  {&__pyx_n_s__Open, __pyx_k__Open, sizeof(__pyx_k__Open), 0, 0, 1, 1},
  {&__pyx_n_s__Open_port, __pyx_k__Open_port, sizeof(__pyx_k__Open_port), 0, 0, 1, 1},
  {&__pyx_n_s__PACKED, __pyx_k__PACKED, sizeof(__pyx_k__PACKED), 0, 0, 1, 1},
  {&__pyx_n_s__PROC_NULL, __pyx_k__PROC_NULL, sizeof(__pyx_k__PROC_NULL), 0, 0, 1, 1},
  {&__pyx_n_s__PROD, __pyx_k__PROD, sizeof(__pyx_k__PROD), 0, 0, 1, 1},
  {&__pyx_n_s__Pcontrol, __pyx_k__Pcontrol, sizeof(__pyx_k__Pcontrol), 0, 0, 1, 1},
  {&__pyx_n_s__Publish_name, __pyx_k__Publish_name, sizeof(__pyx_k__Publish_name), 0, 0, 1, 1},
  {&__pyx_n_s__Q, __pyx_k__Q, sizeof(__pyx_k__Q), 0, 0, 1, 1},
  {&__pyx_n_s__Query_thread, __pyx_k__Query_thread, sizeof(__pyx_k__Query_thread), 0, 0, 1, 1},
  {&__pyx_n_s__REAL, __pyx_k__REAL, sizeof(__pyx_k__REAL), 0, 0, 1, 1},
  {&__pyx_n_s__REAL16, __pyx_k__REAL16, sizeof(__pyx_k__REAL16), 0, 0, 1, 1},
  {&__pyx_n_s__REAL2, __pyx_k__REAL2, sizeof(__pyx_k__REAL2), 0, 0, 1, 1},
  {&__pyx_n_s__REAL4, __pyx_k__REAL4, sizeof(__pyx_k__REAL4), 0, 0, 1, 1},
  {&__pyx_n_s__REAL8, __pyx_k__REAL8, sizeof(__pyx_k__REAL8), 0, 0, 1, 1},
  {&__pyx_n_s__REPLACE, __pyx_k__REPLACE, sizeof(__pyx_k__REPLACE), 0, 0, 1, 1},
  {&__pyx_n_s__REQUEST_NULL, __pyx_k__REQUEST_NULL, sizeof(__pyx_k__REQUEST_NULL), 0, 0, 1, 1},
  {&__pyx_n_s__RESIZED, __pyx_k__RESIZED, sizeof(__pyx_k__RESIZED), 0, 0, 1, 1},
  {&__pyx_n_s__ROOT, __pyx_k__ROOT, sizeof(__pyx_k__ROOT), 0, 0, 1, 1},
  {&__pyx_n_s__Resized, __pyx_k__Resized, sizeof(__pyx_k__Resized), 0, 0, 1, 1},
  {&__pyx_n_s__RuntimeError, __pyx_k__RuntimeError, sizeof(__pyx_k__RuntimeError), 0, 0, 1, 1},
  {&__pyx_n_s__SEEK_CUR, __pyx_k__SEEK_CUR, sizeof(__pyx_k__SEEK_CUR), 0, 0, 1, 1},
  {&__pyx_n_s__SEEK_END, __pyx_k__SEEK_END, sizeof(__pyx_k__SEEK_END), 0, 0, 1, 1},
  {&__pyx_n_s__SEEK_SET, __pyx_k__SEEK_SET, sizeof(__pyx_k__SEEK_SET), 0, 0, 1, 1},
  {&__pyx_n_s__SHORT, __pyx_k__SHORT, sizeof(__pyx_k__SHORT), 0, 0, 1, 1},
  {&__pyx_n_s__SHORT_INT, __pyx_k__SHORT_INT, sizeof(__pyx_k__SHORT_INT), 0, 0, 1, 1},
  {&__pyx_n_s__SIGNED_CHAR, __pyx_k__SIGNED_CHAR, sizeof(__pyx_k__SIGNED_CHAR), 0, 0, 1, 1},
  {&__pyx_n_s__SIGNED_INT, __pyx_k__SIGNED_INT, sizeof(__pyx_k__SIGNED_INT), 0, 0, 1, 1},
  {&__pyx_n_s__SIGNED_LONG, __pyx_k__SIGNED_LONG, sizeof(__pyx_k__SIGNED_LONG), 0, 0, 1, 1},
  {&__pyx_n_s__SIGNED_LONG_LONG, __pyx_k__SIGNED_LONG_LONG, sizeof(__pyx_k__SIGNED_LONG_LONG), 0, 0, 1, 1},
  {&__pyx_n_s__SIGNED_SHORT, __pyx_k__SIGNED_SHORT, sizeof(__pyx_k__SIGNED_SHORT), 0, 0, 1, 1},
  {&__pyx_n_s__SIMILAR, __pyx_k__SIMILAR, sizeof(__pyx_k__SIMILAR), 0, 0, 1, 1},
  {&__pyx_n_s__SINT16_T, __pyx_k__SINT16_T, sizeof(__pyx_k__SINT16_T), 0, 0, 1, 1},
  {&__pyx_n_s__SINT32_T, __pyx_k__SINT32_T, sizeof(__pyx_k__SINT32_T), 0, 0, 1, 1},
  {&__pyx_n_s__SINT64_T, __pyx_k__SINT64_T, sizeof(__pyx_k__SINT64_T), 0, 0, 1, 1},
  {&__pyx_n_s__SINT8_T, __pyx_k__SINT8_T, sizeof(__pyx_k__SINT8_T), 0, 0, 1, 1},
  {&__pyx_n_s__STRUCT, __pyx_k__STRUCT, sizeof(__pyx_k__STRUCT), 0, 0, 1, 1},
  {&__pyx_n_s__SUBARRAY, __pyx_k__SUBARRAY, sizeof(__pyx_k__SUBARRAY), 0, 0, 1, 1},
  {&__pyx_n_s__SUBVERSION, __pyx_k__SUBVERSION, sizeof(__pyx_k__SUBVERSION), 0, 0, 1, 1},
  {&__pyx_n_s__SUCCESS, __pyx_k__SUCCESS, sizeof(__pyx_k__SUCCESS), 0, 0, 1, 1},
  {&__pyx_n_s__SUM, __pyx_k__SUM, sizeof(__pyx_k__SUM), 0, 0, 1, 1},
  {&__pyx_n_s__Set, __pyx_k__Set, sizeof(__pyx_k__Set), 0, 0, 1, 1},
  {&__pyx_n_s__Set_atomicity, __pyx_k__Set_atomicity, sizeof(__pyx_k__Set_atomicity), 0, 0, 1, 1},
  {&__pyx_n_s__Set_cancelled, __pyx_k__Set_cancelled, sizeof(__pyx_k__Set_cancelled), 0, 0, 1, 1},
  {&__pyx_n_s__Set_error, __pyx_k__Set_error, sizeof(__pyx_k__Set_error), 0, 0, 1, 1},
  {&__pyx_n_s__Set_info, __pyx_k__Set_info, sizeof(__pyx_k__Set_info), 0, 0, 1, 1},
  {&__pyx_n_s__Set_name, __pyx_k__Set_name, sizeof(__pyx_k__Set_name), 0, 0, 1, 1},
  {&__pyx_n_s__Set_source, __pyx_k__Set_source, sizeof(__pyx_k__Set_source), 0, 0, 1, 1},
  {&__pyx_n_s__Set_tag, __pyx_k__Set_tag, sizeof(__pyx_k__Set_tag), 0, 0, 1, 1},
  {&__pyx_n_s__Start, __pyx_k__Start, sizeof(__pyx_k__Start), 0, 0, 1, 1},
  {&__pyx_n_s__Startall, __pyx_k__Startall, sizeof(__pyx_k__Startall), 0, 0, 1, 1},
  {&__pyx_n_s__StringIO, __pyx_k__StringIO, sizeof(__pyx_k__StringIO), 0, 0, 1, 1},
  {&__pyx_n_s__SystemError, __pyx_k__SystemError, sizeof(__pyx_k__SystemError), 0, 0, 1, 1},
  {&__pyx_n_s__TAG_UB, __pyx_k__TAG_UB, sizeof(__pyx_k__TAG_UB), 0, 0, 1, 1},
  {&__pyx_n_s__THREAD_FUNNELED, __pyx_k__THREAD_FUNNELED, sizeof(__pyx_k__THREAD_FUNNELED), 0, 0, 1, 1},
  {&__pyx_n_s__THREAD_MULTIPLE, __pyx_k__THREAD_MULTIPLE, sizeof(__pyx_k__THREAD_MULTIPLE), 0, 0, 1, 1},
  {&__pyx_n_s__THREAD_SERIALIZED, __pyx_k__THREAD_SERIALIZED, sizeof(__pyx_k__THREAD_SERIALIZED), 0, 0, 1, 1},
  {&__pyx_n_s__THREAD_SINGLE, __pyx_k__THREAD_SINGLE, sizeof(__pyx_k__THREAD_SINGLE), 0, 0, 1, 1},
  {&__pyx_n_s__TWOINT, __pyx_k__TWOINT, sizeof(__pyx_k__TWOINT), 0, 0, 1, 1},
  {&__pyx_n_s__TYPECLASS_COMPLEX, __pyx_k__TYPECLASS_COMPLEX, sizeof(__pyx_k__TYPECLASS_COMPLEX), 0, 0, 1, 1},
  {&__pyx_n_s__TYPECLASS_INTEGER, __pyx_k__TYPECLASS_INTEGER, sizeof(__pyx_k__TYPECLASS_INTEGER), 0, 0, 1, 1},
  {&__pyx_n_s__TYPECLASS_REAL, __pyx_k__TYPECLASS_REAL, sizeof(__pyx_k__TYPECLASS_REAL), 0, 0, 1, 1},
  {&__pyx_n_s__Testall, __pyx_k__Testall, sizeof(__pyx_k__Testall), 0, 0, 1, 1},
  {&__pyx_n_s__Testany, __pyx_k__Testany, sizeof(__pyx_k__Testany), 0, 0, 1, 1},
  {&__pyx_n_s__Testsome, __pyx_k__Testsome, sizeof(__pyx_k__Testsome), 0, 0, 1, 1},
  {&__pyx_n_s__Translate_ranks, __pyx_k__Translate_ranks, sizeof(__pyx_k__Translate_ranks), 0, 0, 1, 1},
  {&__pyx_n_s__TypeError, __pyx_k__TypeError, sizeof(__pyx_k__TypeError), 0, 0, 1, 1},
  {&__pyx_n_s__UB, __pyx_k__UB, sizeof(__pyx_k__UB), 0, 0, 1, 1},
  {&__pyx_n_s__UINT16_T, __pyx_k__UINT16_T, sizeof(__pyx_k__UINT16_T), 0, 0, 1, 1},
  {&__pyx_n_s__UINT32_T, __pyx_k__UINT32_T, sizeof(__pyx_k__UINT32_T), 0, 0, 1, 1},
  {&__pyx_n_s__UINT64_T, __pyx_k__UINT64_T, sizeof(__pyx_k__UINT64_T), 0, 0, 1, 1},
  {&__pyx_n_s__UINT8_T, __pyx_k__UINT8_T, sizeof(__pyx_k__UINT8_T), 0, 0, 1, 1},
  {&__pyx_n_s__UNDEFINED, __pyx_k__UNDEFINED, sizeof(__pyx_k__UNDEFINED), 0, 0, 1, 1},
  {&__pyx_n_s__UNEQUAL, __pyx_k__UNEQUAL, sizeof(__pyx_k__UNEQUAL), 0, 0, 1, 1},
  {&__pyx_n_s__UNIVERSE_SIZE, __pyx_k__UNIVERSE_SIZE, sizeof(__pyx_k__UNIVERSE_SIZE), 0, 0, 1, 1},
  {&__pyx_n_s__UNSIGNED, __pyx_k__UNSIGNED, sizeof(__pyx_k__UNSIGNED), 0, 0, 1, 1},
  {&__pyx_n_s__UNSIGNED_CHAR, __pyx_k__UNSIGNED_CHAR, sizeof(__pyx_k__UNSIGNED_CHAR), 0, 0, 1, 1},
  {&__pyx_n_s__UNSIGNED_INT, __pyx_k__UNSIGNED_INT, sizeof(__pyx_k__UNSIGNED_INT), 0, 0, 1, 1},
  {&__pyx_n_s__UNSIGNED_LONG, __pyx_k__UNSIGNED_LONG, sizeof(__pyx_k__UNSIGNED_LONG), 0, 0, 1, 1},
  {&__pyx_n_s__UNSIGNED_LONG_LONG, __pyx_k__UNSIGNED_LONG_LONG, sizeof(__pyx_k__UNSIGNED_LONG_LONG), 0, 0, 1, 1},
  {&__pyx_n_s__UNSIGNED_SHORT, __pyx_k__UNSIGNED_SHORT, sizeof(__pyx_k__UNSIGNED_SHORT), 0, 0, 1, 1},
  {&__pyx_n_s__Union, __pyx_k__Union, sizeof(__pyx_k__Union), 0, 0, 1, 1},
  {&__pyx_n_s__Unpublish_name, __pyx_k__Unpublish_name, sizeof(__pyx_k__Unpublish_name), 0, 0, 1, 1},
  {&__pyx_n_s__VECTOR, __pyx_k__VECTOR, sizeof(__pyx_k__VECTOR), 0, 0, 1, 1},
  {&__pyx_n_s__VERSION, __pyx_k__VERSION, sizeof(__pyx_k__VERSION), 0, 0, 1, 1},
  {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1},
  {&__pyx_n_s__WCHAR, __pyx_k__WCHAR, sizeof(__pyx_k__WCHAR), 0, 0, 1, 1},
  {&__pyx_n_s__WIN_BASE, __pyx_k__WIN_BASE, sizeof(__pyx_k__WIN_BASE), 0, 0, 1, 1},
  {&__pyx_n_s__WIN_DISP_UNIT, __pyx_k__WIN_DISP_UNIT, sizeof(__pyx_k__WIN_DISP_UNIT), 0, 0, 1, 1},
  {&__pyx_n_s__WIN_NULL, __pyx_k__WIN_NULL, sizeof(__pyx_k__WIN_NULL), 0, 0, 1, 1},
  {&__pyx_n_s__WIN_SIZE, __pyx_k__WIN_SIZE, sizeof(__pyx_k__WIN_SIZE), 0, 0, 1, 1},
  {&__pyx_n_s__WTIME_IS_GLOBAL, __pyx_k__WTIME_IS_GLOBAL, sizeof(__pyx_k__WTIME_IS_GLOBAL), 0, 0, 1, 1},
  {&__pyx_n_s__Waitall, __pyx_k__Waitall, sizeof(__pyx_k__Waitall), 0, 0, 1, 1},
  {&__pyx_n_s__Waitany, __pyx_k__Waitany, sizeof(__pyx_k__Waitany), 0, 0, 1, 1},
  {&__pyx_n_s__Waitsome, __pyx_k__Waitsome, sizeof(__pyx_k__Waitsome), 0, 0, 1, 1},
  {&__pyx_n_s__Wtick, __pyx_k__Wtick, sizeof(__pyx_k__Wtick), 0, 0, 1, 1},
  {&__pyx_n_s__Wtime, __pyx_k__Wtime, sizeof(__pyx_k__Wtime), 0, 0, 1, 1},
  {&__pyx_n_s__Zd, __pyx_k__Zd, sizeof(__pyx_k__Zd), 0, 0, 1, 1},
  {&__pyx_n_s__Zf, __pyx_k__Zf, sizeof(__pyx_k__Zf), 0, 0, 1, 1},
  {&__pyx_n_s__Zg, __pyx_k__Zg, sizeof(__pyx_k__Zg), 0, 0, 1, 1},
  {&__pyx_n_s____CTypeDict__, __pyx_k____CTypeDict__, sizeof(__pyx_k____CTypeDict__), 0, 0, 1, 1},
  {&__pyx_n_s____FTypeDict__, __pyx_k____FTypeDict__, sizeof(__pyx_k____FTypeDict__), 0, 0, 1, 1},
  {&__pyx_n_s____TypeDict__, __pyx_k____TypeDict__, sizeof(__pyx_k____TypeDict__), 0, 0, 1, 1},
  {&__pyx_n_s____bool__, __pyx_k____bool__, sizeof(__pyx_k____bool__), 0, 0, 1, 1},
  {&__pyx_n_s____call__, __pyx_k____call__, sizeof(__pyx_k____call__), 0, 0, 1, 1},
  {&__pyx_n_s____doc__, __pyx_k____doc__, sizeof(__pyx_k____doc__), 0, 0, 1, 1},
  {&__pyx_n_s____eq__, __pyx_k____eq__, sizeof(__pyx_k____eq__), 0, 0, 1, 1},
  {&__pyx_n_s____ge__, __pyx_k____ge__, sizeof(__pyx_k____ge__), 0, 0, 1, 1},
  {&__pyx_n_s____gt__, __pyx_k____gt__, sizeof(__pyx_k____gt__), 0, 0, 1, 1},
  {&__pyx_n_s____init__, __pyx_k____init__, sizeof(__pyx_k____init__), 0, 0, 1, 1},
  {&__pyx_n_s____int__, __pyx_k____int__, sizeof(__pyx_k____int__), 0, 0, 1, 1},
  {&__pyx_n_s____le__, __pyx_k____le__, sizeof(__pyx_k____le__), 0, 0, 1, 1},
  {&__pyx_n_s____lt__, __pyx_k____lt__, sizeof(__pyx_k____lt__), 0, 0, 1, 1},
  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
  {&__pyx_n_s____ne__, __pyx_k____ne__, sizeof(__pyx_k____ne__), 0, 0, 1, 1},
  {&__pyx_n_s____repr__, __pyx_k____repr__, sizeof(__pyx_k____repr__), 0, 0, 1, 1},
  {&__pyx_n_s____str__, __pyx_k____str__, sizeof(__pyx_k____str__), 0, 0, 1, 1},
  {&__pyx_n_s___p_pickle, __pyx_k___p_pickle, sizeof(__pyx_k___p_pickle), 0, 0, 1, 1},
  {&__pyx_n_s__amode, __pyx_k__amode, sizeof(__pyx_k__amode), 0, 0, 1, 1},
  {&__pyx_n_s__arg, __pyx_k__arg, sizeof(__pyx_k__arg), 0, 0, 1, 1},
  {&__pyx_n_s__args, __pyx_k__args, sizeof(__pyx_k__args), 0, 0, 1, 1},
  {&__pyx_n_s__array, __pyx_k__array, sizeof(__pyx_k__array), 0, 0, 1, 1},
  {&__pyx_n_s__assertion, __pyx_k__assertion, sizeof(__pyx_k__assertion), 0, 0, 1, 1},
  {&__pyx_n_s__attrval, __pyx_k__attrval, sizeof(__pyx_k__attrval), 0, 0, 1, 1},
  {&__pyx_n_s__b, __pyx_k__b, sizeof(__pyx_k__b), 0, 0, 1, 1},
  {&__pyx_n_s__blocklength, __pyx_k__blocklength, sizeof(__pyx_k__blocklength), 0, 0, 1, 1},
  {&__pyx_n_s__blocklengths, __pyx_k__blocklengths, sizeof(__pyx_k__blocklengths), 0, 0, 1, 1},
  {&__pyx_n_s__buf, __pyx_k__buf, sizeof(__pyx_k__buf), 0, 0, 1, 1},
  {&__pyx_n_s__c, __pyx_k__c, sizeof(__pyx_k__c), 0, 0, 1, 1},
  {&__pyx_n_s__c16, __pyx_k__c16, sizeof(__pyx_k__c16), 0, 0, 1, 1},
  {&__pyx_n_s__c32, __pyx_k__c32, sizeof(__pyx_k__c32), 0, 0, 1, 1},
  {&__pyx_n_s__c4, __pyx_k__c4, sizeof(__pyx_k__c4), 0, 0, 1, 1},
  {&__pyx_n_s__c8, __pyx_k__c8, sizeof(__pyx_k__c8), 0, 0, 1, 1},
  {&__pyx_n_s__cPickle, __pyx_k__cPickle, sizeof(__pyx_k__cPickle), 0, 0, 1, 1},
  {&__pyx_n_s__cStringIO, __pyx_k__cStringIO, sizeof(__pyx_k__cStringIO), 0, 0, 1, 1},
  {&__pyx_n_s__cancel_fn, __pyx_k__cancel_fn, sizeof(__pyx_k__cancel_fn), 0, 0, 1, 1},
  {&__pyx_n_s__char, __pyx_k__char, sizeof(__pyx_k__char), 0, 0, 1, 1},
  {&__pyx_n_s__color, __pyx_k__color, sizeof(__pyx_k__color), 0, 0, 1, 1},
  {&__pyx_n_s__comm, __pyx_k__comm, sizeof(__pyx_k__comm), 0, 0, 1, 1},
  {&__pyx_n_s__comm1, __pyx_k__comm1, sizeof(__pyx_k__comm1), 0, 0, 1, 1},
  {&__pyx_n_s__comm2, __pyx_k__comm2, sizeof(__pyx_k__comm2), 0, 0, 1, 1},
  {&__pyx_n_s__command, __pyx_k__command, sizeof(__pyx_k__command), 0, 0, 1, 1},
  {&__pyx_n_s__commute, __pyx_k__commute, sizeof(__pyx_k__commute), 0, 0, 1, 1},
  {&__pyx_n_s__coords, __pyx_k__coords, sizeof(__pyx_k__coords), 0, 0, 1, 1},
  {&__pyx_n_s__copy_fn, __pyx_k__copy_fn, sizeof(__pyx_k__copy_fn), 0, 0, 1, 1},
  {&__pyx_n_s__count, __pyx_k__count, sizeof(__pyx_k__count), 0, 0, 1, 1},
  {&__pyx_n_s__d, __pyx_k__d, sizeof(__pyx_k__d), 0, 0, 1, 1},
  {&__pyx_n_s__dargs, __pyx_k__dargs, sizeof(__pyx_k__dargs), 0, 0, 1, 1},
  {&__pyx_n_s__datarep, __pyx_k__datarep, sizeof(__pyx_k__datarep), 0, 0, 1, 1},
  {&__pyx_n_s__datatype, __pyx_k__datatype, sizeof(__pyx_k__datatype), 0, 0, 1, 1},
  {&__pyx_n_s__datatypes, __pyx_k__datatypes, sizeof(__pyx_k__datatypes), 0, 0, 1, 1},
  {&__pyx_n_s__default, __pyx_k__default, sizeof(__pyx_k__default), 0, 0, 1, 1},
  {&__pyx_n_s__degrees, __pyx_k__degrees, sizeof(__pyx_k__degrees), 0, 0, 1, 1},
  {&__pyx_n_s__delete_fn, __pyx_k__delete_fn, sizeof(__pyx_k__delete_fn), 0, 0, 1, 1},
  {&__pyx_n_s__dest, __pyx_k__dest, sizeof(__pyx_k__dest), 0, 0, 1, 1},
  {&__pyx_n_s__destinations, __pyx_k__destinations, sizeof(__pyx_k__destinations), 0, 0, 1, 1},
  {&__pyx_n_s__destweights, __pyx_k__destweights, sizeof(__pyx_k__destweights), 0, 0, 1, 1},
  {&__pyx_n_s__dims, __pyx_k__dims, sizeof(__pyx_k__dims), 0, 0, 1, 1},
  {&__pyx_n_s__direction, __pyx_k__direction, sizeof(__pyx_k__direction), 0, 0, 1, 1},
  {&__pyx_n_s__disp, __pyx_k__disp, sizeof(__pyx_k__disp), 0, 0, 1, 1},
  {&__pyx_n_s__disp_unit, __pyx_k__disp_unit, sizeof(__pyx_k__disp_unit), 0, 0, 1, 1},
  {&__pyx_n_s__displacements, __pyx_k__displacements, sizeof(__pyx_k__displacements), 0, 0, 1, 1},
  {&__pyx_n_s__distribs, __pyx_k__distribs, sizeof(__pyx_k__distribs), 0, 0, 1, 1},
  {&__pyx_n_s__doc, __pyx_k__doc, sizeof(__pyx_k__doc), 0, 0, 1, 1},
  {&__pyx_n_s__dtype, __pyx_k__dtype, sizeof(__pyx_k__dtype), 0, 0, 1, 1},
  {&__pyx_n_s__dumps, __pyx_k__dumps, sizeof(__pyx_k__dumps), 0, 0, 1, 1},
  {&__pyx_n_s__edges, __pyx_k__edges, sizeof(__pyx_k__edges), 0, 0, 1, 1},
  {&__pyx_n_s__errcodes, __pyx_k__errcodes, sizeof(__pyx_k__errcodes), 0, 0, 1, 1},
  {&__pyx_n_s__errhandler, __pyx_k__errhandler, sizeof(__pyx_k__errhandler), 0, 0, 1, 1},
  {&__pyx_n_s__error, __pyx_k__error, sizeof(__pyx_k__error), 0, 0, 1, 1},
  {&__pyx_n_s__error_class, __pyx_k__error_class, sizeof(__pyx_k__error_class), 0, 0, 1, 1},
  {&__pyx_n_s__error_code, __pyx_k__error_code, sizeof(__pyx_k__error_code), 0, 0, 1, 1},
  {&__pyx_n_s__error_string, __pyx_k__error_string, sizeof(__pyx_k__error_string), 0, 0, 1, 1},
  {&__pyx_n_s__errorclass, __pyx_k__errorclass, sizeof(__pyx_k__errorclass), 0, 0, 1, 1},
  {&__pyx_n_s__errorcode, __pyx_k__errorcode, sizeof(__pyx_k__errorcode), 0, 0, 1, 1},
  {&__pyx_n_s__etype, __pyx_k__etype, sizeof(__pyx_k__etype), 0, 0, 1, 1},
  {&__pyx_n_s__extent, __pyx_k__extent, sizeof(__pyx_k__extent), 0, 0, 1, 1},
  {&__pyx_n_s__f, __pyx_k__f, sizeof(__pyx_k__f), 0, 0, 1, 1},
  {&__pyx_n_s__f16, __pyx_k__f16, sizeof(__pyx_k__f16), 0, 0, 1, 1},
  {&__pyx_n_s__f2, __pyx_k__f2, sizeof(__pyx_k__f2), 0, 0, 1, 1},
  {&__pyx_n_s__f2py, __pyx_k__f2py, sizeof(__pyx_k__f2py), 0, 0, 1, 1},
  {&__pyx_n_s__f4, __pyx_k__f4, sizeof(__pyx_k__f4), 0, 0, 1, 1},
  {&__pyx_n_s__f8, __pyx_k__f8, sizeof(__pyx_k__f8), 0, 0, 1, 1},
  {&__pyx_n_s__fd, __pyx_k__fd, sizeof(__pyx_k__fd), 0, 0, 1, 1},
  {&__pyx_n_s__file, __pyx_k__file, sizeof(__pyx_k__file), 0, 0, 1, 1},
  {&__pyx_n_s__filename, __pyx_k__filename, sizeof(__pyx_k__filename), 0, 0, 1, 1},
  {&__pyx_n_s__filetype, __pyx_k__filetype, sizeof(__pyx_k__filetype), 0, 0, 1, 1},
  {&__pyx_n_s__finalize, __pyx_k__finalize, sizeof(__pyx_k__finalize), 0, 0, 1, 1},
  {&__pyx_n_s__flag, __pyx_k__flag, sizeof(__pyx_k__flag), 0, 0, 1, 1},
  {&__pyx_n_s__flush, __pyx_k__flush, sizeof(__pyx_k__flush), 0, 0, 1, 1},
  {&__pyx_n_s__free_fn, __pyx_k__free_fn, sizeof(__pyx_k__free_fn), 0, 0, 1, 1},
  {&__pyx_n_s__function, __pyx_k__function, sizeof(__pyx_k__function), 0, 0, 1, 1},
  {&__pyx_n_s__funneled, __pyx_k__funneled, sizeof(__pyx_k__funneled), 0, 0, 1, 1},
  {&__pyx_n_s__g, __pyx_k__g, sizeof(__pyx_k__g), 0, 0, 1, 1},
  {&__pyx_n_s__get_vendor, __pyx_k__get_vendor, sizeof(__pyx_k__get_vendor), 0, 0, 1, 1},
  {&__pyx_n_s__group, __pyx_k__group, sizeof(__pyx_k__group), 0, 0, 1, 1},
  {&__pyx_n_s__group1, __pyx_k__group1, sizeof(__pyx_k__group1), 0, 0, 1, 1},
  {&__pyx_n_s__group2, __pyx_k__group2, sizeof(__pyx_k__group2), 0, 0, 1, 1},
  {&__pyx_n_s__gsizes, __pyx_k__gsizes, sizeof(__pyx_k__gsizes), 0, 0, 1, 1},
  {&__pyx_n_s__h, __pyx_k__h, sizeof(__pyx_k__h), 0, 0, 1, 1},
  {&__pyx_n_s__high, __pyx_k__high, sizeof(__pyx_k__high), 0, 0, 1, 1},
  {&__pyx_n_s__i, __pyx_k__i, sizeof(__pyx_k__i), 0, 0, 1, 1},
  {&__pyx_n_s__i1, __pyx_k__i1, sizeof(__pyx_k__i1), 0, 0, 1, 1},
  {&__pyx_n_s__i16, __pyx_k__i16, sizeof(__pyx_k__i16), 0, 0, 1, 1},
  {&__pyx_n_s__i2, __pyx_k__i2, sizeof(__pyx_k__i2), 0, 0, 1, 1},
  {&__pyx_n_s__i4, __pyx_k__i4, sizeof(__pyx_k__i4), 0, 0, 1, 1},
  {&__pyx_n_s__i8, __pyx_k__i8, sizeof(__pyx_k__i8), 0, 0, 1, 1},
  {&__pyx_n_s__ierr, __pyx_k__ierr, sizeof(__pyx_k__ierr), 0, 0, 1, 1},
  {&__pyx_n_s__inbuf, __pyx_k__inbuf, sizeof(__pyx_k__inbuf), 0, 0, 1, 1},
  {&__pyx_n_s__index, __pyx_k__index, sizeof(__pyx_k__index), 0, 0, 1, 1},
  {&__pyx_n_s__info, __pyx_k__info, sizeof(__pyx_k__info), 0, 0, 1, 1},
  {&__pyx_n_s__initialize, __pyx_k__initialize, sizeof(__pyx_k__initialize), 0, 0, 1, 1},
  {&__pyx_n_s__inoutbuf, __pyx_k__inoutbuf, sizeof(__pyx_k__inoutbuf), 0, 0, 1, 1},
  {&__pyx_n_s__insert, __pyx_k__insert, sizeof(__pyx_k__insert), 0, 0, 1, 1},
  {&__pyx_n_s__join, __pyx_k__join, sizeof(__pyx_k__join), 0, 0, 1, 1},
  {&__pyx_n_s__kargs, __pyx_k__kargs, sizeof(__pyx_k__kargs), 0, 0, 1, 1},
  {&__pyx_n_s__key, __pyx_k__key, sizeof(__pyx_k__key), 0, 0, 1, 1},
  {&__pyx_n_s__keys, __pyx_k__keys, sizeof(__pyx_k__keys), 0, 0, 1, 1},
  {&__pyx_n_s__keyval, __pyx_k__keyval, sizeof(__pyx_k__keyval), 0, 0, 1, 1},
  {&__pyx_n_s__l, __pyx_k__l, sizeof(__pyx_k__l), 0, 0, 1, 1},
  {&__pyx_n_s__lb, __pyx_k__lb, sizeof(__pyx_k__lb), 0, 0, 1, 1},
  {&__pyx_n_s__level, __pyx_k__level, sizeof(__pyx_k__level), 0, 0, 1, 1},
  {&__pyx_n_s__load, __pyx_k__load, sizeof(__pyx_k__load), 0, 0, 1, 1},
  {&__pyx_n_s__loads, __pyx_k__loads, sizeof(__pyx_k__loads), 0, 0, 1, 1},
  {&__pyx_n_s__local_leader, __pyx_k__local_leader, sizeof(__pyx_k__local_leader), 0, 0, 1, 1},
  {&__pyx_n_s__location, __pyx_k__location, sizeof(__pyx_k__location), 0, 0, 1, 1},
  {&__pyx_n_s__lock_type, __pyx_k__lock_type, sizeof(__pyx_k__lock_type), 0, 0, 1, 1},
  {&__pyx_n_s__maxlen, __pyx_k__maxlen, sizeof(__pyx_k__maxlen), 0, 0, 1, 1},
  {&__pyx_n_s__maxprocs, __pyx_k__maxprocs, sizeof(__pyx_k__maxprocs), 0, 0, 1, 1},
  {&__pyx_n_s__memory, __pyx_k__memory, sizeof(__pyx_k__memory), 0, 0, 1, 1},
  {&__pyx_n_s__mpi4py, __pyx_k__mpi4py, sizeof(__pyx_k__mpi4py), 0, 0, 1, 1},
  {&__pyx_n_s__multiple, __pyx_k__multiple, sizeof(__pyx_k__multiple), 0, 0, 1, 1},
  {&__pyx_n_s__n, __pyx_k__n, sizeof(__pyx_k__n), 0, 0, 1, 1},
  {&__pyx_n_s__name, __pyx_k__name, sizeof(__pyx_k__name), 0, 0, 1, 1},
  {&__pyx_n_s__nnodes, __pyx_k__nnodes, sizeof(__pyx_k__nnodes), 0, 0, 1, 1},
  {&__pyx_n_s__no, __pyx_k__no, sizeof(__pyx_k__no), 0, 0, 1, 1},
  {&__pyx_n_s__ob_mpi, __pyx_k__ob_mpi, sizeof(__pyx_k__ob_mpi), 0, 0, 1, 1},
  {&__pyx_n_s__obj, __pyx_k__obj, sizeof(__pyx_k__obj), 0, 0, 1, 1},
  {&__pyx_n_s__offset, __pyx_k__offset, sizeof(__pyx_k__offset), 0, 0, 1, 1},
  {&__pyx_n_s__op, __pyx_k__op, sizeof(__pyx_k__op), 0, 0, 1, 1},
  {&__pyx_n_s__order, __pyx_k__order, sizeof(__pyx_k__order), 0, 0, 1, 1},
  {&__pyx_n_s__origin, __pyx_k__origin, sizeof(__pyx_k__origin), 0, 0, 1, 1},
  {&__pyx_n_s__other, __pyx_k__other, sizeof(__pyx_k__other), 0, 0, 1, 1},
  {&__pyx_n_s__outbuf, __pyx_k__outbuf, sizeof(__pyx_k__outbuf), 0, 0, 1, 1},
  {&__pyx_n_s__p, __pyx_k__p, sizeof(__pyx_k__p), 0, 0, 1, 1},
  {&__pyx_n_s__peer_comm, __pyx_k__peer_comm, sizeof(__pyx_k__peer_comm), 0, 0, 1, 1},
  {&__pyx_n_s__periods, __pyx_k__periods, sizeof(__pyx_k__periods), 0, 0, 1, 1},
  {&__pyx_n_s__pickle, __pyx_k__pickle, sizeof(__pyx_k__pickle), 0, 0, 1, 1},
  {&__pyx_n_s__pop, __pyx_k__pop, sizeof(__pyx_k__pop), 0, 0, 1, 1},
  {&__pyx_n_s__port_name, __pyx_k__port_name, sizeof(__pyx_k__port_name), 0, 0, 1, 1},
  {&__pyx_n_s__position, __pyx_k__position, sizeof(__pyx_k__position), 0, 0, 1, 1},
  {&__pyx_n_s__print_exc, __pyx_k__print_exc, sizeof(__pyx_k__print_exc), 0, 0, 1, 1},
  {&__pyx_n_s__property, __pyx_k__property, sizeof(__pyx_k__property), 0, 0, 1, 1},
  {&__pyx_n_s__psizes, __pyx_k__psizes, sizeof(__pyx_k__psizes), 0, 0, 1, 1},
  {&__pyx_n_s__q, __pyx_k__q, sizeof(__pyx_k__q), 0, 0, 1, 1},
  {&__pyx_n_s__query_fn, __pyx_k__query_fn, sizeof(__pyx_k__query_fn), 0, 0, 1, 1},
  {&__pyx_n_s__r, __pyx_k__r, sizeof(__pyx_k__r), 0, 0, 1, 1},
  {&__pyx_n_s__rank, __pyx_k__rank, sizeof(__pyx_k__rank), 0, 0, 1, 1},
  {&__pyx_n_s__ranks, __pyx_k__ranks, sizeof(__pyx_k__ranks), 0, 0, 1, 1},
  {&__pyx_n_s__ranks1, __pyx_k__ranks1, sizeof(__pyx_k__ranks1), 0, 0, 1, 1},
  {&__pyx_n_s__rc, __pyx_k__rc, sizeof(__pyx_k__rc), 0, 0, 1, 1},
  {&__pyx_n_s__rcount, __pyx_k__rcount, sizeof(__pyx_k__rcount), 0, 0, 1, 1},
  {&__pyx_n_s__read, __pyx_k__read, sizeof(__pyx_k__read), 0, 0, 1, 1},
  {&__pyx_n_s__recvbuf, __pyx_k__recvbuf, sizeof(__pyx_k__recvbuf), 0, 0, 1, 1},
  {&__pyx_n_s__recvcounts, __pyx_k__recvcounts, sizeof(__pyx_k__recvcounts), 0, 0, 1, 1},
  {&__pyx_n_s__recvobj, __pyx_k__recvobj, sizeof(__pyx_k__recvobj), 0, 0, 1, 1},
  {&__pyx_n_s__recvtag, __pyx_k__recvtag, sizeof(__pyx_k__recvtag), 0, 0, 1, 1},
  {&__pyx_n_s__remain_dims, __pyx_k__remain_dims, sizeof(__pyx_k__remain_dims), 0, 0, 1, 1},
  {&__pyx_n_s__remote_leader, __pyx_k__remote_leader, sizeof(__pyx_k__remote_leader), 0, 0, 1, 1},
  {&__pyx_n_s__reorder, __pyx_k__reorder, sizeof(__pyx_k__reorder), 0, 0, 1, 1},
  {&__pyx_n_s__request, __pyx_k__request, sizeof(__pyx_k__request), 0, 0, 1, 1},
  {&__pyx_n_s__requests, __pyx_k__requests, sizeof(__pyx_k__requests), 0, 0, 1, 1},
  {&__pyx_n_s__required, __pyx_k__required, sizeof(__pyx_k__required), 0, 0, 1, 1},
  {&__pyx_n_s__root, __pyx_k__root, sizeof(__pyx_k__root), 0, 0, 1, 1},
  {&__pyx_n_s__rtype, __pyx_k__rtype, sizeof(__pyx_k__rtype), 0, 0, 1, 1},
  {&__pyx_n_s__scount, __pyx_k__scount, sizeof(__pyx_k__scount), 0, 0, 1, 1},
  {&__pyx_n_s__self, __pyx_k__self, sizeof(__pyx_k__self), 0, 0, 1, 1},
  {&__pyx_n_s__sendbuf, __pyx_k__sendbuf, sizeof(__pyx_k__sendbuf), 0, 0, 1, 1},
  {&__pyx_n_s__sendobj, __pyx_k__sendobj, sizeof(__pyx_k__sendobj), 0, 0, 1, 1},
  {&__pyx_n_s__sendtag, __pyx_k__sendtag, sizeof(__pyx_k__sendtag), 0, 0, 1, 1},
  {&__pyx_n_s__serialized, __pyx_k__serialized, sizeof(__pyx_k__serialized), 0, 0, 1, 1},
  {&__pyx_n_s__service_name, __pyx_k__service_name, sizeof(__pyx_k__service_name), 0, 0, 1, 1},
  {&__pyx_n_s__single, __pyx_k__single, sizeof(__pyx_k__single), 0, 0, 1, 1},
  {&__pyx_n_s__size, __pyx_k__size, sizeof(__pyx_k__size), 0, 0, 1, 1},
  {&__pyx_n_s__sizes, __pyx_k__sizes, sizeof(__pyx_k__sizes), 0, 0, 1, 1},
  {&__pyx_n_s__source, __pyx_k__source, sizeof(__pyx_k__source), 0, 0, 1, 1},
  {&__pyx_n_s__sources, __pyx_k__sources, sizeof(__pyx_k__sources), 0, 0, 1, 1},
  {&__pyx_n_s__sourceweights, __pyx_k__sourceweights, sizeof(__pyx_k__sourceweights), 0, 0, 1, 1},
  {&__pyx_n_s__starts, __pyx_k__starts, sizeof(__pyx_k__starts), 0, 0, 1, 1},
  {&__pyx_n_s__status, __pyx_k__status, sizeof(__pyx_k__status), 0, 0, 1, 1},
  {&__pyx_n_s__statuses, __pyx_k__statuses, sizeof(__pyx_k__statuses), 0, 0, 1, 1},
  {&__pyx_n_s__stderr, __pyx_k__stderr, sizeof(__pyx_k__stderr), 0, 0, 1, 1},
  {&__pyx_n_s__stride, __pyx_k__stride, sizeof(__pyx_k__stride), 0, 0, 1, 1},
  {&__pyx_n_s__string, __pyx_k__string, sizeof(__pyx_k__string), 0, 0, 1, 1},
  {&__pyx_n_s__stype, __pyx_k__stype, sizeof(__pyx_k__stype), 0, 0, 1, 1},
  {&__pyx_n_s__subsizes, __pyx_k__subsizes, sizeof(__pyx_k__subsizes), 0, 0, 1, 1},
  {&__pyx_n_s__sys, __pyx_k__sys, sizeof(__pyx_k__sys), 0, 0, 1, 1},
  {&__pyx_n_s__tag, __pyx_k__tag, sizeof(__pyx_k__tag), 0, 0, 1, 1},
  {&__pyx_n_s__target, __pyx_k__target, sizeof(__pyx_k__target), 0, 0, 1, 1},
  {&__pyx_n_s__target_rank, __pyx_k__target_rank, sizeof(__pyx_k__target_rank), 0, 0, 1, 1},
  {&__pyx_n_s__testall, __pyx_k__testall, sizeof(__pyx_k__testall), 0, 0, 1, 1},
  {&__pyx_n_s__testany, __pyx_k__testany, sizeof(__pyx_k__testany), 0, 0, 1, 1},
  {&__pyx_n_s__thread_level, __pyx_k__thread_level, sizeof(__pyx_k__thread_level), 0, 0, 1, 1},
  {&__pyx_n_s__threaded, __pyx_k__threaded, sizeof(__pyx_k__threaded), 0, 0, 1, 1},
  {&__pyx_n_s__traceback, __pyx_k__traceback, sizeof(__pyx_k__traceback), 0, 0, 1, 1},
  {&__pyx_n_s__typeclass, __pyx_k__typeclass, sizeof(__pyx_k__typeclass), 0, 0, 1, 1},
  {&__pyx_n_s__typecode, __pyx_k__typecode, sizeof(__pyx_k__typecode), 0, 0, 1, 1},
  {&__pyx_n_s__u1, __pyx_k__u1, sizeof(__pyx_k__u1), 0, 0, 1, 1},
  {&__pyx_n_s__u2, __pyx_k__u2, sizeof(__pyx_k__u2), 0, 0, 1, 1},
  {&__pyx_n_s__u4, __pyx_k__u4, sizeof(__pyx_k__u4), 0, 0, 1, 1},
  {&__pyx_n_s__u8, __pyx_k__u8, sizeof(__pyx_k__u8), 0, 0, 1, 1},
  {&__pyx_n_s__value, __pyx_k__value, sizeof(__pyx_k__value), 0, 0, 1, 1},
  {&__pyx_n_s__waitall, __pyx_k__waitall, sizeof(__pyx_k__waitall), 0, 0, 1, 1},
  {&__pyx_n_s__waitany, __pyx_k__waitany, sizeof(__pyx_k__waitany), 0, 0, 1, 1},
  {&__pyx_n_s__warn, __pyx_k__warn, sizeof(__pyx_k__warn), 0, 0, 1, 1},
  {&__pyx_n_s__warnings, __pyx_k__warnings, sizeof(__pyx_k__warnings), 0, 0, 1, 1},
  {&__pyx_n_s__weights, __pyx_k__weights, sizeof(__pyx_k__weights), 0, 0, 1, 1},
  {&__pyx_n_s__whence, __pyx_k__whence, sizeof(__pyx_k__whence), 0, 0, 1, 1},
  {&__pyx_n_s__win, __pyx_k__win, sizeof(__pyx_k__win), 0, 0, 1, 1},
  {&__pyx_n_s__x, __pyx_k__x, sizeof(__pyx_k__x), 0, 0, 1, 1},
  {&__pyx_n_s__y, __pyx_k__y, sizeof(__pyx_k__y), 0, 0, 1, 1},
  {&__pyx_n_s__yes, __pyx_k__yes, sizeof(__pyx_k__yes), 0, 0, 1, 1},
  {0, 0, 0, 0, 0, 0, 0}
};
static int __Pyx_InitCachedBuiltins(void) {
  __pyx_builtin_ImportError = __Pyx_GetName(__pyx_b, __pyx_n_s__ImportError); if (!__pyx_builtin_ImportError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_n_s__RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_property = __Pyx_GetName(__pyx_b, __pyx_n_s__property); if (!__pyx_builtin_property) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_SystemError = __Pyx_GetName(__pyx_b, __pyx_n_s__SystemError); if (!__pyx_builtin_SystemError) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_TypeError = __Pyx_GetName(__pyx_b, __pyx_n_s__TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_AttributeError = __Pyx_GetName(__pyx_b, __pyx_n_s__AttributeError); if (!__pyx_builtin_AttributeError) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_KeyError = __Pyx_GetName(__pyx_b, __pyx_n_s__KeyError); if (!__pyx_builtin_KeyError) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_NotImplemented = __Pyx_GetName(__pyx_b, __pyx_n_s__NotImplemented); if (!__pyx_builtin_NotImplemented) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_NotImplementedError = __Pyx_GetName(__pyx_b, __pyx_n_s__NotImplementedError); if (!__pyx_builtin_NotImplementedError) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  return 0;
  __pyx_L1_error:;
  return -1;
}

static int __Pyx_InitCachedConstants(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants");

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":85
 *         return 1
 *     def __getreadbuffer__(self, Py_ssize_t idx, void **p):
 *         if idx != 0: raise SystemError(             # <<<<<<<<<<<<<<
 *             "accessing non-existent buffer segment")
 *         p[0] = self.view.buf
 */
  __pyx_k_tuple_6 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_6));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_5));
  PyTuple_SET_ITEM(__pyx_k_tuple_6, 0, ((PyObject *)__pyx_kp_s_5));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_5));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_6));

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":90
 *         return self.view.len
 *     def __getwritebuffer__(self, Py_ssize_t idx, void **p):
 *         if idx != 0: raise SystemError(             # <<<<<<<<<<<<<<
 *             "accessing non-existent buffer segment")
 *         if self.view.readonly:
 */
  __pyx_k_tuple_7 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_7));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_5));
  PyTuple_SET_ITEM(__pyx_k_tuple_7, 0, ((PyObject *)__pyx_kp_s_5));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_5));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_7));

  /* "/home/devel/mpi4py-1.3/src/MPI/asbuffer.pxi":93
 *             "accessing non-existent buffer segment")
 *         if self.view.readonly:
 *             raise TypeError("object is not writeable")             # <<<<<<<<<<<<<<
 *         p[0] = self.view.buf
 *         return self.view.len
 */
  __pyx_k_tuple_9 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_9));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_8));
  PyTuple_SET_ITEM(__pyx_k_tuple_9, 0, ((PyObject *)__pyx_kp_s_8));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_8));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_9));

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":182
 *     cdef int index = 0
 *     try:
 *         index = op_user_registry.index(None, 1)             # <<<<<<<<<<<<<<
 *     except ValueError:
 *         raise RuntimeError("cannot create too many "
 */
  __pyx_k_tuple_12 = PyTuple_New(2); if (unlikely(!__pyx_k_tuple_12)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_12));
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_k_tuple_12, 0, Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_INCREF(__pyx_int_1);
  PyTuple_SET_ITEM(__pyx_k_tuple_12, 1, __pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_12));

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":184
 *         index = op_user_registry.index(None, 1)
 *     except ValueError:
 *         raise RuntimeError("cannot create too many "             # <<<<<<<<<<<<<<
 *                            "user-defined reduction operations")
 *     # the line below will fail
 */
  __pyx_k_tuple_14 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_14)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_14));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_13));
  PyTuple_SET_ITEM(__pyx_k_tuple_14, 0, ((PyObject *)__pyx_kp_s_13));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_13));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_14));

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":104
 *             (o_buf, o_count, o_displ, o_type) = msg
 *         else:
 *             raise ValueError("message: expecting 2 to 4 items")             # <<<<<<<<<<<<<<
 *     else:
 *         raise TypeError("message: expecting buffer or list/tuple")
 */
  __pyx_k_tuple_16 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_16)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_16));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_15));
  PyTuple_SET_ITEM(__pyx_k_tuple_16, 0, ((PyObject *)__pyx_kp_s_15));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_15));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_16));

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":106
 *             raise ValueError("message: expecting 2 to 4 items")
 *     else:
 *         raise TypeError("message: expecting buffer or list/tuple")             # <<<<<<<<<<<<<<
 *     # buffer: address, length, and datatype
 *     cdef void *baddr = NULL
 */
  __pyx_k_tuple_18 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_18)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_18));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_17));
  PyTuple_SET_ITEM(__pyx_k_tuple_18, 0, ((PyObject *)__pyx_kp_s_17));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_17));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_18));

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":119
 *     cdef MPI_Aint extent = 0, lb = 0
 *     if o_displ is not None:
 *         if o_count is None: raise ValueError(             # <<<<<<<<<<<<<<
 *             "message: cannot handle displacement, "
 *             "explicit count required")
 */
  __pyx_k_tuple_20 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_20)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_20));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_19));
  PyTuple_SET_ITEM(__pyx_k_tuple_20, 0, ((PyObject *)__pyx_kp_s_19));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_19));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_20));

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":129
 *             "message: negative diplacement %d" % displ)
 *         if displ != 0:
 *             if btype == MPI_DATATYPE_NULL: raise ValueError(             # <<<<<<<<<<<<<<
 *                 "message: cannot handle diplacement, "
 *                 "datatype is null")
 */
  __pyx_k_tuple_24 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_24)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_24));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_23));
  PyTuple_SET_ITEM(__pyx_k_tuple_24, 0, ((PyObject *)__pyx_kp_s_23));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_23));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_24));

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":140
 *                 "message: negative count %d" % count)
 *     elif bsize > 0:
 *         if btype == MPI_DATATYPE_NULL: raise ValueError(             # <<<<<<<<<<<<<<
 *             "message: cannot guess count, "
 *             "datatype is null")
 */
  __pyx_k_tuple_26 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_26)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_26));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_25));
  PyTuple_SET_ITEM(__pyx_k_tuple_26, 0, ((PyObject *)__pyx_kp_s_25));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_25));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_26));

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":219
 *             (o_buf, o_counts, o_displs, o_type) = msg
 *         else:
 *             raise ValueError("message: expecting 2 to 4 items")             # <<<<<<<<<<<<<<
 *     else:
 *         raise TypeError("message: expecting buffer or list/tuple")
 */
  __pyx_k_tuple_32 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_32)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_32));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_15));
  PyTuple_SET_ITEM(__pyx_k_tuple_32, 0, ((PyObject *)__pyx_kp_s_15));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_15));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_32));

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":221
 *             raise ValueError("message: expecting 2 to 4 items")
 *     else:
 *         raise TypeError("message: expecting buffer or list/tuple")             # <<<<<<<<<<<<<<
 *     # buffer: address, length, and datatype
 *     cdef void *baddr = NULL
 */
  __pyx_k_tuple_33 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_33)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_33));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_17));
  PyTuple_SET_ITEM(__pyx_k_tuple_33, 0, ((PyObject *)__pyx_kp_s_17));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_17));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_33));

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":237
 *         if bsize > 0:
 *             if btype == MPI_DATATYPE_NULL:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     "message: cannot guess count, "
 *                     "datatype is null")
 */
  __pyx_k_tuple_34 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_34)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_34));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_25));
  PyTuple_SET_ITEM(__pyx_k_tuple_34, 0, ((PyObject *)__pyx_kp_s_25));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_25));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_34));

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":594
 *         if (self.sbuf  != MPI_IN_PLACE and
 *             self.stype != self.rtype):
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 "mismatch in send and receive MPI datatypes")
 *         return 0
 */
  __pyx_k_tuple_37 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_37)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_37));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_36));
  PyTuple_SET_ITEM(__pyx_k_tuple_37, 0, ((PyObject *)__pyx_kp_s_36));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_36));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_37));

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":615
 *         if self.sbuf != MPI_IN_PLACE:
 *             if self.stype != self.rtype:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     "mismatch in send and receive MPI datatypes")
 *             if self.scount != self.rcount:
 */
  __pyx_k_tuple_38 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_38)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_38));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_36));
  PyTuple_SET_ITEM(__pyx_k_tuple_38, 0, ((PyObject *)__pyx_kp_s_36));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_36));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_38));

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":651
 *         if self.sbuf != MPI_IN_PLACE:
 *             if self.stype != self.rtype:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     "mismatch in send and receive MPI datatypes")
 *             if self.scount != sumrcounts:
 */
  __pyx_k_tuple_40 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_40)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_40));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_36));
  PyTuple_SET_ITEM(__pyx_k_tuple_40, 0, ((PyObject *)__pyx_kp_s_36));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_36));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_40));

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":688
 *         if (self.sbuf  != MPI_IN_PLACE and
 *             self.stype != self.rtype):
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 "mismatch in send and receive MPI datatypes")
 *         return 0
 */
  __pyx_k_tuple_44 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_44)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_44));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_36));
  PyTuple_SET_ITEM(__pyx_k_tuple_44, 0, ((PyObject *)__pyx_kp_s_36));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_36));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_44));

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":710
 *                 (self.scount, self.rcount))
 *         if self.stype != self.rtype:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 "mismatch in send and receive MPI datatypes")
 *         return 0
 */
  __pyx_k_tuple_45 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_45)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_45));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_36));
  PyTuple_SET_ITEM(__pyx_k_tuple_45, 0, ((PyObject *)__pyx_kp_s_36));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_36));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_45));

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":766
 *         elif is_list(target) or is_tuple(target):
 *             if len(target) != 3:
 *                 raise ValueError("target: expecting 3 items")             # <<<<<<<<<<<<<<
 *             self.tdisp  = <MPI_Aint>target[0]
 *             self.tcount = <int>target[1]
 */
  __pyx_k_tuple_47 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_47)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_47));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_46));
  PyTuple_SET_ITEM(__pyx_k_tuple_47, 0, ((PyObject *)__pyx_kp_s_46));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_46));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_47));

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":771
 *             self.ttype  = (<Datatype?>target[2]).ob_mpi
 *         else:
 *             raise ValueError("target: expecting integral or list/tuple")             # <<<<<<<<<<<<<<
 *         self._target = target
 *         return 0
 */
  __pyx_k_tuple_49 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_49)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_49));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_48));
  PyTuple_SET_ITEM(__pyx_k_tuple_49, 0, ((PyObject *)__pyx_kp_s_48));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_48));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_49));

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":770
 *     if seq is None: return None
 *     seq = _py_scan(seq, op)
 *     seq.pop(-1)             # <<<<<<<<<<<<<<
 *     seq.insert(0, None)
 *     return seq
 */
  __pyx_k_tuple_51 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_51)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_51));
  __Pyx_INCREF(__pyx_int_neg_1);
  PyTuple_SET_ITEM(__pyx_k_tuple_51, 0, __pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_int_neg_1);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_51));

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":771
 *     seq = _py_scan(seq, op)
 *     seq.pop(-1)
 *     seq.insert(0, None)             # <<<<<<<<<<<<<<
 *     return seq
 * 
 */
  __pyx_k_tuple_52 = PyTuple_New(2); if (unlikely(!__pyx_k_tuple_52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_52));
  __Pyx_INCREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_k_tuple_52, 0, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_k_tuple_52, 1, Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_52));

  /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":20
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
  __pyx_k_tuple_56 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_56)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_56));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_55));
  PyTuple_SET_ITEM(__pyx_k_tuple_56, 0, ((PyObject *)__pyx_kp_s_55));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_55));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_56));

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":66
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
  __pyx_k_tuple_57 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_57)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_57));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_55));
  PyTuple_SET_ITEM(__pyx_k_tuple_57, 0, ((PyObject *)__pyx_kp_s_55));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_55));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_57));

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":19
 *         if   op == Py_EQ: return  r == 0
 *         elif op == Py_NE: return  r != 0
 *         else: raise TypeError("only '==' and '!='")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_k_tuple_60 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_60)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_60));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_55));
  PyTuple_SET_ITEM(__pyx_k_tuple_60, 0, ((PyObject *)__pyx_kp_s_55));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_55));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_60));

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":23
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
  __pyx_k_tuple_62 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_62)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_62));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_55));
  PyTuple_SET_ITEM(__pyx_k_tuple_62, 0, ((PyObject *)__pyx_kp_s_55));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_55));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_62));

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":20
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
  __pyx_k_tuple_63 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_63)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_63));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_55));
  PyTuple_SET_ITEM(__pyx_k_tuple_63, 0, ((PyObject *)__pyx_kp_s_55));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_55));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_63));

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":214
 *         cdef object key
 *         for k from 0 <= k < nkeys:
 *             key = self.Get_nthkey(0)             # <<<<<<<<<<<<<<
 *             self.Delete(key)
 * 
 */
  __pyx_k_tuple_64 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_64)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_64));
  __Pyx_INCREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_k_tuple_64, 0, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_64));

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":21
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
  __pyx_k_tuple_65 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_65)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_65));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_55));
  PyTuple_SET_ITEM(__pyx_k_tuple_65, 0, ((PyObject *)__pyx_kp_s_55));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_55));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_65));

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":80
 *                 (self.scount, self.rcount))
 *         if (self.stype != self.rtype):
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 "mismatch in inbuf and inoutbuf MPI datatypes")
 *         # do local reduction
 */
  __pyx_k_tuple_68 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_68)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_68));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_67));
  PyTuple_SET_ITEM(__pyx_k_tuple_68, 0, ((PyObject *)__pyx_kp_s_67));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_67));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_68));

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":20
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
  __pyx_k_tuple_69 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_69)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_69));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_55));
  PyTuple_SET_ITEM(__pyx_k_tuple_69, 0, ((PyObject *)__pyx_kp_s_55));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_55));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_69));

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":39
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
  __pyx_k_tuple_70 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_70)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_70));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_55));
  PyTuple_SET_ITEM(__pyx_k_tuple_70, 0, ((PyObject *)__pyx_kp_s_55));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_55));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_70));

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":909
 *         if self.ob_mpi != MPI_COMM_NULL:
 *             CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 *             if inter: raise TypeError(             # <<<<<<<<<<<<<<
 *                 "expecting an intracommunicator")
 * 
 */
  __pyx_k_tuple_78 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_78)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_78));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_77));
  PyTuple_SET_ITEM(__pyx_k_tuple_78, 0, ((PyObject *)__pyx_kp_s_77));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_77));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_78));

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1216
 *         if self.ob_mpi != MPI_COMM_NULL:
 *             CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *             if topo != MPI_CART: raise TypeError(             # <<<<<<<<<<<<<<
 *                 "expecting a Cartesian communicator")
 * 
 */
  __pyx_k_tuple_90 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_90)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_90));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_89));
  PyTuple_SET_ITEM(__pyx_k_tuple_90, 0, ((PyObject *)__pyx_kp_s_89));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_89));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_90));

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1388
 *         if self.ob_mpi != MPI_COMM_NULL:
 *             CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *             if topo != MPI_GRAPH: raise TypeError(             # <<<<<<<<<<<<<<
 *                 "expecting a general graph communicator")
 * 
 */
  __pyx_k_tuple_92 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_92)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_92));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_91));
  PyTuple_SET_ITEM(__pyx_k_tuple_92, 0, ((PyObject *)__pyx_kp_s_91));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_91));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_92));

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1528
 *         if self.ob_mpi != MPI_COMM_NULL:
 *             CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *             if topo != MPI_DIST_GRAPH: raise TypeError(             # <<<<<<<<<<<<<<
 *                 "expecting a distributed graph communicator")
 * 
 */
  __pyx_k_tuple_94 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_94)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_94));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_93));
  PyTuple_SET_ITEM(__pyx_k_tuple_94, 0, ((PyObject *)__pyx_kp_s_93));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_93));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_94));

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1602
 *         if self.ob_mpi != MPI_COMM_NULL:
 *             CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 *             if not inter: raise TypeError(             # <<<<<<<<<<<<<<
 *                 "expecting an intercommunicator")
 * 
 */
  __pyx_k_tuple_96 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_96)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_96));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_95));
  PyTuple_SET_ITEM(__pyx_k_tuple_96, 0, ((PyObject *)__pyx_kp_s_95));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_95));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_96));

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":38
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
  __pyx_k_tuple_99 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_99)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_99));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_55));
  PyTuple_SET_ITEM(__pyx_k_tuple_99, 0, ((PyObject *)__pyx_kp_s_55));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_55));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_99));

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":46
 *         if   op == Py_EQ: return (s.ob_mpi == o.ob_mpi)
 *         elif op == Py_NE: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError("only '==' and '!='")             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
  __pyx_k_tuple_103 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_103)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_103));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_55));
  PyTuple_SET_ITEM(__pyx_k_tuple_103, 0, ((PyObject *)__pyx_kp_s_55));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_55));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_103));
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_InitGlobals(void) {
  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __pyx_int_17 = PyInt_FromLong(17); if (unlikely(!__pyx_int_17)) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  return 0;
  __pyx_L1_error:;
  return -1;
}

#if PY_MAJOR_VERSION < 3
PyMODINIT_FUNC initMPI(void); /*proto*/
PyMODINIT_FUNC initMPI(void)
#else
PyMODINIT_FUNC PyInit_MPI(void); /*proto*/
PyMODINIT_FUNC PyInit_MPI(void)
#endif
{
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  __Pyx_RefNannyDeclarations
  #if CYTHON_REFNANNY
  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
  if (!__Pyx_RefNanny) {
      PyErr_Clear();
      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
      if (!__Pyx_RefNanny)
          Py_FatalError("failed to import 'refnanny' module");
  }
  #endif
  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_MPI(void)");
  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  #ifdef __pyx_binding_PyCFunctionType_USED
  if (__pyx_binding_PyCFunctionType_init() < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  #endif
  /*--- Library function declarations ---*/
  /*--- Threads initialization code ---*/
  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
  #ifdef WITH_THREAD /* Python build with threading support? */
  PyEval_InitThreads();
  #endif
  #endif
  /*--- Module creation code ---*/
  #if PY_MAJOR_VERSION < 3
  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("MPI"), __pyx_methods, 0, 0, PYTHON_API_VERSION);
  #else
  __pyx_m = PyModule_Create(&__pyx_moduledef);
  #endif
  if (!__pyx_m) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  #if PY_MAJOR_VERSION < 3
  Py_INCREF(__pyx_m);
  #endif
  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME));
  if (!__pyx_b) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  /*--- Initialize various global constants etc. ---*/
  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_module_is_main_mpi4py__MPI) {
    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  }
  /*--- Builtin init code ---*/
  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /*--- Constants init code ---*/
  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /*--- Global init code ---*/
  __pyx_v_6mpi4py_3MPI_MPIException = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_arraytype = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_type_keyval = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_op_user_registry = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_comm_keyval = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI__buffer = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_win_keyval = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___BOTTOM__ = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___IN_PLACE__ = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_PyPickle_dumps = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_PyPickle_loads = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_PyStringIO_New = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_PyPickle_loadf = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___ERRHANDLER_NULL__ = ((struct PyMPIErrhandlerObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___ERRORS_RETURN__ = ((struct PyMPIErrhandlerObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___ERRORS_ARE_FATAL__ = ((struct PyMPIErrhandlerObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___DATATYPE_NULL__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UB__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LB__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___PACKED__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___BYTE__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___AINT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___OFFSET__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___CHAR__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___WCHAR__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___SIGNED_CHAR__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___SHORT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LONG__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LONG_LONG__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UNSIGNED__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___FLOAT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___DOUBLE__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LONG_DOUBLE__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___C_BOOL__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INT8_T__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INT16_T__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INT32_T__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INT64_T__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UINT8_T__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UINT16_T__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UINT32_T__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UINT64_T__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___C_COMPLEX__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___SHORT_INT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___TWOINT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LONG_INT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___FLOAT_INT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___DOUBLE_INT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LONG_DOUBLE_INT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___CHARACTER__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LOGICAL__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INTEGER__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___REAL__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMPLEX__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LOGICAL1__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LOGICAL2__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LOGICAL4__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LOGICAL8__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INTEGER1__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INTEGER2__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INTEGER4__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INTEGER8__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INTEGER16__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___REAL2__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___REAL4__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___REAL8__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___REAL16__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMPLEX4__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMPLEX8__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMPLEX16__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMPLEX32__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_TypeDict = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_CTypeDict = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_FTypeDict = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___REQUEST_NULL__ = ((struct PyMPIRequestObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INFO_NULL__ = ((struct PyMPIInfoObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___OP_NULL__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___MAX__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___MIN__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___SUM__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___PROD__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LAND__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___BAND__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LOR__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___BOR__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LXOR__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___BXOR__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___MAXLOC__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___MINLOC__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___REPLACE__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___GROUP_NULL__ = ((struct PyMPIGroupObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___GROUP_EMPTY__ = ((struct PyMPIGroupObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMM_NULL__ = ((struct PyMPICommObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMM_SELF__ = ((struct PyMPIIntracommObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMM_WORLD__ = ((struct PyMPIIntracommObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMM_PARENT__ = ((struct PyMPIIntercommObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___WIN_NULL__ = ((struct PyMPIWinObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___FILE_NULL__ = ((struct PyMPIFileObject *)Py_None); Py_INCREF(Py_None);
  /*--- Variable export code ---*/
  /*--- Function export code ---*/
  if (__Pyx_ExportFunction("PyMPIDatatype_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIDatatype_New, "PyObject *(MPI_Datatype)") < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIDatatype_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIDatatype_Get, "MPI_Datatype *(PyObject *)") < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIStatus_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIStatus_New, "PyObject *(MPI_Status *)") < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIStatus_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIStatus_Get, "MPI_Status *(PyObject *)") < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIRequest_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIRequest_New, "PyObject *(MPI_Request)") < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIRequest_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIRequest_Get, "MPI_Request *(PyObject *)") < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIOp_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIOp_New, "PyObject *(MPI_Op)") < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIOp_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIOp_Get, "MPI_Op *(PyObject *)") < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIInfo_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIInfo_New, "PyObject *(MPI_Info)") < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIInfo_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIInfo_Get, "MPI_Info *(PyObject *)") < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIGroup_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIGroup_New, "PyObject *(MPI_Group)") < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIGroup_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIGroup_Get, "MPI_Group *(PyObject *)") < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIComm_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIComm_New, "PyObject *(MPI_Comm)") < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIComm_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIComm_Get, "MPI_Comm *(PyObject *)") < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIWin_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIWin_New, "PyObject *(MPI_Win)") < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIWin_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIWin_Get, "MPI_Win *(PyObject *)") < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIFile_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIFile_New, "PyObject *(MPI_File)") < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIFile_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIFile_Get, "MPI_File *(PyObject *)") < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIErrhandler_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIErrhandler_New, "PyObject *(MPI_Errhandler)") < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIErrhandler_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIErrhandler_Get, "MPI_Errhandler *(PyObject *)") < 0) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /*--- Type init code ---*/
  if (PyType_Ready(&PyMPIStatus_Type) < 0) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Status", (PyObject *)&PyMPIStatus_Type) < 0) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI_Status = &PyMPIStatus_Type;
  if (PyType_Ready(&PyMPIDatatype_Type) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Datatype", (PyObject *)&PyMPIDatatype_Type) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI_Datatype = &PyMPIDatatype_Type;
  if (PyType_Ready(&PyMPIRequest_Type) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Request", (PyObject *)&PyMPIRequest_Type) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI_Request = &PyMPIRequest_Type;
  PyMPIPrequest_Type.tp_base = __pyx_ptype_6mpi4py_3MPI_Request;
  if (PyType_Ready(&PyMPIPrequest_Type) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Prequest", (PyObject *)&PyMPIPrequest_Type) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI_Prequest = &PyMPIPrequest_Type;
  PyMPIGrequest_Type.tp_base = __pyx_ptype_6mpi4py_3MPI_Request;
  if (PyType_Ready(&PyMPIGrequest_Type) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Grequest", (PyObject *)&PyMPIGrequest_Type) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI_Grequest = &PyMPIGrequest_Type;
  if (PyType_Ready(&PyMPIOp_Type) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Op", (PyObject *)&PyMPIOp_Type) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI_Op = &PyMPIOp_Type;
  if (PyType_Ready(&PyMPIGroup_Type) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Group", (PyObject *)&PyMPIGroup_Type) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI_Group = &PyMPIGroup_Type;
  if (PyType_Ready(&PyMPIInfo_Type) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Info", (PyObject *)&PyMPIInfo_Type) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI_Info = &PyMPIInfo_Type;
  if (PyType_Ready(&PyMPIErrhandler_Type) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Errhandler", (PyObject *)&PyMPIErrhandler_Type) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI_Errhandler = &PyMPIErrhandler_Type;
  if (PyType_Ready(&PyMPIComm_Type) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Comm", (PyObject *)&PyMPIComm_Type) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI_Comm = &PyMPIComm_Type;
  PyMPIIntracomm_Type.tp_base = __pyx_ptype_6mpi4py_3MPI_Comm;
  if (PyType_Ready(&PyMPIIntracomm_Type) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Intracomm", (PyObject *)&PyMPIIntracomm_Type) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI_Intracomm = &PyMPIIntracomm_Type;
  PyMPICartcomm_Type.tp_base = __pyx_ptype_6mpi4py_3MPI_Intracomm;
  if (PyType_Ready(&PyMPICartcomm_Type) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Cartcomm", (PyObject *)&PyMPICartcomm_Type) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI_Cartcomm = &PyMPICartcomm_Type;
  PyMPIGraphcomm_Type.tp_base = __pyx_ptype_6mpi4py_3MPI_Intracomm;
  if (PyType_Ready(&PyMPIGraphcomm_Type) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Graphcomm", (PyObject *)&PyMPIGraphcomm_Type) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI_Graphcomm = &PyMPIGraphcomm_Type;
  PyMPIDistgraphcomm_Type.tp_base = __pyx_ptype_6mpi4py_3MPI_Intracomm;
  if (PyType_Ready(&PyMPIDistgraphcomm_Type) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Distgraphcomm", (PyObject *)&PyMPIDistgraphcomm_Type) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI_Distgraphcomm = &PyMPIDistgraphcomm_Type;
  PyMPIIntercomm_Type.tp_base = __pyx_ptype_6mpi4py_3MPI_Comm;
  if (PyType_Ready(&PyMPIIntercomm_Type) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Intercomm", (PyObject *)&PyMPIIntercomm_Type) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI_Intercomm = &PyMPIIntercomm_Type;
  if (PyType_Ready(&PyMPIWin_Type) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Win", (PyObject *)&PyMPIWin_Type) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI_Win = &PyMPIWin_Type;
  if (PyType_Ready(&PyMPIFile_Type) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "File", (PyObject *)&PyMPIFile_Type) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI_File = &PyMPIFile_Type;
  if (PyType_Ready(&__pyx_type_6mpi4py_3MPI__p_buffer) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_p_buffer", (PyObject *)&__pyx_type_6mpi4py_3MPI__p_buffer) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI__p_buffer = &__pyx_type_6mpi4py_3MPI__p_buffer;
  __pyx_vtabptr_6mpi4py_3MPI__p_greq = &__pyx_vtable_6mpi4py_3MPI__p_greq;
  __pyx_vtable_6mpi4py_3MPI__p_greq.query = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_greq *, MPI_Status *))__pyx_f_6mpi4py_3MPI_7_p_greq_query;
  __pyx_vtable_6mpi4py_3MPI__p_greq.free = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_greq *))__pyx_f_6mpi4py_3MPI_7_p_greq_free;
  __pyx_vtable_6mpi4py_3MPI__p_greq.cancel = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_greq *, int))__pyx_f_6mpi4py_3MPI_7_p_greq_cancel;
  if (PyType_Ready(&__pyx_type_6mpi4py_3MPI__p_greq) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_6mpi4py_3MPI__p_greq.tp_dict, __pyx_vtabptr_6mpi4py_3MPI__p_greq) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_p_greq", (PyObject *)&__pyx_type_6mpi4py_3MPI__p_greq) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI__p_greq = &__pyx_type_6mpi4py_3MPI__p_greq;
  if (PyType_Ready(&__pyx_type_6mpi4py_3MPI__p_message) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_p_message", (PyObject *)&__pyx_type_6mpi4py_3MPI__p_message) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI__p_message = &__pyx_type_6mpi4py_3MPI__p_message;
  __pyx_vtabptr_6mpi4py_3MPI__p_msg_p2p = &__pyx_vtable_6mpi4py_3MPI__p_msg_p2p;
  __pyx_vtable_6mpi4py_3MPI__p_msg_p2p.for_send = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *, PyObject *, int))__pyx_f_6mpi4py_3MPI_10_p_msg_p2p_for_send;
  __pyx_vtable_6mpi4py_3MPI__p_msg_p2p.for_recv = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *, PyObject *, int))__pyx_f_6mpi4py_3MPI_10_p_msg_p2p_for_recv;
  if (PyType_Ready(&__pyx_type_6mpi4py_3MPI__p_msg_p2p) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_6mpi4py_3MPI__p_msg_p2p.tp_dict, __pyx_vtabptr_6mpi4py_3MPI__p_msg_p2p) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_p_msg_p2p", (PyObject *)&__pyx_type_6mpi4py_3MPI__p_msg_p2p) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI__p_msg_p2p = &__pyx_type_6mpi4py_3MPI__p_msg_p2p;
  __pyx_vtabptr_6mpi4py_3MPI__p_msg_cco = &__pyx_vtable_6mpi4py_3MPI__p_msg_cco;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_cco_send = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, int, int))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_cco_recv = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, int, int))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_bcast = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, int, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_bcast;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_gather = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, int, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_gather;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_scatter = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, int, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scatter;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_allgather = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allgather;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_alltoall = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_alltoall;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_cro_send = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, int))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_send;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_cro_recv = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, int))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_recv;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_reduce = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, int, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_allreduce = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allreduce;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_reduce_scatter_block = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce_scatter_block;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_reduce_scatter = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, PyObject *, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce_scatter;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_scan = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scan;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_exscan = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_exscan;
  if (PyType_Ready(&__pyx_type_6mpi4py_3MPI__p_msg_cco) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_6mpi4py_3MPI__p_msg_cco.tp_dict, __pyx_vtabptr_6mpi4py_3MPI__p_msg_cco) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_p_msg_cco", (PyObject *)&__pyx_type_6mpi4py_3MPI__p_msg_cco) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI__p_msg_cco = &__pyx_type_6mpi4py_3MPI__p_msg_cco;
  __pyx_vtabptr_6mpi4py_3MPI__p_msg_rma = &__pyx_vtable_6mpi4py_3MPI__p_msg_rma;
  __pyx_vtable_6mpi4py_3MPI__p_msg_rma.for_rma = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, int, PyObject *, int, PyObject *))__pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_rma;
  __pyx_vtable_6mpi4py_3MPI__p_msg_rma.for_put = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int, PyObject *))__pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_put;
  __pyx_vtable_6mpi4py_3MPI__p_msg_rma.for_get = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int, PyObject *))__pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_get;
  __pyx_vtable_6mpi4py_3MPI__p_msg_rma.for_acc = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int, PyObject *))__pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_acc;
  if (PyType_Ready(&__pyx_type_6mpi4py_3MPI__p_msg_rma) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_6mpi4py_3MPI__p_msg_rma.tp_dict, __pyx_vtabptr_6mpi4py_3MPI__p_msg_rma) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_p_msg_rma", (PyObject *)&__pyx_type_6mpi4py_3MPI__p_msg_rma) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI__p_msg_rma = &__pyx_type_6mpi4py_3MPI__p_msg_rma;
  __pyx_vtabptr_6mpi4py_3MPI__p_msg_io = &__pyx_vtable_6mpi4py_3MPI__p_msg_io;
  __pyx_vtable_6mpi4py_3MPI__p_msg_io.for_read = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_io *, PyObject *))__pyx_f_6mpi4py_3MPI_9_p_msg_io_for_read;
  __pyx_vtable_6mpi4py_3MPI__p_msg_io.for_write = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_io *, PyObject *))__pyx_f_6mpi4py_3MPI_9_p_msg_io_for_write;
  if (PyType_Ready(&__pyx_type_6mpi4py_3MPI__p_msg_io) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_6mpi4py_3MPI__p_msg_io.tp_dict, __pyx_vtabptr_6mpi4py_3MPI__p_msg_io) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_p_msg_io", (PyObject *)&__pyx_type_6mpi4py_3MPI__p_msg_io) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI__p_msg_io = &__pyx_type_6mpi4py_3MPI__p_msg_io;
  __pyx_vtabptr_6mpi4py_3MPI__p_Pickle = &__pyx_vtable_6mpi4py_3MPI__p_Pickle;
  __pyx_vtable_6mpi4py_3MPI__p_Pickle.dump = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI__p_Pickle *, PyObject *, void **, int *))__pyx_f_6mpi4py_3MPI_9_p_Pickle_dump;
  __pyx_vtable_6mpi4py_3MPI__p_Pickle.alloc = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI__p_Pickle *, void **, int))__pyx_f_6mpi4py_3MPI_9_p_Pickle_alloc;
  __pyx_vtable_6mpi4py_3MPI__p_Pickle.load = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI__p_Pickle *, PyObject *))__pyx_f_6mpi4py_3MPI_9_p_Pickle_load;
  __pyx_vtable_6mpi4py_3MPI__p_Pickle.dumpv = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI__p_Pickle *, PyObject *, void **, int, int *, int *))__pyx_f_6mpi4py_3MPI_9_p_Pickle_dumpv;
  __pyx_vtable_6mpi4py_3MPI__p_Pickle.allocv = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI__p_Pickle *, void **, int, int *, int *))__pyx_f_6mpi4py_3MPI_9_p_Pickle_allocv;
  __pyx_vtable_6mpi4py_3MPI__p_Pickle.loadv = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI__p_Pickle *, PyObject *, int, int *, int *))__pyx_f_6mpi4py_3MPI_9_p_Pickle_loadv;
  if (PyType_Ready(&__pyx_type_6mpi4py_3MPI__p_Pickle) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_6mpi4py_3MPI__p_Pickle.tp_dict, __pyx_vtabptr_6mpi4py_3MPI__p_Pickle) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_p_Pickle", (PyObject *)&__pyx_type_6mpi4py_3MPI__p_Pickle) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI__p_Pickle = &__pyx_type_6mpi4py_3MPI__p_Pickle;
  /*--- Type import code ---*/
  /*--- Variable import code ---*/
  /*--- Function import code ---*/
  /*--- Execution code ---*/

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":1
 * __doc__ = """             # <<<<<<<<<<<<<<
 * Message Passing Interface
 * """
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____doc__, ((PyObject *)__pyx_kp_s_147)) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":98
 *     int PyMPI_CleanUp() nogil
 * 
 * cdef int inited_atimport = 0             # <<<<<<<<<<<<<<
 * cdef int finalize_atexit = 0
 * 
 */
  __pyx_v_6mpi4py_3MPI_inited_atimport = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":99
 * 
 * cdef int inited_atimport = 0
 * cdef int finalize_atexit = 0             # <<<<<<<<<<<<<<
 * 
 * PyMPI_STARTUP_DONE = 0
 */
  __pyx_v_6mpi4py_3MPI_finalize_atexit = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":101
 * cdef int finalize_atexit = 0
 * 
 * PyMPI_STARTUP_DONE = 0             # <<<<<<<<<<<<<<
 * PyMPI_CLEANUP_DONE = 0
 * 
 */
  PyMPI_STARTUP_DONE = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":102
 * 
 * PyMPI_STARTUP_DONE = 0
 * PyMPI_CLEANUP_DONE = 0             # <<<<<<<<<<<<<<
 * 
 * cdef int initialize() except -1:
 */
  PyMPI_CLEANUP_DONE = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/atimport.pxi":194
 *     void *PyExc_NotImplementedError
 * 
 * cdef object MPIException = <object>PyExc_RuntimeError             # <<<<<<<<<<<<<<
 * 
 * cdef int PyMPI_Raise(int ierr) except -1 with gil:
 */
  __Pyx_INCREF(((PyObject *)PyExc_RuntimeError));
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_MPIException);
  __Pyx_DECREF(__pyx_v_6mpi4py_3MPI_MPIException);
  __Pyx_GIVEREF(((PyObject *)PyExc_RuntimeError));
  __pyx_v_6mpi4py_3MPI_MPIException = ((PyObject *)PyExc_RuntimeError);

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":10
 * include "atimport.pxi"
 * 
 * initialize()             # <<<<<<<<<<<<<<
 * startup()
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_initialize(); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":11
 * 
 * initialize()
 * startup()             # <<<<<<<<<<<<<<
 * 
 * include "asmpistr.pxi"
 */
  __pyx_f_6mpi4py_3MPI_startup();

  /* "/home/devel/mpi4py-1.3/src/MPI/asarray.pxi":4
 * 
 * cdef type arraytype
 * from array import array as arraytype             # <<<<<<<<<<<<<<
 * 
 * cdef extern from "Python.h":
 */
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__array));
  PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_s__array));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__array));
  __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__array), ((PyObject *)__pyx_t_2), -1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__array); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyType_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected type, got %.200s", Py_TYPE(__pyx_t_2)->tp_name), 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI_arraytype));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI_arraytype));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_v_6mpi4py_3MPI_arraytype = ((PyObject*)__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typeimpl.pxi":3
 * # -----------------------------------------------------------------------------
 * 
 * cdef dict type_keyval = {}             # <<<<<<<<<<<<<<
 * 
 * cdef inline int type_keyval_new(int keyval,
 */
  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI_type_keyval));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI_type_keyval));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
  __pyx_v_6mpi4py_3MPI_type_keyval = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":4
 * 
 * cdef MPI_Status empty_status
 * empty_status.MPI_SOURCE = MPI_ANY_SOURCE             # <<<<<<<<<<<<<<
 * empty_status.MPI_TAG = MPI_ANY_TAG
 * empty_status.MPI_ERROR  = MPI_SUCCESS
 */
  __pyx_v_6mpi4py_3MPI_empty_status.MPI_SOURCE = MPI_ANY_SOURCE;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":5
 * cdef MPI_Status empty_status
 * empty_status.MPI_SOURCE = MPI_ANY_SOURCE
 * empty_status.MPI_TAG = MPI_ANY_TAG             # <<<<<<<<<<<<<<
 * empty_status.MPI_ERROR  = MPI_SUCCESS
 * 
 */
  __pyx_v_6mpi4py_3MPI_empty_status.MPI_TAG = MPI_ANY_TAG;

  /* "/home/devel/mpi4py-1.3/src/MPI/reqimpl.pxi":6
 * empty_status.MPI_SOURCE = MPI_ANY_SOURCE
 * empty_status.MPI_TAG = MPI_ANY_TAG
 * empty_status.MPI_ERROR  = MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 * cdef object acquire_rs(object requests,
 */
  __pyx_v_6mpi4py_3MPI_empty_status.MPI_ERROR = MPI_SUCCESS;

  /* "/home/devel/mpi4py-1.3/src/MPI/opimpl.pxi":79
 * # -----------------------------------------------------------------------------
 * 
 * cdef object op_user_registry = [None]*(1+16)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object op_user_py(int index, object x, object y, object dt):
 */
  __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  __Pyx_INCREF(Py_None);
  PyList_SET_ITEM(__pyx_t_3, 0, Py_None);
  __Pyx_GIVEREF(Py_None);
  __pyx_t_2 = PyNumber_Multiply(((PyObject *)__pyx_t_3), __pyx_int_17); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_op_user_registry);
  __Pyx_DECREF(__pyx_v_6mpi4py_3MPI_op_user_registry);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_v_6mpi4py_3MPI_op_user_registry = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":3
 * # -----------------------------------------------------------------------------
 * 
 * cdef dict comm_keyval = {}             # <<<<<<<<<<<<<<
 * 
 * cdef int comm_keyval_new(int keyval,
 */
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI_comm_keyval));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI_comm_keyval));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
  __pyx_v_6mpi4py_3MPI_comm_keyval = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/commimpl.pxi":95
 * # -----------------------------------------------------------------------------
 * 
 * cdef _p_buffer _buffer = None             # <<<<<<<<<<<<<<
 * 
 * cdef inline int attach_buffer(ob, void **p, int *n) except -1:
 */
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI__buffer));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI__buffer));
  __Pyx_GIVEREF(Py_None);
  __pyx_v_6mpi4py_3MPI__buffer = ((struct __pyx_obj_6mpi4py_3MPI__p_buffer *)Py_None);

  /* "/home/devel/mpi4py-1.3/src/MPI/winimpl.pxi":33
 * # -----------------------------------------------------------------------------
 * 
 * cdef dict win_keyval = {}             # <<<<<<<<<<<<<<
 * 
 * cdef inline int win_keyval_new(int keyval,
 */
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI_win_keyval));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI_win_keyval));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
  __pyx_v_6mpi4py_3MPI_win_keyval = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":14
 * #------------------------------------------------------------------------------
 * 
 * cdef object __BOTTOM__ = <MPI_Aint>MPI_BOTTOM             # <<<<<<<<<<<<<<
 * 
 * cdef object __IN_PLACE__ = <MPI_Aint>MPI_IN_PLACE
 */
  __pyx_t_2 = __Pyx_PyInt_to_py_MPI_Aint(((MPI_Aint)MPI_BOTTOM)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI___BOTTOM__);
  __Pyx_DECREF(__pyx_v_6mpi4py_3MPI___BOTTOM__);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_v_6mpi4py_3MPI___BOTTOM__ = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/message.pxi":16
 * cdef object __BOTTOM__ = <MPI_Aint>MPI_BOTTOM
 * 
 * cdef object __IN_PLACE__ = <MPI_Aint>MPI_IN_PLACE             # <<<<<<<<<<<<<<
 * 
 * #------------------------------------------------------------------------------
 */
  __pyx_t_2 = __Pyx_PyInt_to_py_MPI_Aint(((MPI_Aint)MPI_IN_PLACE)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI___IN_PLACE__);
  __Pyx_DECREF(__pyx_v_6mpi4py_3MPI___IN_PLACE__);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_v_6mpi4py_3MPI___IN_PLACE__ = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":12
 * # -----------------------------------------------------------------------------
 * 
 * cdef object PyPickle_dumps = None             # <<<<<<<<<<<<<<
 * cdef object PyPickle_loads = None
 * cdef object PyPickle_PROTOCOL = -1
 */
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_dumps);
  __Pyx_DECREF(__pyx_v_6mpi4py_3MPI_PyPickle_dumps);
  __Pyx_GIVEREF(Py_None);
  __pyx_v_6mpi4py_3MPI_PyPickle_dumps = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":13
 * 
 * cdef object PyPickle_dumps = None
 * cdef object PyPickle_loads = None             # <<<<<<<<<<<<<<
 * cdef object PyPickle_PROTOCOL = -1
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_loads);
  __Pyx_DECREF(__pyx_v_6mpi4py_3MPI_PyPickle_loads);
  __Pyx_GIVEREF(Py_None);
  __pyx_v_6mpi4py_3MPI_PyPickle_loads = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":14
 * cdef object PyPickle_dumps = None
 * cdef object PyPickle_loads = None
 * cdef object PyPickle_PROTOCOL = -1             # <<<<<<<<<<<<<<
 * 
 * try:
 */
  __Pyx_INCREF(__pyx_int_neg_1);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);
  __Pyx_DECREF(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);
  __Pyx_GIVEREF(__pyx_int_neg_1);
  __pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL = __pyx_int_neg_1;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":16
 * cdef object PyPickle_PROTOCOL = -1
 * 
 * try:             # <<<<<<<<<<<<<<
 *     from cPickle import dumps as PyPickle_dumps
 *     from cPickle import loads as PyPickle_loads
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_7);
    /*try:*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":17
 * 
 * try:
 *     from cPickle import dumps as PyPickle_dumps             # <<<<<<<<<<<<<<
 *     from cPickle import loads as PyPickle_loads
 *     from cPickle import HIGHEST_PROTOCOL as PyPickle_PROTOCOL
 */
      __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__dumps));
      PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_s__dumps));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dumps));
      __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__cPickle), ((PyObject *)__pyx_t_2), -1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
      __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__dumps); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_dumps);
      __Pyx_DECREF(__pyx_v_6mpi4py_3MPI_PyPickle_dumps);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_v_6mpi4py_3MPI_PyPickle_dumps = __pyx_t_2;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":18
 * try:
 *     from cPickle import dumps as PyPickle_dumps
 *     from cPickle import loads as PyPickle_loads             # <<<<<<<<<<<<<<
 *     from cPickle import HIGHEST_PROTOCOL as PyPickle_PROTOCOL
 * except ImportError:
 */
      __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__loads));
      PyList_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_n_s__loads));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__loads));
      __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s__cPickle), ((PyObject *)__pyx_t_3), -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__loads); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_loads);
      __Pyx_DECREF(__pyx_v_6mpi4py_3MPI_PyPickle_loads);
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_v_6mpi4py_3MPI_PyPickle_loads = __pyx_t_3;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":19
 *     from cPickle import dumps as PyPickle_dumps
 *     from cPickle import loads as PyPickle_loads
 *     from cPickle import HIGHEST_PROTOCOL as PyPickle_PROTOCOL             # <<<<<<<<<<<<<<
 * except ImportError:
 *     from pickle import dumps as PyPickle_dumps
 */
      __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__HIGHEST_PROTOCOL));
      PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_s__HIGHEST_PROTOCOL));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__HIGHEST_PROTOCOL));
      __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__cPickle), ((PyObject *)__pyx_t_2), -1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
      __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__HIGHEST_PROTOCOL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);
      __Pyx_DECREF(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL = __pyx_t_2;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    goto __pyx_L9_try_end;
    __pyx_L2_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":20
 *     from cPickle import loads as PyPickle_loads
 *     from cPickle import HIGHEST_PROTOCOL as PyPickle_PROTOCOL
 * except ImportError:             # <<<<<<<<<<<<<<
 *     from pickle import dumps as PyPickle_dumps
 *     from pickle import loads as PyPickle_loads
 */
    __pyx_t_1 = PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_1) {
      __Pyx_AddTraceback("mpi4py.MPI", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_8);

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":21
 *     from cPickle import HIGHEST_PROTOCOL as PyPickle_PROTOCOL
 * except ImportError:
 *     from pickle import dumps as PyPickle_dumps             # <<<<<<<<<<<<<<
 *     from pickle import loads as PyPickle_loads
 *     from pickle import HIGHEST_PROTOCOL as PyPickle_PROTOCOL
 */
      __pyx_t_9 = PyList_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_9));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__dumps));
      PyList_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_n_s__dumps));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dumps));
      __pyx_t_10 = __Pyx_Import(((PyObject *)__pyx_n_s__pickle), ((PyObject *)__pyx_t_9), -1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
      __pyx_t_9 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__dumps); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_dumps);
      __Pyx_DECREF(__pyx_v_6mpi4py_3MPI_PyPickle_dumps);
      __Pyx_GIVEREF(__pyx_t_9);
      __pyx_v_6mpi4py_3MPI_PyPickle_dumps = __pyx_t_9;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":22
 * except ImportError:
 *     from pickle import dumps as PyPickle_dumps
 *     from pickle import loads as PyPickle_loads             # <<<<<<<<<<<<<<
 *     from pickle import HIGHEST_PROTOCOL as PyPickle_PROTOCOL
 * 
 */
      __pyx_t_10 = PyList_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_10));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__loads));
      PyList_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_n_s__loads));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__loads));
      __pyx_t_9 = __Pyx_Import(((PyObject *)__pyx_n_s__pickle), ((PyObject *)__pyx_t_10), -1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
      __pyx_t_10 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__loads); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_INCREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_loads);
      __Pyx_DECREF(__pyx_v_6mpi4py_3MPI_PyPickle_loads);
      __Pyx_GIVEREF(__pyx_t_10);
      __pyx_v_6mpi4py_3MPI_PyPickle_loads = __pyx_t_10;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":23
 *     from pickle import dumps as PyPickle_dumps
 *     from pickle import loads as PyPickle_loads
 *     from pickle import HIGHEST_PROTOCOL as PyPickle_PROTOCOL             # <<<<<<<<<<<<<<
 * 
 * cdef object PyStringIO_New = None
 */
      __pyx_t_9 = PyList_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_9));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__HIGHEST_PROTOCOL));
      PyList_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_n_s__HIGHEST_PROTOCOL));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__HIGHEST_PROTOCOL));
      __pyx_t_10 = __Pyx_Import(((PyObject *)__pyx_n_s__pickle), ((PyObject *)__pyx_t_9), -1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
      __pyx_t_9 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__HIGHEST_PROTOCOL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);
      __Pyx_DECREF(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);
      __Pyx_GIVEREF(__pyx_t_9);
      __pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL = __pyx_t_9;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L3_exception_handled;
    }
    __pyx_L4_except_error:;
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
    goto __pyx_L1_error;
    __pyx_L3_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
    __pyx_L9_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":25
 *     from pickle import HIGHEST_PROTOCOL as PyPickle_PROTOCOL
 * 
 * cdef object PyStringIO_New = None             # <<<<<<<<<<<<<<
 * cdef object PyPickle_loadf  = None
 * try:
 */
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyStringIO_New);
  __Pyx_DECREF(__pyx_v_6mpi4py_3MPI_PyStringIO_New);
  __Pyx_GIVEREF(Py_None);
  __pyx_v_6mpi4py_3MPI_PyStringIO_New = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":26
 * 
 * cdef object PyStringIO_New = None
 * cdef object PyPickle_loadf  = None             # <<<<<<<<<<<<<<
 * try:
 *     from cStringIO import StringIO as PyStringIO_New
 */
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_loadf);
  __Pyx_DECREF(__pyx_v_6mpi4py_3MPI_PyPickle_loadf);
  __Pyx_GIVEREF(Py_None);
  __pyx_v_6mpi4py_3MPI_PyPickle_loadf = Py_None;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":27
 * cdef object PyStringIO_New = None
 * cdef object PyPickle_loadf  = None
 * try:             # <<<<<<<<<<<<<<
 *     from cStringIO import StringIO as PyStringIO_New
 *     from cPickle import load as PyPickle_loadf
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_5);
    /*try:*/ {

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":28
 * cdef object PyPickle_loadf  = None
 * try:
 *     from cStringIO import StringIO as PyStringIO_New             # <<<<<<<<<<<<<<
 *     from cPickle import load as PyPickle_loadf
 * except ImportError:
 */
      __pyx_t_8 = PyList_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_8));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__StringIO));
      PyList_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_n_s__StringIO));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__StringIO));
      __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s__cStringIO), ((PyObject *)__pyx_t_8), -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
      __pyx_t_8 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__StringIO); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyStringIO_New);
      __Pyx_DECREF(__pyx_v_6mpi4py_3MPI_PyStringIO_New);
      __Pyx_GIVEREF(__pyx_t_8);
      __pyx_v_6mpi4py_3MPI_PyStringIO_New = __pyx_t_8;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":29
 * try:
 *     from cStringIO import StringIO as PyStringIO_New
 *     from cPickle import load as PyPickle_loadf             # <<<<<<<<<<<<<<
 * except ImportError:
 *     pass
 */
      __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__load));
      PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_s__load));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__load));
      __pyx_t_8 = __Pyx_Import(((PyObject *)__pyx_n_s__cPickle), ((PyObject *)__pyx_t_2), -1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
      __pyx_t_2 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__load); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_loadf);
      __Pyx_DECREF(__pyx_v_6mpi4py_3MPI_PyPickle_loadf);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_v_6mpi4py_3MPI_PyPickle_loadf = __pyx_t_2;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L19_try_end;
    __pyx_L12_error:;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":30
 *     from cStringIO import StringIO as PyStringIO_New
 *     from cPickle import load as PyPickle_loadf
 * except ImportError:             # <<<<<<<<<<<<<<
 *     pass
 * 
 */
    __pyx_t_1 = PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_1) {
      PyErr_Restore(0,0,0);
      goto __pyx_L13_exception_handled;
    }
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
    goto __pyx_L1_error;
    __pyx_L13_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
    __pyx_L19_try_end:;
  }

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":160
 * 
 * 
 * cdef _p_Pickle PyMPI_PICKLE = _p_Pickle()             # <<<<<<<<<<<<<<
 * 
 * cdef inline _p_Pickle PyMPI_pickle():
 */
  __pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_Pickle)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickle *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/pickled.pxi":165
 *     return PyMPI_PICKLE
 * 
 * _p_pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s___p_pickle, ((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":1
 * class Exception(RuntimeError):             # <<<<<<<<<<<<<<
 * 
 *     """
 */
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_8));

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":7
 *     """
 * 
 *     def __init__(self, int ierr=0):             # <<<<<<<<<<<<<<
 *         if ierr < MPI_SUCCESS:      ierr = MPI_ERR_UNKNOWN
 *         if ierr > MPI_ERR_LASTCODE: ierr = MPI_ERR_UNKNOWN
 */
  __pyx_t_2 = __pyx_binding_PyCFunctionType_NewEx(&__pyx_mdef_6mpi4py_3MPI_9Exception___init__, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s____init__, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":13
 *         RuntimeError.__init__(self, self.ob_mpi)
 * 
 *     def __eq__(self, int error):             # <<<<<<<<<<<<<<
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr == error)
 */
  __pyx_t_2 = __pyx_binding_PyCFunctionType_NewEx(&__pyx_mdef_6mpi4py_3MPI_9Exception_1__eq__, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s____eq__, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":16
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr == error)
 *     def __ne__(self, int error):             # <<<<<<<<<<<<<<
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr != error)
 */
  __pyx_t_2 = __pyx_binding_PyCFunctionType_NewEx(&__pyx_mdef_6mpi4py_3MPI_9Exception_2__ne__, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s____ne__, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":19
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr != error)
 *     def __lt__(self, int error):             # <<<<<<<<<<<<<<
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr < error)
 */
  __pyx_t_2 = __pyx_binding_PyCFunctionType_NewEx(&__pyx_mdef_6mpi4py_3MPI_9Exception_3__lt__, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s____lt__, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":22
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr < error)
 *     def __le__(self, int error):             # <<<<<<<<<<<<<<
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr <= error)
 */
  __pyx_t_2 = __pyx_binding_PyCFunctionType_NewEx(&__pyx_mdef_6mpi4py_3MPI_9Exception_4__le__, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s____le__, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":25
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr <= error)
 *     def __gt__(self, int error):             # <<<<<<<<<<<<<<
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr > error)
 */
  __pyx_t_2 = __pyx_binding_PyCFunctionType_NewEx(&__pyx_mdef_6mpi4py_3MPI_9Exception_5__gt__, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s____gt__, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":28
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr > error)
 *     def __ge__(self, int error):             # <<<<<<<<<<<<<<
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr >= error)
 */
  __pyx_t_2 = __pyx_binding_PyCFunctionType_NewEx(&__pyx_mdef_6mpi4py_3MPI_9Exception_6__ge__, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s____ge__, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":32
 *         return <bint> (ierr >= error)
 * 
 *     def __bool__(self):             # <<<<<<<<<<<<<<
 *         cdef int ierr = self.ob_mpi
 *         return ierr != MPI_SUCCESS
 */
  __pyx_t_2 = __pyx_binding_PyCFunctionType_NewEx(&__pyx_mdef_6mpi4py_3MPI_9Exception_7__bool__, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s____bool__, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":36
 *         return ierr != MPI_SUCCESS
 * 
 *     def __int__(self):             # <<<<<<<<<<<<<<
 *         if not mpi_active():
 *             return self.ob_mpi
 */
  __pyx_t_2 = __pyx_binding_PyCFunctionType_NewEx(&__pyx_mdef_6mpi4py_3MPI_9Exception_8__int__, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s____int__, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":41
 *         return self.Get_error_code()
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "MPI.Exception(%d)" % self.ob_mpi
 * 
 */
  __pyx_t_2 = __pyx_binding_PyCFunctionType_NewEx(&__pyx_mdef_6mpi4py_3MPI_9Exception_9__repr__, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s____repr__, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":44
 *         return "MPI.Exception(%d)" % self.ob_mpi
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         if not mpi_active():
 *             return "error code: %d" % self.ob_mpi
 */
  __pyx_t_2 = __pyx_binding_PyCFunctionType_NewEx(&__pyx_mdef_6mpi4py_3MPI_9Exception_10__str__, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s____str__, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":49
 *         return self.Get_error_string()
 * 
 *     def Get_error_code(self):             # <<<<<<<<<<<<<<
 *         """
 *         Error code
 */
  __pyx_t_2 = __pyx_binding_PyCFunctionType_NewEx(&__pyx_mdef_6mpi4py_3MPI_9Exception_11Get_error_code, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s__Get_error_code, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":57
 *         return errorcode
 * 
 *     error_code = property(Get_error_code, doc="error code")             # <<<<<<<<<<<<<<
 * 
 *     def Get_error_class(self):
 */
  __pyx_t_2 = PyObject_GetItem(__pyx_t_8, __pyx_n_s__Get_error_code); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__doc), ((PyObject *)__pyx_kp_s_149)) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_10 = PyEval_CallObjectWithKeywords(__pyx_builtin_property, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s__error_code, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":59
 *     error_code = property(Get_error_code, doc="error code")
 * 
 *     def Get_error_class(self):             # <<<<<<<<<<<<<<
 *         """
 *         Error class
 */
  __pyx_t_10 = __pyx_binding_PyCFunctionType_NewEx(&__pyx_mdef_6mpi4py_3MPI_9Exception_12Get_error_class, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s__Get_error_class, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":67
 *         return errorclass
 * 
 *     error_class = property(Get_error_class, doc="error class")             # <<<<<<<<<<<<<<
 * 
 *     def Get_error_string(self):
 */
  __pyx_t_10 = PyObject_GetItem(__pyx_t_8, __pyx_n_s__Get_error_class); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;
  __pyx_t_10 = PyDict_New(); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_10));
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_n_s__doc), ((PyObject *)__pyx_kp_s_150)) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_builtin_property, ((PyObject *)__pyx_t_2), ((PyObject *)__pyx_t_10)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s__error_class, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":69
 *     error_class = property(Get_error_class, doc="error class")
 * 
 *     def Get_error_string(self):             # <<<<<<<<<<<<<<
 *         """
 *         Error string
 */
  __pyx_t_3 = __pyx_binding_PyCFunctionType_NewEx(&__pyx_mdef_6mpi4py_3MPI_9Exception_13Get_error_string, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s__Get_error_string, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":78
 *         return tompistr(string, resultlen)
 * 
 *     error_string = property(Get_error_string, doc="error string")             # <<<<<<<<<<<<<<
 */
  __pyx_t_3 = PyObject_GetItem(__pyx_t_8, __pyx_n_s__Get_error_string); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_10));
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__doc), ((PyObject *)__pyx_kp_s_151)) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = PyEval_CallObjectWithKeywords(__pyx_builtin_property, ((PyObject *)__pyx_t_10), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  if (PyObject_SetItem(__pyx_t_8, __pyx_n_s__error_string, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/ExceptionP.pyx":1
 * class Exception(RuntimeError):             # <<<<<<<<<<<<<<
 * 
 *     """
 */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_builtin_RuntimeError);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_RuntimeError);
  __Pyx_GIVEREF(__pyx_builtin_RuntimeError);
  if (PyDict_SetItemString(((PyObject *)__pyx_t_8), "__doc__", ((PyObject *)__pyx_kp_s_152)) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = __Pyx_CreateClass(((PyObject *)__pyx_t_2), ((PyObject *)__pyx_t_8), __pyx_n_s__Exception, __pyx_n_s_148); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Exception, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":3
 * include "ExceptionP.pyx"
 * #include "ExceptionC.pyx"
 * MPIException = Exception             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__Exception); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_MPIException);
  __Pyx_DECREF(__pyx_v_6mpi4py_3MPI_MPIException);
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI_MPIException = __pyx_t_8;
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":7
 * 
 * # Actually no errors
 * SUCCESS      = MPI_SUCCESS             # <<<<<<<<<<<<<<
 * ERR_LASTCODE = MPI_ERR_LASTCODE
 * 
 */
  __pyx_t_8 = PyInt_FromLong(MPI_SUCCESS); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SUCCESS, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":8
 * # Actually no errors
 * SUCCESS      = MPI_SUCCESS
 * ERR_LASTCODE = MPI_ERR_LASTCODE             # <<<<<<<<<<<<<<
 * 
 * # MPI-1 Error classes
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_LASTCODE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_LASTCODE, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":13
 * # -------------------
 * # MPI-1 Objects
 * ERR_COMM      = MPI_ERR_COMM             # <<<<<<<<<<<<<<
 * ERR_GROUP     = MPI_ERR_GROUP
 * ERR_TYPE      = MPI_ERR_TYPE
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_COMM); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_COMM, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":14
 * # MPI-1 Objects
 * ERR_COMM      = MPI_ERR_COMM
 * ERR_GROUP     = MPI_ERR_GROUP             # <<<<<<<<<<<<<<
 * ERR_TYPE      = MPI_ERR_TYPE
 * ERR_REQUEST   = MPI_ERR_REQUEST
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_GROUP); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_GROUP, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":15
 * ERR_COMM      = MPI_ERR_COMM
 * ERR_GROUP     = MPI_ERR_GROUP
 * ERR_TYPE      = MPI_ERR_TYPE             # <<<<<<<<<<<<<<
 * ERR_REQUEST   = MPI_ERR_REQUEST
 * ERR_OP        = MPI_ERR_OP
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_TYPE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_TYPE, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":16
 * ERR_GROUP     = MPI_ERR_GROUP
 * ERR_TYPE      = MPI_ERR_TYPE
 * ERR_REQUEST   = MPI_ERR_REQUEST             # <<<<<<<<<<<<<<
 * ERR_OP        = MPI_ERR_OP
 * # Communication argument parameters
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_REQUEST); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_REQUEST, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":17
 * ERR_TYPE      = MPI_ERR_TYPE
 * ERR_REQUEST   = MPI_ERR_REQUEST
 * ERR_OP        = MPI_ERR_OP             # <<<<<<<<<<<<<<
 * # Communication argument parameters
 * ERR_BUFFER    = MPI_ERR_BUFFER
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_OP); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_OP, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":19
 * ERR_OP        = MPI_ERR_OP
 * # Communication argument parameters
 * ERR_BUFFER    = MPI_ERR_BUFFER             # <<<<<<<<<<<<<<
 * ERR_COUNT     = MPI_ERR_COUNT
 * ERR_TAG       = MPI_ERR_TAG
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_BUFFER); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_BUFFER, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":20
 * # Communication argument parameters
 * ERR_BUFFER    = MPI_ERR_BUFFER
 * ERR_COUNT     = MPI_ERR_COUNT             # <<<<<<<<<<<<<<
 * ERR_TAG       = MPI_ERR_TAG
 * ERR_RANK      = MPI_ERR_RANK
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_COUNT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_COUNT, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":21
 * ERR_BUFFER    = MPI_ERR_BUFFER
 * ERR_COUNT     = MPI_ERR_COUNT
 * ERR_TAG       = MPI_ERR_TAG             # <<<<<<<<<<<<<<
 * ERR_RANK      = MPI_ERR_RANK
 * ERR_ROOT      = MPI_ERR_ROOT
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_TAG); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_TAG, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":22
 * ERR_COUNT     = MPI_ERR_COUNT
 * ERR_TAG       = MPI_ERR_TAG
 * ERR_RANK      = MPI_ERR_RANK             # <<<<<<<<<<<<<<
 * ERR_ROOT      = MPI_ERR_ROOT
 * ERR_TRUNCATE  = MPI_ERR_TRUNCATE
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_RANK); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_RANK, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":23
 * ERR_TAG       = MPI_ERR_TAG
 * ERR_RANK      = MPI_ERR_RANK
 * ERR_ROOT      = MPI_ERR_ROOT             # <<<<<<<<<<<<<<
 * ERR_TRUNCATE  = MPI_ERR_TRUNCATE
 * # Multiple completion
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_ROOT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_ROOT, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":24
 * ERR_RANK      = MPI_ERR_RANK
 * ERR_ROOT      = MPI_ERR_ROOT
 * ERR_TRUNCATE  = MPI_ERR_TRUNCATE             # <<<<<<<<<<<<<<
 * # Multiple completion
 * ERR_IN_STATUS = MPI_ERR_IN_STATUS
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_TRUNCATE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_TRUNCATE, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":26
 * ERR_TRUNCATE  = MPI_ERR_TRUNCATE
 * # Multiple completion
 * ERR_IN_STATUS = MPI_ERR_IN_STATUS             # <<<<<<<<<<<<<<
 * ERR_PENDING   = MPI_ERR_PENDING
 * # Topology argument parameters
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_IN_STATUS); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_IN_STATUS, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":27
 * # Multiple completion
 * ERR_IN_STATUS = MPI_ERR_IN_STATUS
 * ERR_PENDING   = MPI_ERR_PENDING             # <<<<<<<<<<<<<<
 * # Topology argument parameters
 * ERR_TOPOLOGY  = MPI_ERR_TOPOLOGY
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_PENDING); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_PENDING, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":29
 * ERR_PENDING   = MPI_ERR_PENDING
 * # Topology argument parameters
 * ERR_TOPOLOGY  = MPI_ERR_TOPOLOGY             # <<<<<<<<<<<<<<
 * ERR_DIMS      = MPI_ERR_DIMS
 * # Other arguments parameters
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_TOPOLOGY); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_TOPOLOGY, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":30
 * # Topology argument parameters
 * ERR_TOPOLOGY  = MPI_ERR_TOPOLOGY
 * ERR_DIMS      = MPI_ERR_DIMS             # <<<<<<<<<<<<<<
 * # Other arguments parameters
 * ERR_ARG       = MPI_ERR_ARG
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_DIMS); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_DIMS, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":32
 * ERR_DIMS      = MPI_ERR_DIMS
 * # Other arguments parameters
 * ERR_ARG       = MPI_ERR_ARG             # <<<<<<<<<<<<<<
 * # Other errors
 * ERR_OTHER     = MPI_ERR_OTHER
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_ARG); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_ARG, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":34
 * ERR_ARG       = MPI_ERR_ARG
 * # Other errors
 * ERR_OTHER     = MPI_ERR_OTHER             # <<<<<<<<<<<<<<
 * ERR_UNKNOWN   = MPI_ERR_UNKNOWN
 * ERR_INTERN    = MPI_ERR_INTERN
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_OTHER); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_OTHER, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":35
 * # Other errors
 * ERR_OTHER     = MPI_ERR_OTHER
 * ERR_UNKNOWN   = MPI_ERR_UNKNOWN             # <<<<<<<<<<<<<<
 * ERR_INTERN    = MPI_ERR_INTERN
 * 
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_UNKNOWN); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_UNKNOWN, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":36
 * ERR_OTHER     = MPI_ERR_OTHER
 * ERR_UNKNOWN   = MPI_ERR_UNKNOWN
 * ERR_INTERN    = MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 * 
 * # MPI-2 Error classes
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_INTERN); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_INTERN, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":41
 * # -------------------
 * # MPI-2 Objects
 * ERR_INFO                   = MPI_ERR_INFO             # <<<<<<<<<<<<<<
 * ERR_FILE                   = MPI_ERR_FILE
 * ERR_WIN                    = MPI_ERR_WIN
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_INFO); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_INFO, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":42
 * # MPI-2 Objects
 * ERR_INFO                   = MPI_ERR_INFO
 * ERR_FILE                   = MPI_ERR_FILE             # <<<<<<<<<<<<<<
 * ERR_WIN                    = MPI_ERR_WIN
 * # Object attributes
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_FILE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_FILE, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":43
 * ERR_INFO                   = MPI_ERR_INFO
 * ERR_FILE                   = MPI_ERR_FILE
 * ERR_WIN                    = MPI_ERR_WIN             # <<<<<<<<<<<<<<
 * # Object attributes
 * ERR_KEYVAL                 = MPI_ERR_KEYVAL
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_WIN); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_WIN, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":45
 * ERR_WIN                    = MPI_ERR_WIN
 * # Object attributes
 * ERR_KEYVAL                 = MPI_ERR_KEYVAL             # <<<<<<<<<<<<<<
 * # Info Object
 * ERR_INFO_KEY               = MPI_ERR_INFO_KEY
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_KEYVAL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_KEYVAL, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":47
 * ERR_KEYVAL                 = MPI_ERR_KEYVAL
 * # Info Object
 * ERR_INFO_KEY               = MPI_ERR_INFO_KEY             # <<<<<<<<<<<<<<
 * ERR_INFO_VALUE             = MPI_ERR_INFO_VALUE
 * ERR_INFO_NOKEY             = MPI_ERR_INFO_NOKEY
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_INFO_KEY); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_INFO_KEY, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":48
 * # Info Object
 * ERR_INFO_KEY               = MPI_ERR_INFO_KEY
 * ERR_INFO_VALUE             = MPI_ERR_INFO_VALUE             # <<<<<<<<<<<<<<
 * ERR_INFO_NOKEY             = MPI_ERR_INFO_NOKEY
 * # Input/Ouput
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_INFO_VALUE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_INFO_VALUE, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":49
 * ERR_INFO_KEY               = MPI_ERR_INFO_KEY
 * ERR_INFO_VALUE             = MPI_ERR_INFO_VALUE
 * ERR_INFO_NOKEY             = MPI_ERR_INFO_NOKEY             # <<<<<<<<<<<<<<
 * # Input/Ouput
 * ERR_ACCESS                 = MPI_ERR_ACCESS
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_INFO_NOKEY); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_INFO_NOKEY, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":51
 * ERR_INFO_NOKEY             = MPI_ERR_INFO_NOKEY
 * # Input/Ouput
 * ERR_ACCESS                 = MPI_ERR_ACCESS             # <<<<<<<<<<<<<<
 * ERR_AMODE                  = MPI_ERR_AMODE
 * ERR_BAD_FILE               = MPI_ERR_BAD_FILE
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_ACCESS); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_ACCESS, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":52
 * # Input/Ouput
 * ERR_ACCESS                 = MPI_ERR_ACCESS
 * ERR_AMODE                  = MPI_ERR_AMODE             # <<<<<<<<<<<<<<
 * ERR_BAD_FILE               = MPI_ERR_BAD_FILE
 * ERR_FILE_EXISTS            = MPI_ERR_FILE_EXISTS
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_AMODE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_AMODE, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":53
 * ERR_ACCESS                 = MPI_ERR_ACCESS
 * ERR_AMODE                  = MPI_ERR_AMODE
 * ERR_BAD_FILE               = MPI_ERR_BAD_FILE             # <<<<<<<<<<<<<<
 * ERR_FILE_EXISTS            = MPI_ERR_FILE_EXISTS
 * ERR_FILE_IN_USE            = MPI_ERR_FILE_IN_USE
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_BAD_FILE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_BAD_FILE, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":54
 * ERR_AMODE                  = MPI_ERR_AMODE
 * ERR_BAD_FILE               = MPI_ERR_BAD_FILE
 * ERR_FILE_EXISTS            = MPI_ERR_FILE_EXISTS             # <<<<<<<<<<<<<<
 * ERR_FILE_IN_USE            = MPI_ERR_FILE_IN_USE
 * ERR_NO_SPACE               = MPI_ERR_NO_SPACE
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_FILE_EXISTS); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_FILE_EXISTS, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":55
 * ERR_BAD_FILE               = MPI_ERR_BAD_FILE
 * ERR_FILE_EXISTS            = MPI_ERR_FILE_EXISTS
 * ERR_FILE_IN_USE            = MPI_ERR_FILE_IN_USE             # <<<<<<<<<<<<<<
 * ERR_NO_SPACE               = MPI_ERR_NO_SPACE
 * ERR_NO_SUCH_FILE           = MPI_ERR_NO_SUCH_FILE
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_FILE_IN_USE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_FILE_IN_USE, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":56
 * ERR_FILE_EXISTS            = MPI_ERR_FILE_EXISTS
 * ERR_FILE_IN_USE            = MPI_ERR_FILE_IN_USE
 * ERR_NO_SPACE               = MPI_ERR_NO_SPACE             # <<<<<<<<<<<<<<
 * ERR_NO_SUCH_FILE           = MPI_ERR_NO_SUCH_FILE
 * ERR_IO                     = MPI_ERR_IO
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_NO_SPACE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_NO_SPACE, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":57
 * ERR_FILE_IN_USE            = MPI_ERR_FILE_IN_USE
 * ERR_NO_SPACE               = MPI_ERR_NO_SPACE
 * ERR_NO_SUCH_FILE           = MPI_ERR_NO_SUCH_FILE             # <<<<<<<<<<<<<<
 * ERR_IO                     = MPI_ERR_IO
 * ERR_READ_ONLY              = MPI_ERR_READ_ONLY
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_NO_SUCH_FILE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_NO_SUCH_FILE, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":58
 * ERR_NO_SPACE               = MPI_ERR_NO_SPACE
 * ERR_NO_SUCH_FILE           = MPI_ERR_NO_SUCH_FILE
 * ERR_IO                     = MPI_ERR_IO             # <<<<<<<<<<<<<<
 * ERR_READ_ONLY              = MPI_ERR_READ_ONLY
 * ERR_CONVERSION             = MPI_ERR_CONVERSION
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_IO); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_IO, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":59
 * ERR_NO_SUCH_FILE           = MPI_ERR_NO_SUCH_FILE
 * ERR_IO                     = MPI_ERR_IO
 * ERR_READ_ONLY              = MPI_ERR_READ_ONLY             # <<<<<<<<<<<<<<
 * ERR_CONVERSION             = MPI_ERR_CONVERSION
 * ERR_DUP_DATAREP            = MPI_ERR_DUP_DATAREP
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_READ_ONLY); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_READ_ONLY, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":60
 * ERR_IO                     = MPI_ERR_IO
 * ERR_READ_ONLY              = MPI_ERR_READ_ONLY
 * ERR_CONVERSION             = MPI_ERR_CONVERSION             # <<<<<<<<<<<<<<
 * ERR_DUP_DATAREP            = MPI_ERR_DUP_DATAREP
 * ERR_UNSUPPORTED_DATAREP    = MPI_ERR_UNSUPPORTED_DATAREP
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_CONVERSION); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_CONVERSION, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":61
 * ERR_READ_ONLY              = MPI_ERR_READ_ONLY
 * ERR_CONVERSION             = MPI_ERR_CONVERSION
 * ERR_DUP_DATAREP            = MPI_ERR_DUP_DATAREP             # <<<<<<<<<<<<<<
 * ERR_UNSUPPORTED_DATAREP    = MPI_ERR_UNSUPPORTED_DATAREP
 * ERR_UNSUPPORTED_OPERATION  = MPI_ERR_UNSUPPORTED_OPERATION
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_DUP_DATAREP); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_DUP_DATAREP, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":62
 * ERR_CONVERSION             = MPI_ERR_CONVERSION
 * ERR_DUP_DATAREP            = MPI_ERR_DUP_DATAREP
 * ERR_UNSUPPORTED_DATAREP    = MPI_ERR_UNSUPPORTED_DATAREP             # <<<<<<<<<<<<<<
 * ERR_UNSUPPORTED_OPERATION  = MPI_ERR_UNSUPPORTED_OPERATION
 * # Dynamic Process Management
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_UNSUPPORTED_DATAREP); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_153, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":63
 * ERR_DUP_DATAREP            = MPI_ERR_DUP_DATAREP
 * ERR_UNSUPPORTED_DATAREP    = MPI_ERR_UNSUPPORTED_DATAREP
 * ERR_UNSUPPORTED_OPERATION  = MPI_ERR_UNSUPPORTED_OPERATION             # <<<<<<<<<<<<<<
 * # Dynamic Process Management
 * ERR_NAME                   = MPI_ERR_NAME
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_UNSUPPORTED_OPERATION); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_154, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":65
 * ERR_UNSUPPORTED_OPERATION  = MPI_ERR_UNSUPPORTED_OPERATION
 * # Dynamic Process Management
 * ERR_NAME                   = MPI_ERR_NAME             # <<<<<<<<<<<<<<
 * ERR_NO_MEM                 = MPI_ERR_NO_MEM
 * ERR_NOT_SAME               = MPI_ERR_NOT_SAME
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_NAME); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_NAME, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":66
 * # Dynamic Process Management
 * ERR_NAME                   = MPI_ERR_NAME
 * ERR_NO_MEM                 = MPI_ERR_NO_MEM             # <<<<<<<<<<<<<<
 * ERR_NOT_SAME               = MPI_ERR_NOT_SAME
 * ERR_PORT                   = MPI_ERR_PORT
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_NO_MEM); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_NO_MEM, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":67
 * ERR_NAME                   = MPI_ERR_NAME
 * ERR_NO_MEM                 = MPI_ERR_NO_MEM
 * ERR_NOT_SAME               = MPI_ERR_NOT_SAME             # <<<<<<<<<<<<<<
 * ERR_PORT                   = MPI_ERR_PORT
 * ERR_QUOTA                  = MPI_ERR_QUOTA
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_NOT_SAME); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_NOT_SAME, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":68
 * ERR_NO_MEM                 = MPI_ERR_NO_MEM
 * ERR_NOT_SAME               = MPI_ERR_NOT_SAME
 * ERR_PORT                   = MPI_ERR_PORT             # <<<<<<<<<<<<<<
 * ERR_QUOTA                  = MPI_ERR_QUOTA
 * ERR_SERVICE                = MPI_ERR_SERVICE
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_PORT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_PORT, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":69
 * ERR_NOT_SAME               = MPI_ERR_NOT_SAME
 * ERR_PORT                   = MPI_ERR_PORT
 * ERR_QUOTA                  = MPI_ERR_QUOTA             # <<<<<<<<<<<<<<
 * ERR_SERVICE                = MPI_ERR_SERVICE
 * ERR_SPAWN                  = MPI_ERR_SPAWN
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_QUOTA); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_QUOTA, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":70
 * ERR_PORT                   = MPI_ERR_PORT
 * ERR_QUOTA                  = MPI_ERR_QUOTA
 * ERR_SERVICE                = MPI_ERR_SERVICE             # <<<<<<<<<<<<<<
 * ERR_SPAWN                  = MPI_ERR_SPAWN
 * # Windows
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_SERVICE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_SERVICE, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":71
 * ERR_QUOTA                  = MPI_ERR_QUOTA
 * ERR_SERVICE                = MPI_ERR_SERVICE
 * ERR_SPAWN                  = MPI_ERR_SPAWN             # <<<<<<<<<<<<<<
 * # Windows
 * ERR_BASE                   = MPI_ERR_BASE
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_SPAWN); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_SPAWN, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":73
 * ERR_SPAWN                  = MPI_ERR_SPAWN
 * # Windows
 * ERR_BASE                   = MPI_ERR_BASE             # <<<<<<<<<<<<<<
 * ERR_LOCKTYPE               = MPI_ERR_LOCKTYPE
 * ERR_RMA_CONFLICT           = MPI_ERR_RMA_CONFLICT
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_BASE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_BASE, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":74
 * # Windows
 * ERR_BASE                   = MPI_ERR_BASE
 * ERR_LOCKTYPE               = MPI_ERR_LOCKTYPE             # <<<<<<<<<<<<<<
 * ERR_RMA_CONFLICT           = MPI_ERR_RMA_CONFLICT
 * ERR_RMA_SYNC               = MPI_ERR_RMA_SYNC
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_LOCKTYPE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_LOCKTYPE, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":75
 * ERR_BASE                   = MPI_ERR_BASE
 * ERR_LOCKTYPE               = MPI_ERR_LOCKTYPE
 * ERR_RMA_CONFLICT           = MPI_ERR_RMA_CONFLICT             # <<<<<<<<<<<<<<
 * ERR_RMA_SYNC               = MPI_ERR_RMA_SYNC
 * ERR_SIZE                   = MPI_ERR_SIZE
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_RMA_CONFLICT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_RMA_CONFLICT, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":76
 * ERR_LOCKTYPE               = MPI_ERR_LOCKTYPE
 * ERR_RMA_CONFLICT           = MPI_ERR_RMA_CONFLICT
 * ERR_RMA_SYNC               = MPI_ERR_RMA_SYNC             # <<<<<<<<<<<<<<
 * ERR_SIZE                   = MPI_ERR_SIZE
 * ERR_DISP                   = MPI_ERR_DISP
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_RMA_SYNC); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_RMA_SYNC, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":77
 * ERR_RMA_CONFLICT           = MPI_ERR_RMA_CONFLICT
 * ERR_RMA_SYNC               = MPI_ERR_RMA_SYNC
 * ERR_SIZE                   = MPI_ERR_SIZE             # <<<<<<<<<<<<<<
 * ERR_DISP                   = MPI_ERR_DISP
 * ERR_ASSERT                 = MPI_ERR_ASSERT
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_SIZE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_SIZE, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":78
 * ERR_RMA_SYNC               = MPI_ERR_RMA_SYNC
 * ERR_SIZE                   = MPI_ERR_SIZE
 * ERR_DISP                   = MPI_ERR_DISP             # <<<<<<<<<<<<<<
 * ERR_ASSERT                 = MPI_ERR_ASSERT
 * 
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_DISP); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_DISP, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":79
 * ERR_SIZE                   = MPI_ERR_SIZE
 * ERR_DISP                   = MPI_ERR_DISP
 * ERR_ASSERT                 = MPI_ERR_ASSERT             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_8 = PyInt_FromLong(MPI_ERR_ASSERT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERR_ASSERT, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":82
 * 
 * 
 * def Get_error_class(int errorcode):             # <<<<<<<<<<<<<<
 *     """
 *     Convert an *error code* into an *error class*
 */
  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_Get_error_class, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Get_error_class, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":90
 *     return errorclass
 * 
 * def Get_error_string(int errorcode):             # <<<<<<<<<<<<<<
 *     """
 *     Return the *error string* for a given
 */
  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_1Get_error_string, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Get_error_string, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":101
 * 
 * 
 * def Add_error_class():             # <<<<<<<<<<<<<<
 *     """
 *     Add an *error class* to the known error classes
 */
  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_2Add_error_class, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Add_error_class, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":109
 *     return errorclass
 * 
 * def Add_error_code(int errorclass):             # <<<<<<<<<<<<<<
 *     """
 *     Add an *error code* to an *error class*
 */
  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_3Add_error_code, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Add_error_code, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Exception.pyx":117
 *     return errorcode
 * 
 * def Add_error_string(int errorcode, string):             # <<<<<<<<<<<<<<
 *     """
 *     Associate an *error string* with an
 */
  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_4Add_error_string, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Add_error_string, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":40
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_n_s__f2py); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Errhandler->tp_dict, __pyx_n_s__f2py, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Errhandler);

  /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":49
 * 
 * 
 * cdef Errhandler __ERRHANDLER_NULL__  = new_Errhandler(MPI_ERRHANDLER_NULL)             # <<<<<<<<<<<<<<
 * cdef Errhandler __ERRORS_RETURN__    = new_Errhandler(MPI_ERRORS_RETURN)
 * cdef Errhandler __ERRORS_ARE_FATAL__ = new_Errhandler(MPI_ERRORS_ARE_FATAL)
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Errhandler(MPI_ERRHANDLER_NULL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___ERRHANDLER_NULL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___ERRHANDLER_NULL__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___ERRHANDLER_NULL__ = ((struct PyMPIErrhandlerObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":50
 * 
 * cdef Errhandler __ERRHANDLER_NULL__  = new_Errhandler(MPI_ERRHANDLER_NULL)
 * cdef Errhandler __ERRORS_RETURN__    = new_Errhandler(MPI_ERRORS_RETURN)             # <<<<<<<<<<<<<<
 * cdef Errhandler __ERRORS_ARE_FATAL__ = new_Errhandler(MPI_ERRORS_ARE_FATAL)
 * 
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Errhandler(MPI_ERRORS_RETURN)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_RETURN__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_RETURN__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___ERRORS_RETURN__ = ((struct PyMPIErrhandlerObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":51
 * cdef Errhandler __ERRHANDLER_NULL__  = new_Errhandler(MPI_ERRHANDLER_NULL)
 * cdef Errhandler __ERRORS_RETURN__    = new_Errhandler(MPI_ERRORS_RETURN)
 * cdef Errhandler __ERRORS_ARE_FATAL__ = new_Errhandler(MPI_ERRORS_ARE_FATAL)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Errhandler(MPI_ERRORS_ARE_FATAL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_ARE_FATAL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_ARE_FATAL__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___ERRORS_ARE_FATAL__ = ((struct PyMPIErrhandlerObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":57
 * # -----------------------------
 * 
 * ERRHANDLER_NULL  = __ERRHANDLER_NULL__  #: Null error handler             # <<<<<<<<<<<<<<
 * ERRORS_RETURN    = __ERRORS_RETURN__    #: Errors return error handler
 * ERRORS_ARE_FATAL = __ERRORS_ARE_FATAL__ #: Errors are fatal error handler
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERRHANDLER_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___ERRHANDLER_NULL__)) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":58
 * 
 * ERRHANDLER_NULL  = __ERRHANDLER_NULL__  #: Null error handler
 * ERRORS_RETURN    = __ERRORS_RETURN__    #: Errors return error handler             # <<<<<<<<<<<<<<
 * ERRORS_ARE_FATAL = __ERRORS_ARE_FATAL__ #: Errors are fatal error handler
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERRORS_RETURN, ((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_RETURN__)) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Errhandler.pyx":59
 * ERRHANDLER_NULL  = __ERRHANDLER_NULL__  #: Null error handler
 * ERRORS_RETURN    = __ERRORS_RETURN__    #: Errors return error handler
 * ERRORS_ARE_FATAL = __ERRORS_ARE_FATAL__ #: Errors are fatal error handler             # <<<<<<<<<<<<<<
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERRORS_ARE_FATAL, ((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_ARE_FATAL__)) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":4
 * # ------------------------
 * 
 * ORDER_C       = MPI_ORDER_C       #: C order (a.k.a. row major)             # <<<<<<<<<<<<<<
 * ORDER_FORTRAN = MPI_ORDER_FORTRAN #: Fortran order (a.k.a. column major)
 * ORDER_F       = MPI_ORDER_FORTRAN #: Convenience alias for ORDER_FORTRAN
 */
  __pyx_t_3 = PyInt_FromLong(MPI_ORDER_C); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ORDER_C, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":5
 * 
 * ORDER_C       = MPI_ORDER_C       #: C order (a.k.a. row major)
 * ORDER_FORTRAN = MPI_ORDER_FORTRAN #: Fortran order (a.k.a. column major)             # <<<<<<<<<<<<<<
 * ORDER_F       = MPI_ORDER_FORTRAN #: Convenience alias for ORDER_FORTRAN
 * 
 */
  __pyx_t_3 = PyInt_FromLong(MPI_ORDER_FORTRAN); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ORDER_FORTRAN, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":6
 * ORDER_C       = MPI_ORDER_C       #: C order (a.k.a. row major)
 * ORDER_FORTRAN = MPI_ORDER_FORTRAN #: Fortran order (a.k.a. column major)
 * ORDER_F       = MPI_ORDER_FORTRAN #: Convenience alias for ORDER_FORTRAN             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_3 = PyInt_FromLong(MPI_ORDER_FORTRAN); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ORDER_F, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":11
 * # Type classes for Fortran datatype matching
 * # ------------------------------------------
 * TYPECLASS_INTEGER = MPI_TYPECLASS_INTEGER             # <<<<<<<<<<<<<<
 * TYPECLASS_REAL    = MPI_TYPECLASS_REAL
 * TYPECLASS_COMPLEX = MPI_TYPECLASS_COMPLEX
 */
  __pyx_t_3 = PyInt_FromLong(MPI_TYPECLASS_INTEGER); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__TYPECLASS_INTEGER, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":12
 * # ------------------------------------------
 * TYPECLASS_INTEGER = MPI_TYPECLASS_INTEGER
 * TYPECLASS_REAL    = MPI_TYPECLASS_REAL             # <<<<<<<<<<<<<<
 * TYPECLASS_COMPLEX = MPI_TYPECLASS_COMPLEX
 * 
 */
  __pyx_t_3 = PyInt_FromLong(MPI_TYPECLASS_REAL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__TYPECLASS_REAL, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":13
 * TYPECLASS_INTEGER = MPI_TYPECLASS_INTEGER
 * TYPECLASS_REAL    = MPI_TYPECLASS_REAL
 * TYPECLASS_COMPLEX = MPI_TYPECLASS_COMPLEX             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_3 = PyInt_FromLong(MPI_TYPECLASS_COMPLEX); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__TYPECLASS_COMPLEX, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":19
 * # ---------------------------------------
 * 
 * DISTRIBUTE_NONE      = MPI_DISTRIBUTE_NONE      #: Dimension not distributed             # <<<<<<<<<<<<<<
 * DISTRIBUTE_BLOCK     = MPI_DISTRIBUTE_BLOCK     #: Block distribution
 * DISTRIBUTE_CYCLIC    = MPI_DISTRIBUTE_CYCLIC    #: Cyclic distribution
 */
  __pyx_t_3 = PyInt_FromLong(MPI_DISTRIBUTE_NONE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DISTRIBUTE_NONE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":20
 * 
 * DISTRIBUTE_NONE      = MPI_DISTRIBUTE_NONE      #: Dimension not distributed
 * DISTRIBUTE_BLOCK     = MPI_DISTRIBUTE_BLOCK     #: Block distribution             # <<<<<<<<<<<<<<
 * DISTRIBUTE_CYCLIC    = MPI_DISTRIBUTE_CYCLIC    #: Cyclic distribution
 * DISTRIBUTE_DFLT_DARG = MPI_DISTRIBUTE_DFLT_DARG #: Default distribution
 */
  __pyx_t_3 = PyInt_FromLong(MPI_DISTRIBUTE_BLOCK); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DISTRIBUTE_BLOCK, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":21
 * DISTRIBUTE_NONE      = MPI_DISTRIBUTE_NONE      #: Dimension not distributed
 * DISTRIBUTE_BLOCK     = MPI_DISTRIBUTE_BLOCK     #: Block distribution
 * DISTRIBUTE_CYCLIC    = MPI_DISTRIBUTE_CYCLIC    #: Cyclic distribution             # <<<<<<<<<<<<<<
 * DISTRIBUTE_DFLT_DARG = MPI_DISTRIBUTE_DFLT_DARG #: Default distribution
 * 
 */
  __pyx_t_3 = PyInt_FromLong(MPI_DISTRIBUTE_CYCLIC); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DISTRIBUTE_CYCLIC, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":22
 * DISTRIBUTE_BLOCK     = MPI_DISTRIBUTE_BLOCK     #: Block distribution
 * DISTRIBUTE_CYCLIC    = MPI_DISTRIBUTE_CYCLIC    #: Cyclic distribution
 * DISTRIBUTE_DFLT_DARG = MPI_DISTRIBUTE_DFLT_DARG #: Default distribution             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_3 = PyInt_FromLong(MPI_DISTRIBUTE_DFLT_DARG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_155, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":27
 * # Combiner values for datatype decoding
 * # -------------------------------------
 * COMBINER_NAMED            = MPI_COMBINER_NAMED             # <<<<<<<<<<<<<<
 * COMBINER_DUP              = MPI_COMBINER_DUP
 * COMBINER_CONTIGUOUS       = MPI_COMBINER_CONTIGUOUS
 */
  __pyx_t_3 = PyInt_FromLong(MPI_COMBINER_NAMED); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMBINER_NAMED, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":28
 * # -------------------------------------
 * COMBINER_NAMED            = MPI_COMBINER_NAMED
 * COMBINER_DUP              = MPI_COMBINER_DUP             # <<<<<<<<<<<<<<
 * COMBINER_CONTIGUOUS       = MPI_COMBINER_CONTIGUOUS
 * COMBINER_VECTOR           = MPI_COMBINER_VECTOR
 */
  __pyx_t_3 = PyInt_FromLong(MPI_COMBINER_DUP); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMBINER_DUP, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":29
 * COMBINER_NAMED            = MPI_COMBINER_NAMED
 * COMBINER_DUP              = MPI_COMBINER_DUP
 * COMBINER_CONTIGUOUS       = MPI_COMBINER_CONTIGUOUS             # <<<<<<<<<<<<<<
 * COMBINER_VECTOR           = MPI_COMBINER_VECTOR
 * COMBINER_HVECTOR          = MPI_COMBINER_HVECTOR
 */
  __pyx_t_3 = PyInt_FromLong(MPI_COMBINER_CONTIGUOUS); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMBINER_CONTIGUOUS, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":30
 * COMBINER_DUP              = MPI_COMBINER_DUP
 * COMBINER_CONTIGUOUS       = MPI_COMBINER_CONTIGUOUS
 * COMBINER_VECTOR           = MPI_COMBINER_VECTOR             # <<<<<<<<<<<<<<
 * COMBINER_HVECTOR          = MPI_COMBINER_HVECTOR
 * COMBINER_HVECTOR_INTEGER  = MPI_COMBINER_HVECTOR_INTEGER  #: from Fortran call
 */
  __pyx_t_3 = PyInt_FromLong(MPI_COMBINER_VECTOR); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMBINER_VECTOR, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":31
 * COMBINER_CONTIGUOUS       = MPI_COMBINER_CONTIGUOUS
 * COMBINER_VECTOR           = MPI_COMBINER_VECTOR
 * COMBINER_HVECTOR          = MPI_COMBINER_HVECTOR             # <<<<<<<<<<<<<<
 * COMBINER_HVECTOR_INTEGER  = MPI_COMBINER_HVECTOR_INTEGER  #: from Fortran call
 * COMBINER_INDEXED          = MPI_COMBINER_INDEXED
 */
  __pyx_t_3 = PyInt_FromLong(MPI_COMBINER_HVECTOR); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMBINER_HVECTOR, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":32
 * COMBINER_VECTOR           = MPI_COMBINER_VECTOR
 * COMBINER_HVECTOR          = MPI_COMBINER_HVECTOR
 * COMBINER_HVECTOR_INTEGER  = MPI_COMBINER_HVECTOR_INTEGER  #: from Fortran call             # <<<<<<<<<<<<<<
 * COMBINER_INDEXED          = MPI_COMBINER_INDEXED
 * COMBINER_HINDEXED_INTEGER = MPI_COMBINER_HINDEXED_INTEGER #: from Fortran call
 */
  __pyx_t_3 = PyInt_FromLong(MPI_COMBINER_HVECTOR_INTEGER); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_156, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":33
 * COMBINER_HVECTOR          = MPI_COMBINER_HVECTOR
 * COMBINER_HVECTOR_INTEGER  = MPI_COMBINER_HVECTOR_INTEGER  #: from Fortran call
 * COMBINER_INDEXED          = MPI_COMBINER_INDEXED             # <<<<<<<<<<<<<<
 * COMBINER_HINDEXED_INTEGER = MPI_COMBINER_HINDEXED_INTEGER #: from Fortran call
 * COMBINER_HINDEXED         = MPI_COMBINER_HINDEXED
 */
  __pyx_t_3 = PyInt_FromLong(MPI_COMBINER_INDEXED); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMBINER_INDEXED, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":34
 * COMBINER_HVECTOR_INTEGER  = MPI_COMBINER_HVECTOR_INTEGER  #: from Fortran call
 * COMBINER_INDEXED          = MPI_COMBINER_INDEXED
 * COMBINER_HINDEXED_INTEGER = MPI_COMBINER_HINDEXED_INTEGER #: from Fortran call             # <<<<<<<<<<<<<<
 * COMBINER_HINDEXED         = MPI_COMBINER_HINDEXED
 * COMBINER_INDEXED_BLOCK    = MPI_COMBINER_INDEXED_BLOCK
 */
  __pyx_t_3 = PyInt_FromLong(MPI_COMBINER_HINDEXED_INTEGER); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_157, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":35
 * COMBINER_INDEXED          = MPI_COMBINER_INDEXED
 * COMBINER_HINDEXED_INTEGER = MPI_COMBINER_HINDEXED_INTEGER #: from Fortran call
 * COMBINER_HINDEXED         = MPI_COMBINER_HINDEXED             # <<<<<<<<<<<<<<
 * COMBINER_INDEXED_BLOCK    = MPI_COMBINER_INDEXED_BLOCK
 * COMBINER_STRUCT           = MPI_COMBINER_STRUCT
 */
  __pyx_t_3 = PyInt_FromLong(MPI_COMBINER_HINDEXED); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMBINER_HINDEXED, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":36
 * COMBINER_HINDEXED_INTEGER = MPI_COMBINER_HINDEXED_INTEGER #: from Fortran call
 * COMBINER_HINDEXED         = MPI_COMBINER_HINDEXED
 * COMBINER_INDEXED_BLOCK    = MPI_COMBINER_INDEXED_BLOCK             # <<<<<<<<<<<<<<
 * COMBINER_STRUCT           = MPI_COMBINER_STRUCT
 * COMBINER_STRUCT_INTEGER   = MPI_COMBINER_STRUCT_INTEGER   #: from Fortran call
 */
  __pyx_t_3 = PyInt_FromLong(MPI_COMBINER_INDEXED_BLOCK); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_158, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":37
 * COMBINER_HINDEXED         = MPI_COMBINER_HINDEXED
 * COMBINER_INDEXED_BLOCK    = MPI_COMBINER_INDEXED_BLOCK
 * COMBINER_STRUCT           = MPI_COMBINER_STRUCT             # <<<<<<<<<<<<<<
 * COMBINER_STRUCT_INTEGER   = MPI_COMBINER_STRUCT_INTEGER   #: from Fortran call
 * COMBINER_SUBARRAY         = MPI_COMBINER_SUBARRAY
 */
  __pyx_t_3 = PyInt_FromLong(MPI_COMBINER_STRUCT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMBINER_STRUCT, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":38
 * COMBINER_INDEXED_BLOCK    = MPI_COMBINER_INDEXED_BLOCK
 * COMBINER_STRUCT           = MPI_COMBINER_STRUCT
 * COMBINER_STRUCT_INTEGER   = MPI_COMBINER_STRUCT_INTEGER   #: from Fortran call             # <<<<<<<<<<<<<<
 * COMBINER_SUBARRAY         = MPI_COMBINER_SUBARRAY
 * COMBINER_DARRAY           = MPI_COMBINER_DARRAY
 */
  __pyx_t_3 = PyInt_FromLong(MPI_COMBINER_STRUCT_INTEGER); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_159, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":39
 * COMBINER_STRUCT           = MPI_COMBINER_STRUCT
 * COMBINER_STRUCT_INTEGER   = MPI_COMBINER_STRUCT_INTEGER   #: from Fortran call
 * COMBINER_SUBARRAY         = MPI_COMBINER_SUBARRAY             # <<<<<<<<<<<<<<
 * COMBINER_DARRAY           = MPI_COMBINER_DARRAY
 * COMBINER_RESIZED          = MPI_COMBINER_RESIZED
 */
  __pyx_t_3 = PyInt_FromLong(MPI_COMBINER_SUBARRAY); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMBINER_SUBARRAY, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":40
 * COMBINER_STRUCT_INTEGER   = MPI_COMBINER_STRUCT_INTEGER   #: from Fortran call
 * COMBINER_SUBARRAY         = MPI_COMBINER_SUBARRAY
 * COMBINER_DARRAY           = MPI_COMBINER_DARRAY             # <<<<<<<<<<<<<<
 * COMBINER_RESIZED          = MPI_COMBINER_RESIZED
 * COMBINER_F90_REAL         = MPI_COMBINER_F90_REAL
 */
  __pyx_t_3 = PyInt_FromLong(MPI_COMBINER_DARRAY); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMBINER_DARRAY, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":41
 * COMBINER_SUBARRAY         = MPI_COMBINER_SUBARRAY
 * COMBINER_DARRAY           = MPI_COMBINER_DARRAY
 * COMBINER_RESIZED          = MPI_COMBINER_RESIZED             # <<<<<<<<<<<<<<
 * COMBINER_F90_REAL         = MPI_COMBINER_F90_REAL
 * COMBINER_F90_COMPLEX      = MPI_COMBINER_F90_COMPLEX
 */
  __pyx_t_3 = PyInt_FromLong(MPI_COMBINER_RESIZED); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMBINER_RESIZED, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":42
 * COMBINER_DARRAY           = MPI_COMBINER_DARRAY
 * COMBINER_RESIZED          = MPI_COMBINER_RESIZED
 * COMBINER_F90_REAL         = MPI_COMBINER_F90_REAL             # <<<<<<<<<<<<<<
 * COMBINER_F90_COMPLEX      = MPI_COMBINER_F90_COMPLEX
 * COMBINER_F90_INTEGER      = MPI_COMBINER_F90_INTEGER
 */
  __pyx_t_3 = PyInt_FromLong(MPI_COMBINER_F90_REAL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMBINER_F90_REAL, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":43
 * COMBINER_RESIZED          = MPI_COMBINER_RESIZED
 * COMBINER_F90_REAL         = MPI_COMBINER_F90_REAL
 * COMBINER_F90_COMPLEX      = MPI_COMBINER_F90_COMPLEX             # <<<<<<<<<<<<<<
 * COMBINER_F90_INTEGER      = MPI_COMBINER_F90_INTEGER
 * 
 */
  __pyx_t_3 = PyInt_FromLong(MPI_COMBINER_F90_COMPLEX); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_160, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":44
 * COMBINER_F90_REAL         = MPI_COMBINER_F90_REAL
 * COMBINER_F90_COMPLEX      = MPI_COMBINER_F90_COMPLEX
 * COMBINER_F90_INTEGER      = MPI_COMBINER_F90_INTEGER             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_3 = PyInt_FromLong(MPI_COMBINER_F90_INTEGER); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_161, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":130
 *         return datatype
 * 
 *     Create_dup = Dup #: convenience alias             # <<<<<<<<<<<<<<
 * 
 *     def Create_contiguous(self, int count):
 */
  __pyx_t_3 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s__Dup); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype->tp_dict, __pyx_n_s__Create_dup, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":204
 * 
 *     def Create_subarray(self, sizes, subsizes, starts,
 *                         int order=ORDER_C):             # <<<<<<<<<<<<<<
 *         """
 *         Create a datatype for a subarray of
 */
  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__ORDER_C); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_t_3); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k_58 = __pyx_t_1;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":226
 *     def Create_darray(self, int size, int rank,
 *                       gsizes, distribs, dargs, psizes,
 *                       int order=ORDER_C):             # <<<<<<<<<<<<<<
 *         """
 *         Create a datatype representing an HPF-like
 */
  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__ORDER_C); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_t_3); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k_59 = __pyx_t_1;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":246
 * 
 *     @classmethod
 *     def Create_struct(cls, blocklengths, displacements, datatypes):             # <<<<<<<<<<<<<<
 *         """
 *         Create an datatype from a general set of
 */
  __pyx_t_3 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s__Create_struct); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype->tp_dict, __pyx_n_s__Create_struct, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":267
 * 
 *     @classmethod
 *     def Create_f90_integer(cls, int r):             # <<<<<<<<<<<<<<
 *         """
 *         Return a bounded integer datatype
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s__Create_f90_integer); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype->tp_dict, __pyx_n_s__Create_f90_integer, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":276
 * 
 *     @classmethod
 *     def Create_f90_real(cls, int p, int r):             # <<<<<<<<<<<<<<
 *         """
 *         Return a bounded real datatype
 */
  __pyx_t_3 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s__Create_f90_real); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype->tp_dict, __pyx_n_s__Create_f90_real, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":285
 * 
 *     @classmethod
 *     def Create_f90_complex(cls, int p, int r):             # <<<<<<<<<<<<<<
 *         """
 *         Return a bounded complex datatype
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s__Create_f90_complex); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype->tp_dict, __pyx_n_s__Create_f90_complex, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":294
 * 
 *     @classmethod
 *     def Match_size(cls, int typeclass, int size):             # <<<<<<<<<<<<<<
 *         """
 *         Find a datatype matching a specified size in bytes
 */
  __pyx_t_3 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s__Match_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype->tp_dict, __pyx_n_s__Match_size, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":331
 *         return datatype
 * 
 *     Resized = Create_resized #: compatibility alias             # <<<<<<<<<<<<<<
 * 
 *     def Get_true_extent(self):
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s__Create_resized); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype->tp_dict, __pyx_n_s__Resized, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":655
 * 
 *     @classmethod
 *     def Create_keyval(cls, copy_fn=None, delete_fn=None):             # <<<<<<<<<<<<<<
 *         """
 *         Create a new attribute key for datatypes
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s__Create_keyval); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype->tp_dict, __pyx_n_s__Create_keyval, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":668
 * 
 *     @classmethod
 *     def Free_keyval(cls, int keyval):             # <<<<<<<<<<<<<<
 *         """
 *         Free and attribute key for datatypes
 */
  __pyx_t_3 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s__Free_keyval); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype->tp_dict, __pyx_n_s__Free_keyval, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":713
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s__f2py); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype->tp_dict, __pyx_n_s__f2py, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":725
 * # ----------------
 * 
 * def Get_address(location):             # <<<<<<<<<<<<<<
 *     """
 *     Get the address of a location in memory
 */
  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_5Get_address, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Get_address, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":737
 * 
 * 
 * cdef Datatype __DATATYPE_NULL__ = new_Datatype( MPI_DATATYPE_NULL )             # <<<<<<<<<<<<<<
 * 
 * cdef Datatype __UB__ = new_Datatype( MPI_UB )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_DATATYPE_NULL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___DATATYPE_NULL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___DATATYPE_NULL__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___DATATYPE_NULL__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":739
 * cdef Datatype __DATATYPE_NULL__ = new_Datatype( MPI_DATATYPE_NULL )
 * 
 * cdef Datatype __UB__ = new_Datatype( MPI_UB )             # <<<<<<<<<<<<<<
 * cdef Datatype __LB__ = new_Datatype( MPI_LB )
 * 
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_UB)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UB__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UB__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___UB__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":740
 * 
 * cdef Datatype __UB__ = new_Datatype( MPI_UB )
 * cdef Datatype __LB__ = new_Datatype( MPI_LB )             # <<<<<<<<<<<<<<
 * 
 * cdef Datatype __PACKED__ = new_Datatype( MPI_PACKED )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_LB)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LB__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LB__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___LB__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":742
 * cdef Datatype __LB__ = new_Datatype( MPI_LB )
 * 
 * cdef Datatype __PACKED__ = new_Datatype( MPI_PACKED )             # <<<<<<<<<<<<<<
 * cdef Datatype __BYTE__   = new_Datatype( MPI_BYTE   )
 * cdef Datatype __AINT__   = new_Datatype( MPI_AINT   )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_PACKED)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___PACKED__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___PACKED__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___PACKED__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":743
 * 
 * cdef Datatype __PACKED__ = new_Datatype( MPI_PACKED )
 * cdef Datatype __BYTE__   = new_Datatype( MPI_BYTE   )             # <<<<<<<<<<<<<<
 * cdef Datatype __AINT__   = new_Datatype( MPI_AINT   )
 * cdef Datatype __OFFSET__ = new_Datatype( MPI_OFFSET )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_BYTE)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___BYTE__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":744
 * cdef Datatype __PACKED__ = new_Datatype( MPI_PACKED )
 * cdef Datatype __BYTE__   = new_Datatype( MPI_BYTE   )
 * cdef Datatype __AINT__   = new_Datatype( MPI_AINT   )             # <<<<<<<<<<<<<<
 * cdef Datatype __OFFSET__ = new_Datatype( MPI_OFFSET )
 * 
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_AINT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___AINT__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___AINT__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___AINT__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":745
 * cdef Datatype __BYTE__   = new_Datatype( MPI_BYTE   )
 * cdef Datatype __AINT__   = new_Datatype( MPI_AINT   )
 * cdef Datatype __OFFSET__ = new_Datatype( MPI_OFFSET )             # <<<<<<<<<<<<<<
 * 
 * cdef Datatype __CHAR__               = new_Datatype( MPI_CHAR               )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_OFFSET)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___OFFSET__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___OFFSET__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___OFFSET__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":747
 * cdef Datatype __OFFSET__ = new_Datatype( MPI_OFFSET )
 * 
 * cdef Datatype __CHAR__               = new_Datatype( MPI_CHAR               )             # <<<<<<<<<<<<<<
 * cdef Datatype __WCHAR__              = new_Datatype( MPI_WCHAR              )
 * cdef Datatype __SIGNED_CHAR__        = new_Datatype( MPI_SIGNED_CHAR        )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_CHAR)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___CHAR__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":748
 * 
 * cdef Datatype __CHAR__               = new_Datatype( MPI_CHAR               )
 * cdef Datatype __WCHAR__              = new_Datatype( MPI_WCHAR              )             # <<<<<<<<<<<<<<
 * cdef Datatype __SIGNED_CHAR__        = new_Datatype( MPI_SIGNED_CHAR        )
 * cdef Datatype __SHORT__              = new_Datatype( MPI_SHORT              )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_WCHAR)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___WCHAR__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":749
 * cdef Datatype __CHAR__               = new_Datatype( MPI_CHAR               )
 * cdef Datatype __WCHAR__              = new_Datatype( MPI_WCHAR              )
 * cdef Datatype __SIGNED_CHAR__        = new_Datatype( MPI_SIGNED_CHAR        )             # <<<<<<<<<<<<<<
 * cdef Datatype __SHORT__              = new_Datatype( MPI_SHORT              )
 * cdef Datatype __INT__                = new_Datatype( MPI_INT                )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_SIGNED_CHAR)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___SIGNED_CHAR__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":750
 * cdef Datatype __WCHAR__              = new_Datatype( MPI_WCHAR              )
 * cdef Datatype __SIGNED_CHAR__        = new_Datatype( MPI_SIGNED_CHAR        )
 * cdef Datatype __SHORT__              = new_Datatype( MPI_SHORT              )             # <<<<<<<<<<<<<<
 * cdef Datatype __INT__                = new_Datatype( MPI_INT                )
 * cdef Datatype __LONG__               = new_Datatype( MPI_LONG               )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_SHORT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 750; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___SHORT__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":751
 * cdef Datatype __SIGNED_CHAR__        = new_Datatype( MPI_SIGNED_CHAR        )
 * cdef Datatype __SHORT__              = new_Datatype( MPI_SHORT              )
 * cdef Datatype __INT__                = new_Datatype( MPI_INT                )             # <<<<<<<<<<<<<<
 * cdef Datatype __LONG__               = new_Datatype( MPI_LONG               )
 * cdef Datatype __LONG_LONG__          = new_Datatype( MPI_LONG_LONG          )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_INT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INT__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INT__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___INT__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":752
 * cdef Datatype __SHORT__              = new_Datatype( MPI_SHORT              )
 * cdef Datatype __INT__                = new_Datatype( MPI_INT                )
 * cdef Datatype __LONG__               = new_Datatype( MPI_LONG               )             # <<<<<<<<<<<<<<
 * cdef Datatype __LONG_LONG__          = new_Datatype( MPI_LONG_LONG          )
 * cdef Datatype __UNSIGNED_CHAR__      = new_Datatype( MPI_UNSIGNED_CHAR      )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_LONG)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___LONG__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":753
 * cdef Datatype __INT__                = new_Datatype( MPI_INT                )
 * cdef Datatype __LONG__               = new_Datatype( MPI_LONG               )
 * cdef Datatype __LONG_LONG__          = new_Datatype( MPI_LONG_LONG          )             # <<<<<<<<<<<<<<
 * cdef Datatype __UNSIGNED_CHAR__      = new_Datatype( MPI_UNSIGNED_CHAR      )
 * cdef Datatype __UNSIGNED_SHORT__     = new_Datatype( MPI_UNSIGNED_SHORT     )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_LONG_LONG)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___LONG_LONG__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":754
 * cdef Datatype __LONG__               = new_Datatype( MPI_LONG               )
 * cdef Datatype __LONG_LONG__          = new_Datatype( MPI_LONG_LONG          )
 * cdef Datatype __UNSIGNED_CHAR__      = new_Datatype( MPI_UNSIGNED_CHAR      )             # <<<<<<<<<<<<<<
 * cdef Datatype __UNSIGNED_SHORT__     = new_Datatype( MPI_UNSIGNED_SHORT     )
 * cdef Datatype __UNSIGNED__           = new_Datatype( MPI_UNSIGNED           )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_UNSIGNED_CHAR)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 754; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":755
 * cdef Datatype __LONG_LONG__          = new_Datatype( MPI_LONG_LONG          )
 * cdef Datatype __UNSIGNED_CHAR__      = new_Datatype( MPI_UNSIGNED_CHAR      )
 * cdef Datatype __UNSIGNED_SHORT__     = new_Datatype( MPI_UNSIGNED_SHORT     )             # <<<<<<<<<<<<<<
 * cdef Datatype __UNSIGNED__           = new_Datatype( MPI_UNSIGNED           )
 * cdef Datatype __UNSIGNED_LONG__      = new_Datatype( MPI_UNSIGNED_LONG      )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_UNSIGNED_SHORT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 755; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":756
 * cdef Datatype __UNSIGNED_CHAR__      = new_Datatype( MPI_UNSIGNED_CHAR      )
 * cdef Datatype __UNSIGNED_SHORT__     = new_Datatype( MPI_UNSIGNED_SHORT     )
 * cdef Datatype __UNSIGNED__           = new_Datatype( MPI_UNSIGNED           )             # <<<<<<<<<<<<<<
 * cdef Datatype __UNSIGNED_LONG__      = new_Datatype( MPI_UNSIGNED_LONG      )
 * cdef Datatype __UNSIGNED_LONG_LONG__ = new_Datatype( MPI_UNSIGNED_LONG_LONG )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_UNSIGNED)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___UNSIGNED__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":757
 * cdef Datatype __UNSIGNED_SHORT__     = new_Datatype( MPI_UNSIGNED_SHORT     )
 * cdef Datatype __UNSIGNED__           = new_Datatype( MPI_UNSIGNED           )
 * cdef Datatype __UNSIGNED_LONG__      = new_Datatype( MPI_UNSIGNED_LONG      )             # <<<<<<<<<<<<<<
 * cdef Datatype __UNSIGNED_LONG_LONG__ = new_Datatype( MPI_UNSIGNED_LONG_LONG )
 * cdef Datatype __FLOAT__              = new_Datatype( MPI_FLOAT              )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_UNSIGNED_LONG)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":758
 * cdef Datatype __UNSIGNED__           = new_Datatype( MPI_UNSIGNED           )
 * cdef Datatype __UNSIGNED_LONG__      = new_Datatype( MPI_UNSIGNED_LONG      )
 * cdef Datatype __UNSIGNED_LONG_LONG__ = new_Datatype( MPI_UNSIGNED_LONG_LONG )             # <<<<<<<<<<<<<<
 * cdef Datatype __FLOAT__              = new_Datatype( MPI_FLOAT              )
 * cdef Datatype __DOUBLE__             = new_Datatype( MPI_DOUBLE             )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_UNSIGNED_LONG_LONG)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":759
 * cdef Datatype __UNSIGNED_LONG__      = new_Datatype( MPI_UNSIGNED_LONG      )
 * cdef Datatype __UNSIGNED_LONG_LONG__ = new_Datatype( MPI_UNSIGNED_LONG_LONG )
 * cdef Datatype __FLOAT__              = new_Datatype( MPI_FLOAT              )             # <<<<<<<<<<<<<<
 * cdef Datatype __DOUBLE__             = new_Datatype( MPI_DOUBLE             )
 * cdef Datatype __LONG_DOUBLE__        = new_Datatype( MPI_LONG_DOUBLE        )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_FLOAT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___FLOAT__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":760
 * cdef Datatype __UNSIGNED_LONG_LONG__ = new_Datatype( MPI_UNSIGNED_LONG_LONG )
 * cdef Datatype __FLOAT__              = new_Datatype( MPI_FLOAT              )
 * cdef Datatype __DOUBLE__             = new_Datatype( MPI_DOUBLE             )             # <<<<<<<<<<<<<<
 * cdef Datatype __LONG_DOUBLE__        = new_Datatype( MPI_LONG_DOUBLE        )
 * 
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_DOUBLE)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___DOUBLE__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":761
 * cdef Datatype __FLOAT__              = new_Datatype( MPI_FLOAT              )
 * cdef Datatype __DOUBLE__             = new_Datatype( MPI_DOUBLE             )
 * cdef Datatype __LONG_DOUBLE__        = new_Datatype( MPI_LONG_DOUBLE        )             # <<<<<<<<<<<<<<
 * 
 * cdef Datatype __C_BOOL__                = new_Datatype( MPI_C_BOOL           )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_LONG_DOUBLE)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___LONG_DOUBLE__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":763
 * cdef Datatype __LONG_DOUBLE__        = new_Datatype( MPI_LONG_DOUBLE        )
 * 
 * cdef Datatype __C_BOOL__                = new_Datatype( MPI_C_BOOL           )             # <<<<<<<<<<<<<<
 * cdef Datatype __INT8_T__                = new_Datatype( MPI_INT8_T           )
 * cdef Datatype __INT16_T__               = new_Datatype( MPI_INT16_T          )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_C_BOOL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___C_BOOL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___C_BOOL__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___C_BOOL__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":764
 * 
 * cdef Datatype __C_BOOL__                = new_Datatype( MPI_C_BOOL           )
 * cdef Datatype __INT8_T__                = new_Datatype( MPI_INT8_T           )             # <<<<<<<<<<<<<<
 * cdef Datatype __INT16_T__               = new_Datatype( MPI_INT16_T          )
 * cdef Datatype __INT32_T__               = new_Datatype( MPI_INT32_T          )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_INT8_T)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INT8_T__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INT8_T__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___INT8_T__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":765
 * cdef Datatype __C_BOOL__                = new_Datatype( MPI_C_BOOL           )
 * cdef Datatype __INT8_T__                = new_Datatype( MPI_INT8_T           )
 * cdef Datatype __INT16_T__               = new_Datatype( MPI_INT16_T          )             # <<<<<<<<<<<<<<
 * cdef Datatype __INT32_T__               = new_Datatype( MPI_INT32_T          )
 * cdef Datatype __INT64_T__               = new_Datatype( MPI_INT64_T          )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_INT16_T)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INT16_T__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INT16_T__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___INT16_T__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":766
 * cdef Datatype __INT8_T__                = new_Datatype( MPI_INT8_T           )
 * cdef Datatype __INT16_T__               = new_Datatype( MPI_INT16_T          )
 * cdef Datatype __INT32_T__               = new_Datatype( MPI_INT32_T          )             # <<<<<<<<<<<<<<
 * cdef Datatype __INT64_T__               = new_Datatype( MPI_INT64_T          )
 * cdef Datatype __UINT8_T__               = new_Datatype( MPI_UINT8_T          )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_INT32_T)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INT32_T__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INT32_T__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___INT32_T__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":767
 * cdef Datatype __INT16_T__               = new_Datatype( MPI_INT16_T          )
 * cdef Datatype __INT32_T__               = new_Datatype( MPI_INT32_T          )
 * cdef Datatype __INT64_T__               = new_Datatype( MPI_INT64_T          )             # <<<<<<<<<<<<<<
 * cdef Datatype __UINT8_T__               = new_Datatype( MPI_UINT8_T          )
 * cdef Datatype __UINT16_T__              = new_Datatype( MPI_UINT16_T         )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_INT64_T)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 767; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___INT64_T__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":768
 * cdef Datatype __INT32_T__               = new_Datatype( MPI_INT32_T          )
 * cdef Datatype __INT64_T__               = new_Datatype( MPI_INT64_T          )
 * cdef Datatype __UINT8_T__               = new_Datatype( MPI_UINT8_T          )             # <<<<<<<<<<<<<<
 * cdef Datatype __UINT16_T__              = new_Datatype( MPI_UINT16_T         )
 * cdef Datatype __UINT32_T__              = new_Datatype( MPI_UINT32_T         )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_UINT8_T)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UINT8_T__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UINT8_T__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___UINT8_T__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":769
 * cdef Datatype __INT64_T__               = new_Datatype( MPI_INT64_T          )
 * cdef Datatype __UINT8_T__               = new_Datatype( MPI_UINT8_T          )
 * cdef Datatype __UINT16_T__              = new_Datatype( MPI_UINT16_T         )             # <<<<<<<<<<<<<<
 * cdef Datatype __UINT32_T__              = new_Datatype( MPI_UINT32_T         )
 * cdef Datatype __UINT64_T__              = new_Datatype( MPI_UINT64_T         )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_UINT16_T)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UINT16_T__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UINT16_T__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___UINT16_T__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":770
 * cdef Datatype __UINT8_T__               = new_Datatype( MPI_UINT8_T          )
 * cdef Datatype __UINT16_T__              = new_Datatype( MPI_UINT16_T         )
 * cdef Datatype __UINT32_T__              = new_Datatype( MPI_UINT32_T         )             # <<<<<<<<<<<<<<
 * cdef Datatype __UINT64_T__              = new_Datatype( MPI_UINT64_T         )
 * cdef Datatype __C_COMPLEX__             = new_Datatype( MPI_C_COMPLEX        )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_UINT32_T)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UINT32_T__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UINT32_T__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___UINT32_T__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":771
 * cdef Datatype __UINT16_T__              = new_Datatype( MPI_UINT16_T         )
 * cdef Datatype __UINT32_T__              = new_Datatype( MPI_UINT32_T         )
 * cdef Datatype __UINT64_T__              = new_Datatype( MPI_UINT64_T         )             # <<<<<<<<<<<<<<
 * cdef Datatype __C_COMPLEX__             = new_Datatype( MPI_C_COMPLEX        )
 * cdef Datatype __C_FLOAT_COMPLEX__       = new_Datatype( MPI_C_FLOAT_COMPLEX  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_UINT64_T)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UINT64_T__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UINT64_T__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___UINT64_T__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":772
 * cdef Datatype __UINT32_T__              = new_Datatype( MPI_UINT32_T         )
 * cdef Datatype __UINT64_T__              = new_Datatype( MPI_UINT64_T         )
 * cdef Datatype __C_COMPLEX__             = new_Datatype( MPI_C_COMPLEX        )             # <<<<<<<<<<<<<<
 * cdef Datatype __C_FLOAT_COMPLEX__       = new_Datatype( MPI_C_FLOAT_COMPLEX  )
 * cdef Datatype __C_DOUBLE_COMPLEX__      = new_Datatype( MPI_C_DOUBLE_COMPLEX )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_C_COMPLEX)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___C_COMPLEX__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___C_COMPLEX__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___C_COMPLEX__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":773
 * cdef Datatype __UINT64_T__              = new_Datatype( MPI_UINT64_T         )
 * cdef Datatype __C_COMPLEX__             = new_Datatype( MPI_C_COMPLEX        )
 * cdef Datatype __C_FLOAT_COMPLEX__       = new_Datatype( MPI_C_FLOAT_COMPLEX  )             # <<<<<<<<<<<<<<
 * cdef Datatype __C_DOUBLE_COMPLEX__      = new_Datatype( MPI_C_DOUBLE_COMPLEX )
 * cdef Datatype __C_LONG_DOUBLE_COMPLEX__ = new_Datatype(
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_C_FLOAT_COMPLEX)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":774
 * cdef Datatype __C_COMPLEX__             = new_Datatype( MPI_C_COMPLEX        )
 * cdef Datatype __C_FLOAT_COMPLEX__       = new_Datatype( MPI_C_FLOAT_COMPLEX  )
 * cdef Datatype __C_DOUBLE_COMPLEX__      = new_Datatype( MPI_C_DOUBLE_COMPLEX )             # <<<<<<<<<<<<<<
 * cdef Datatype __C_LONG_DOUBLE_COMPLEX__ = new_Datatype(
 *                                               MPI_C_LONG_DOUBLE_COMPLEX      )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_C_DOUBLE_COMPLEX)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 774; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":776
 * cdef Datatype __C_DOUBLE_COMPLEX__      = new_Datatype( MPI_C_DOUBLE_COMPLEX )
 * cdef Datatype __C_LONG_DOUBLE_COMPLEX__ = new_Datatype(
 *                                               MPI_C_LONG_DOUBLE_COMPLEX      )             # <<<<<<<<<<<<<<
 * 
 * cdef Datatype __SHORT_INT__        = new_Datatype( MPI_SHORT_INT       )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_C_LONG_DOUBLE_COMPLEX)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":778
 *                                               MPI_C_LONG_DOUBLE_COMPLEX      )
 * 
 * cdef Datatype __SHORT_INT__        = new_Datatype( MPI_SHORT_INT       )             # <<<<<<<<<<<<<<
 * cdef Datatype __TWOINT__           = new_Datatype( MPI_2INT            )
 * cdef Datatype __LONG_INT__         = new_Datatype( MPI_LONG_INT        )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_SHORT_INT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT_INT__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT_INT__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___SHORT_INT__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":779
 * 
 * cdef Datatype __SHORT_INT__        = new_Datatype( MPI_SHORT_INT       )
 * cdef Datatype __TWOINT__           = new_Datatype( MPI_2INT            )             # <<<<<<<<<<<<<<
 * cdef Datatype __LONG_INT__         = new_Datatype( MPI_LONG_INT        )
 * cdef Datatype __FLOAT_INT__        = new_Datatype( MPI_FLOAT_INT       )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_2INT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___TWOINT__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___TWOINT__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___TWOINT__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":780
 * cdef Datatype __SHORT_INT__        = new_Datatype( MPI_SHORT_INT       )
 * cdef Datatype __TWOINT__           = new_Datatype( MPI_2INT            )
 * cdef Datatype __LONG_INT__         = new_Datatype( MPI_LONG_INT        )             # <<<<<<<<<<<<<<
 * cdef Datatype __FLOAT_INT__        = new_Datatype( MPI_FLOAT_INT       )
 * cdef Datatype __DOUBLE_INT__       = new_Datatype( MPI_DOUBLE_INT      )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_LONG_INT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_INT__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_INT__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___LONG_INT__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":781
 * cdef Datatype __TWOINT__           = new_Datatype( MPI_2INT            )
 * cdef Datatype __LONG_INT__         = new_Datatype( MPI_LONG_INT        )
 * cdef Datatype __FLOAT_INT__        = new_Datatype( MPI_FLOAT_INT       )             # <<<<<<<<<<<<<<
 * cdef Datatype __DOUBLE_INT__       = new_Datatype( MPI_DOUBLE_INT      )
 * cdef Datatype __LONG_DOUBLE_INT__  = new_Datatype( MPI_LONG_DOUBLE_INT )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_FLOAT_INT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT_INT__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT_INT__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___FLOAT_INT__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":782
 * cdef Datatype __LONG_INT__         = new_Datatype( MPI_LONG_INT        )
 * cdef Datatype __FLOAT_INT__        = new_Datatype( MPI_FLOAT_INT       )
 * cdef Datatype __DOUBLE_INT__       = new_Datatype( MPI_DOUBLE_INT      )             # <<<<<<<<<<<<<<
 * cdef Datatype __LONG_DOUBLE_INT__  = new_Datatype( MPI_LONG_DOUBLE_INT )
 * 
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_DOUBLE_INT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_INT__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_INT__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___DOUBLE_INT__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":783
 * cdef Datatype __FLOAT_INT__        = new_Datatype( MPI_FLOAT_INT       )
 * cdef Datatype __DOUBLE_INT__       = new_Datatype( MPI_DOUBLE_INT      )
 * cdef Datatype __LONG_DOUBLE_INT__  = new_Datatype( MPI_LONG_DOUBLE_INT )             # <<<<<<<<<<<<<<
 * 
 * cdef Datatype __CHARACTER__        = new_Datatype( MPI_CHARACTER        )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_LONG_DOUBLE_INT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE_INT__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE_INT__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___LONG_DOUBLE_INT__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":785
 * cdef Datatype __LONG_DOUBLE_INT__  = new_Datatype( MPI_LONG_DOUBLE_INT )
 * 
 * cdef Datatype __CHARACTER__        = new_Datatype( MPI_CHARACTER        )             # <<<<<<<<<<<<<<
 * cdef Datatype __LOGICAL__          = new_Datatype( MPI_LOGICAL          )
 * cdef Datatype __INTEGER__          = new_Datatype( MPI_INTEGER          )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_CHARACTER)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___CHARACTER__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___CHARACTER__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___CHARACTER__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":786
 * 
 * cdef Datatype __CHARACTER__        = new_Datatype( MPI_CHARACTER        )
 * cdef Datatype __LOGICAL__          = new_Datatype( MPI_LOGICAL          )             # <<<<<<<<<<<<<<
 * cdef Datatype __INTEGER__          = new_Datatype( MPI_INTEGER          )
 * cdef Datatype __REAL__             = new_Datatype( MPI_REAL             )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_LOGICAL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___LOGICAL__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":787
 * cdef Datatype __CHARACTER__        = new_Datatype( MPI_CHARACTER        )
 * cdef Datatype __LOGICAL__          = new_Datatype( MPI_LOGICAL          )
 * cdef Datatype __INTEGER__          = new_Datatype( MPI_INTEGER          )             # <<<<<<<<<<<<<<
 * cdef Datatype __REAL__             = new_Datatype( MPI_REAL             )
 * cdef Datatype __DOUBLE_PRECISION__ = new_Datatype( MPI_DOUBLE_PRECISION )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_INTEGER)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___INTEGER__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":788
 * cdef Datatype __LOGICAL__          = new_Datatype( MPI_LOGICAL          )
 * cdef Datatype __INTEGER__          = new_Datatype( MPI_INTEGER          )
 * cdef Datatype __REAL__             = new_Datatype( MPI_REAL             )             # <<<<<<<<<<<<<<
 * cdef Datatype __DOUBLE_PRECISION__ = new_Datatype( MPI_DOUBLE_PRECISION )
 * cdef Datatype __COMPLEX__          = new_Datatype( MPI_COMPLEX          )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_REAL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___REAL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___REAL__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___REAL__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":789
 * cdef Datatype __INTEGER__          = new_Datatype( MPI_INTEGER          )
 * cdef Datatype __REAL__             = new_Datatype( MPI_REAL             )
 * cdef Datatype __DOUBLE_PRECISION__ = new_Datatype( MPI_DOUBLE_PRECISION )             # <<<<<<<<<<<<<<
 * cdef Datatype __COMPLEX__          = new_Datatype( MPI_COMPLEX          )
 * cdef Datatype __DOUBLE_COMPLEX__   = new_Datatype( MPI_DOUBLE_COMPLEX   )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_DOUBLE_PRECISION)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":790
 * cdef Datatype __REAL__             = new_Datatype( MPI_REAL             )
 * cdef Datatype __DOUBLE_PRECISION__ = new_Datatype( MPI_DOUBLE_PRECISION )
 * cdef Datatype __COMPLEX__          = new_Datatype( MPI_COMPLEX          )             # <<<<<<<<<<<<<<
 * cdef Datatype __DOUBLE_COMPLEX__   = new_Datatype( MPI_DOUBLE_COMPLEX   )
 * 
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_COMPLEX)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___COMPLEX__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":791
 * cdef Datatype __DOUBLE_PRECISION__ = new_Datatype( MPI_DOUBLE_PRECISION )
 * cdef Datatype __COMPLEX__          = new_Datatype( MPI_COMPLEX          )
 * cdef Datatype __DOUBLE_COMPLEX__   = new_Datatype( MPI_DOUBLE_COMPLEX   )             # <<<<<<<<<<<<<<
 * 
 * cdef Datatype __LOGICAL1__  = new_Datatype( MPI_LOGICAL1  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_DOUBLE_COMPLEX)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":793
 * cdef Datatype __DOUBLE_COMPLEX__   = new_Datatype( MPI_DOUBLE_COMPLEX   )
 * 
 * cdef Datatype __LOGICAL1__  = new_Datatype( MPI_LOGICAL1  )             # <<<<<<<<<<<<<<
 * cdef Datatype __LOGICAL2__  = new_Datatype( MPI_LOGICAL2  )
 * cdef Datatype __LOGICAL4__  = new_Datatype( MPI_LOGICAL4  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_LOGICAL1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL1__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL1__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___LOGICAL1__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":794
 * 
 * cdef Datatype __LOGICAL1__  = new_Datatype( MPI_LOGICAL1  )
 * cdef Datatype __LOGICAL2__  = new_Datatype( MPI_LOGICAL2  )             # <<<<<<<<<<<<<<
 * cdef Datatype __LOGICAL4__  = new_Datatype( MPI_LOGICAL4  )
 * cdef Datatype __LOGICAL8__  = new_Datatype( MPI_LOGICAL8  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_LOGICAL2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL2__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL2__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___LOGICAL2__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":795
 * cdef Datatype __LOGICAL1__  = new_Datatype( MPI_LOGICAL1  )
 * cdef Datatype __LOGICAL2__  = new_Datatype( MPI_LOGICAL2  )
 * cdef Datatype __LOGICAL4__  = new_Datatype( MPI_LOGICAL4  )             # <<<<<<<<<<<<<<
 * cdef Datatype __LOGICAL8__  = new_Datatype( MPI_LOGICAL8  )
 * cdef Datatype __INTEGER1__  = new_Datatype( MPI_INTEGER1  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_LOGICAL4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL4__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL4__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___LOGICAL4__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":796
 * cdef Datatype __LOGICAL2__  = new_Datatype( MPI_LOGICAL2  )
 * cdef Datatype __LOGICAL4__  = new_Datatype( MPI_LOGICAL4  )
 * cdef Datatype __LOGICAL8__  = new_Datatype( MPI_LOGICAL8  )             # <<<<<<<<<<<<<<
 * cdef Datatype __INTEGER1__  = new_Datatype( MPI_INTEGER1  )
 * cdef Datatype __INTEGER2__  = new_Datatype( MPI_INTEGER2  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_LOGICAL8)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL8__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL8__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___LOGICAL8__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":797
 * cdef Datatype __LOGICAL4__  = new_Datatype( MPI_LOGICAL4  )
 * cdef Datatype __LOGICAL8__  = new_Datatype( MPI_LOGICAL8  )
 * cdef Datatype __INTEGER1__  = new_Datatype( MPI_INTEGER1  )             # <<<<<<<<<<<<<<
 * cdef Datatype __INTEGER2__  = new_Datatype( MPI_INTEGER2  )
 * cdef Datatype __INTEGER4__  = new_Datatype( MPI_INTEGER4  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_INTEGER1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER1__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER1__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___INTEGER1__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":798
 * cdef Datatype __LOGICAL8__  = new_Datatype( MPI_LOGICAL8  )
 * cdef Datatype __INTEGER1__  = new_Datatype( MPI_INTEGER1  )
 * cdef Datatype __INTEGER2__  = new_Datatype( MPI_INTEGER2  )             # <<<<<<<<<<<<<<
 * cdef Datatype __INTEGER4__  = new_Datatype( MPI_INTEGER4  )
 * cdef Datatype __INTEGER8__  = new_Datatype( MPI_INTEGER8  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_INTEGER2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER2__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER2__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___INTEGER2__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":799
 * cdef Datatype __INTEGER1__  = new_Datatype( MPI_INTEGER1  )
 * cdef Datatype __INTEGER2__  = new_Datatype( MPI_INTEGER2  )
 * cdef Datatype __INTEGER4__  = new_Datatype( MPI_INTEGER4  )             # <<<<<<<<<<<<<<
 * cdef Datatype __INTEGER8__  = new_Datatype( MPI_INTEGER8  )
 * cdef Datatype __INTEGER16__ = new_Datatype( MPI_INTEGER16 )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_INTEGER4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER4__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER4__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___INTEGER4__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":800
 * cdef Datatype __INTEGER2__  = new_Datatype( MPI_INTEGER2  )
 * cdef Datatype __INTEGER4__  = new_Datatype( MPI_INTEGER4  )
 * cdef Datatype __INTEGER8__  = new_Datatype( MPI_INTEGER8  )             # <<<<<<<<<<<<<<
 * cdef Datatype __INTEGER16__ = new_Datatype( MPI_INTEGER16 )
 * cdef Datatype __REAL2__     = new_Datatype( MPI_REAL2     )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_INTEGER8)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER8__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER8__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___INTEGER8__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":801
 * cdef Datatype __INTEGER4__  = new_Datatype( MPI_INTEGER4  )
 * cdef Datatype __INTEGER8__  = new_Datatype( MPI_INTEGER8  )
 * cdef Datatype __INTEGER16__ = new_Datatype( MPI_INTEGER16 )             # <<<<<<<<<<<<<<
 * cdef Datatype __REAL2__     = new_Datatype( MPI_REAL2     )
 * cdef Datatype __REAL4__     = new_Datatype( MPI_REAL4     )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_INTEGER16)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER16__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER16__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___INTEGER16__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":802
 * cdef Datatype __INTEGER8__  = new_Datatype( MPI_INTEGER8  )
 * cdef Datatype __INTEGER16__ = new_Datatype( MPI_INTEGER16 )
 * cdef Datatype __REAL2__     = new_Datatype( MPI_REAL2     )             # <<<<<<<<<<<<<<
 * cdef Datatype __REAL4__     = new_Datatype( MPI_REAL4     )
 * cdef Datatype __REAL8__     = new_Datatype( MPI_REAL8     )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_REAL2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___REAL2__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___REAL2__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___REAL2__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":803
 * cdef Datatype __INTEGER16__ = new_Datatype( MPI_INTEGER16 )
 * cdef Datatype __REAL2__     = new_Datatype( MPI_REAL2     )
 * cdef Datatype __REAL4__     = new_Datatype( MPI_REAL4     )             # <<<<<<<<<<<<<<
 * cdef Datatype __REAL8__     = new_Datatype( MPI_REAL8     )
 * cdef Datatype __REAL16__    = new_Datatype( MPI_REAL16    )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_REAL4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___REAL4__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___REAL4__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___REAL4__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":804
 * cdef Datatype __REAL2__     = new_Datatype( MPI_REAL2     )
 * cdef Datatype __REAL4__     = new_Datatype( MPI_REAL4     )
 * cdef Datatype __REAL8__     = new_Datatype( MPI_REAL8     )             # <<<<<<<<<<<<<<
 * cdef Datatype __REAL16__    = new_Datatype( MPI_REAL16    )
 * cdef Datatype __COMPLEX4__  = new_Datatype( MPI_COMPLEX4  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_REAL8)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___REAL8__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___REAL8__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___REAL8__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":805
 * cdef Datatype __REAL4__     = new_Datatype( MPI_REAL4     )
 * cdef Datatype __REAL8__     = new_Datatype( MPI_REAL8     )
 * cdef Datatype __REAL16__    = new_Datatype( MPI_REAL16    )             # <<<<<<<<<<<<<<
 * cdef Datatype __COMPLEX4__  = new_Datatype( MPI_COMPLEX4  )
 * cdef Datatype __COMPLEX8__  = new_Datatype( MPI_COMPLEX8  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_REAL16)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___REAL16__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___REAL16__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___REAL16__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":806
 * cdef Datatype __REAL8__     = new_Datatype( MPI_REAL8     )
 * cdef Datatype __REAL16__    = new_Datatype( MPI_REAL16    )
 * cdef Datatype __COMPLEX4__  = new_Datatype( MPI_COMPLEX4  )             # <<<<<<<<<<<<<<
 * cdef Datatype __COMPLEX8__  = new_Datatype( MPI_COMPLEX8  )
 * cdef Datatype __COMPLEX16__ = new_Datatype( MPI_COMPLEX16 )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_COMPLEX4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX4__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX4__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___COMPLEX4__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":807
 * cdef Datatype __REAL16__    = new_Datatype( MPI_REAL16    )
 * cdef Datatype __COMPLEX4__  = new_Datatype( MPI_COMPLEX4  )
 * cdef Datatype __COMPLEX8__  = new_Datatype( MPI_COMPLEX8  )             # <<<<<<<<<<<<<<
 * cdef Datatype __COMPLEX16__ = new_Datatype( MPI_COMPLEX16 )
 * cdef Datatype __COMPLEX32__ = new_Datatype( MPI_COMPLEX32 )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_COMPLEX8)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX8__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX8__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___COMPLEX8__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":808
 * cdef Datatype __COMPLEX4__  = new_Datatype( MPI_COMPLEX4  )
 * cdef Datatype __COMPLEX8__  = new_Datatype( MPI_COMPLEX8  )
 * cdef Datatype __COMPLEX16__ = new_Datatype( MPI_COMPLEX16 )             # <<<<<<<<<<<<<<
 * cdef Datatype __COMPLEX32__ = new_Datatype( MPI_COMPLEX32 )
 * 
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_COMPLEX16)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX16__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX16__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___COMPLEX16__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":809
 * cdef Datatype __COMPLEX8__  = new_Datatype( MPI_COMPLEX8  )
 * cdef Datatype __COMPLEX16__ = new_Datatype( MPI_COMPLEX16 )
 * cdef Datatype __COMPLEX32__ = new_Datatype( MPI_COMPLEX32 )             # <<<<<<<<<<<<<<
 * 
 * include "typemap.pxi"
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Datatype(MPI_COMPLEX32)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX32__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX32__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___COMPLEX32__ = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":12
 * # -----------------------------------------------------------------------------
 * 
 * cdef dict TypeDict = { }             # <<<<<<<<<<<<<<
 * __TypeDict__ = TypeDict
 * 
 */
  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
  __pyx_v_6mpi4py_3MPI_TypeDict = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":13
 * 
 * cdef dict TypeDict = { }
 * __TypeDict__ = TypeDict             # <<<<<<<<<<<<<<
 * 
 * # boolean (C99)
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____TypeDict__, ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":16
 * 
 * # boolean (C99)
 * AddTypeMap(TypeDict, "?"  , __C_BOOL__ ) # PEP-3118 & NumPy             # <<<<<<<<<<<<<<
 * # character
 * AddTypeMap(TypeDict, "c"  , __CHAR__   ) # PEP-3118 & NumPy
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_kp_s_162);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_BOOL__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":18
 * AddTypeMap(TypeDict, "?"  , __C_BOOL__ ) # PEP-3118 & NumPy
 * # character
 * AddTypeMap(TypeDict, "c"  , __CHAR__   ) # PEP-3118 & NumPy             # <<<<<<<<<<<<<<
 * ## XXX this requires special handling
 * ## AddTypeMap(TypeDict, "u"  , __????__   ) # PEP-3118
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__c);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":23
 * ## AddTypeMap(TypeDict, "w"  , __????__   ) # PEP-3118
 * # (signed) integer
 * AddTypeMap(TypeDict, "b" , __SIGNED_CHAR__ ) # MPI-2             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "h" , __SHORT__       )
 * AddTypeMap(TypeDict, "i" , __INT__         )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__b);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":24
 * # (signed) integer
 * AddTypeMap(TypeDict, "b" , __SIGNED_CHAR__ ) # MPI-2
 * AddTypeMap(TypeDict, "h" , __SHORT__       )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "i" , __INT__         )
 * AddTypeMap(TypeDict, "l" , __LONG__        )
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__h);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":25
 * AddTypeMap(TypeDict, "b" , __SIGNED_CHAR__ ) # MPI-2
 * AddTypeMap(TypeDict, "h" , __SHORT__       )
 * AddTypeMap(TypeDict, "i" , __INT__         )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "l" , __LONG__        )
 * AddTypeMap(TypeDict, "q" , __LONG_LONG__   )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__i);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":26
 * AddTypeMap(TypeDict, "h" , __SHORT__       )
 * AddTypeMap(TypeDict, "i" , __INT__         )
 * AddTypeMap(TypeDict, "l" , __LONG__        )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "q" , __LONG_LONG__   )
 * # unsigned integer
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__l);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":27
 * AddTypeMap(TypeDict, "i" , __INT__         )
 * AddTypeMap(TypeDict, "l" , __LONG__        )
 * AddTypeMap(TypeDict, "q" , __LONG_LONG__   )             # <<<<<<<<<<<<<<
 * # unsigned integer
 * AddTypeMap(TypeDict, "B" , __UNSIGNED_CHAR__     )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__q);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":29
 * AddTypeMap(TypeDict, "q" , __LONG_LONG__   )
 * # unsigned integer
 * AddTypeMap(TypeDict, "B" , __UNSIGNED_CHAR__     )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "H" , __UNSIGNED_SHORT__    )
 * AddTypeMap(TypeDict, "I" , __UNSIGNED__          )
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__B);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":30
 * # unsigned integer
 * AddTypeMap(TypeDict, "B" , __UNSIGNED_CHAR__     )
 * AddTypeMap(TypeDict, "H" , __UNSIGNED_SHORT__    )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "I" , __UNSIGNED__          )
 * AddTypeMap(TypeDict, "L" , __UNSIGNED_LONG__     )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__H);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":31
 * AddTypeMap(TypeDict, "B" , __UNSIGNED_CHAR__     )
 * AddTypeMap(TypeDict, "H" , __UNSIGNED_SHORT__    )
 * AddTypeMap(TypeDict, "I" , __UNSIGNED__          )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "L" , __UNSIGNED_LONG__     )
 * AddTypeMap(TypeDict, "Q" , __UNSIGNED_LONG_LONG__)
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__I);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":32
 * AddTypeMap(TypeDict, "H" , __UNSIGNED_SHORT__    )
 * AddTypeMap(TypeDict, "I" , __UNSIGNED__          )
 * AddTypeMap(TypeDict, "L" , __UNSIGNED_LONG__     )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "Q" , __UNSIGNED_LONG_LONG__)
 * # (real) floating
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__L);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":33
 * AddTypeMap(TypeDict, "I" , __UNSIGNED__          )
 * AddTypeMap(TypeDict, "L" , __UNSIGNED_LONG__     )
 * AddTypeMap(TypeDict, "Q" , __UNSIGNED_LONG_LONG__)             # <<<<<<<<<<<<<<
 * # (real) floating
 * AddTypeMap(TypeDict, "f" , __FLOAT__       )
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__Q);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":35
 * AddTypeMap(TypeDict, "Q" , __UNSIGNED_LONG_LONG__)
 * # (real) floating
 * AddTypeMap(TypeDict, "f" , __FLOAT__       )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "d" , __DOUBLE__      )
 * AddTypeMap(TypeDict, "g" , __LONG_DOUBLE__ ) # PEP-3118 & NumPy
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__f);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":36
 * # (real) floating
 * AddTypeMap(TypeDict, "f" , __FLOAT__       )
 * AddTypeMap(TypeDict, "d" , __DOUBLE__      )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "g" , __LONG_DOUBLE__ ) # PEP-3118 & NumPy
 * # complex floating (F77)
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__d);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":37
 * AddTypeMap(TypeDict, "f" , __FLOAT__       )
 * AddTypeMap(TypeDict, "d" , __DOUBLE__      )
 * AddTypeMap(TypeDict, "g" , __LONG_DOUBLE__ ) # PEP-3118 & NumPy             # <<<<<<<<<<<<<<
 * # complex floating (F77)
 * AddTypeMap(TypeDict, "Zf" , __COMPLEX__        ) # PEP-3118
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__g);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":39
 * AddTypeMap(TypeDict, "g" , __LONG_DOUBLE__ ) # PEP-3118 & NumPy
 * # complex floating (F77)
 * AddTypeMap(TypeDict, "Zf" , __COMPLEX__        ) # PEP-3118             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "Zd" , __DOUBLE_COMPLEX__ ) # PEP-3118
 * AddTypeMap(TypeDict, "F"  , __COMPLEX__        ) # NumPy
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__Zf);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":40
 * # complex floating (F77)
 * AddTypeMap(TypeDict, "Zf" , __COMPLEX__        ) # PEP-3118
 * AddTypeMap(TypeDict, "Zd" , __DOUBLE_COMPLEX__ ) # PEP-3118             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "F"  , __COMPLEX__        ) # NumPy
 * AddTypeMap(TypeDict, "D"  , __DOUBLE_COMPLEX__ ) # NumPy
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__Zd);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":41
 * AddTypeMap(TypeDict, "Zf" , __COMPLEX__        ) # PEP-3118
 * AddTypeMap(TypeDict, "Zd" , __DOUBLE_COMPLEX__ ) # PEP-3118
 * AddTypeMap(TypeDict, "F"  , __COMPLEX__        ) # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "D"  , __DOUBLE_COMPLEX__ ) # NumPy
 * # complex floating (F90)
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__F);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":42
 * AddTypeMap(TypeDict, "Zd" , __DOUBLE_COMPLEX__ ) # PEP-3118
 * AddTypeMap(TypeDict, "F"  , __COMPLEX__        ) # NumPy
 * AddTypeMap(TypeDict, "D"  , __DOUBLE_COMPLEX__ ) # NumPy             # <<<<<<<<<<<<<<
 * # complex floating (F90)
 * AddTypeMap(TypeDict, "Zf" , __COMPLEX8__       ) # PEP-3118
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__D);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":44
 * AddTypeMap(TypeDict, "D"  , __DOUBLE_COMPLEX__ ) # NumPy
 * # complex floating (F90)
 * AddTypeMap(TypeDict, "Zf" , __COMPLEX8__       ) # PEP-3118             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "Zd" , __COMPLEX16__      ) # PEP-3118
 * AddTypeMap(TypeDict, "F"  , __COMPLEX8__       ) # NumPy
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__Zf);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX8__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":45
 * # complex floating (F90)
 * AddTypeMap(TypeDict, "Zf" , __COMPLEX8__       ) # PEP-3118
 * AddTypeMap(TypeDict, "Zd" , __COMPLEX16__      ) # PEP-3118             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "F"  , __COMPLEX8__       ) # NumPy
 * AddTypeMap(TypeDict, "D"  , __COMPLEX16__      ) # NumPy
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__Zd);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX16__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":46
 * AddTypeMap(TypeDict, "Zf" , __COMPLEX8__       ) # PEP-3118
 * AddTypeMap(TypeDict, "Zd" , __COMPLEX16__      ) # PEP-3118
 * AddTypeMap(TypeDict, "F"  , __COMPLEX8__       ) # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "D"  , __COMPLEX16__      ) # NumPy
 * # complex floating (C99)
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__F);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX8__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":47
 * AddTypeMap(TypeDict, "Zd" , __COMPLEX16__      ) # PEP-3118
 * AddTypeMap(TypeDict, "F"  , __COMPLEX8__       ) # NumPy
 * AddTypeMap(TypeDict, "D"  , __COMPLEX16__      ) # NumPy             # <<<<<<<<<<<<<<
 * # complex floating (C99)
 * AddTypeMap(TypeDict, "Zf" , __C_FLOAT_COMPLEX__       ) # PEP-3118
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__D);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX16__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":49
 * AddTypeMap(TypeDict, "D"  , __COMPLEX16__      ) # NumPy
 * # complex floating (C99)
 * AddTypeMap(TypeDict, "Zf" , __C_FLOAT_COMPLEX__       ) # PEP-3118             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "Zd" , __C_DOUBLE_COMPLEX__      ) # PEP-3118
 * AddTypeMap(TypeDict, "Zg" , __C_LONG_DOUBLE_COMPLEX__ ) # PEP-3118
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__Zf);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":50
 * # complex floating (C99)
 * AddTypeMap(TypeDict, "Zf" , __C_FLOAT_COMPLEX__       ) # PEP-3118
 * AddTypeMap(TypeDict, "Zd" , __C_DOUBLE_COMPLEX__      ) # PEP-3118             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "Zg" , __C_LONG_DOUBLE_COMPLEX__ ) # PEP-3118
 * AddTypeMap(TypeDict, "F"  , __C_FLOAT_COMPLEX__       ) # NumPy
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__Zd);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":51
 * AddTypeMap(TypeDict, "Zf" , __C_FLOAT_COMPLEX__       ) # PEP-3118
 * AddTypeMap(TypeDict, "Zd" , __C_DOUBLE_COMPLEX__      ) # PEP-3118
 * AddTypeMap(TypeDict, "Zg" , __C_LONG_DOUBLE_COMPLEX__ ) # PEP-3118             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "F"  , __C_FLOAT_COMPLEX__       ) # NumPy
 * AddTypeMap(TypeDict, "D"  , __C_DOUBLE_COMPLEX__      ) # NumPy
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__Zg);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":52
 * AddTypeMap(TypeDict, "Zd" , __C_DOUBLE_COMPLEX__      ) # PEP-3118
 * AddTypeMap(TypeDict, "Zg" , __C_LONG_DOUBLE_COMPLEX__ ) # PEP-3118
 * AddTypeMap(TypeDict, "F"  , __C_FLOAT_COMPLEX__       ) # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "D"  , __C_DOUBLE_COMPLEX__      ) # NumPy
 * AddTypeMap(TypeDict, "G"  , __C_LONG_DOUBLE_COMPLEX__ ) # NumPy
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__F);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":53
 * AddTypeMap(TypeDict, "Zg" , __C_LONG_DOUBLE_COMPLEX__ ) # PEP-3118
 * AddTypeMap(TypeDict, "F"  , __C_FLOAT_COMPLEX__       ) # NumPy
 * AddTypeMap(TypeDict, "D"  , __C_DOUBLE_COMPLEX__      ) # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "G"  , __C_LONG_DOUBLE_COMPLEX__ ) # NumPy
 * 
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__D);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":54
 * AddTypeMap(TypeDict, "F"  , __C_FLOAT_COMPLEX__       ) # NumPy
 * AddTypeMap(TypeDict, "D"  , __C_DOUBLE_COMPLEX__      ) # NumPy
 * AddTypeMap(TypeDict, "G"  , __C_LONG_DOUBLE_COMPLEX__ ) # NumPy             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__G);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":58
 * # -----------------------------------------------------------------------------
 * 
 * cdef dict CTypeDict = { }             # <<<<<<<<<<<<<<
 * __CTypeDict__ = CTypeDict
 * 
 */
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
  __pyx_v_6mpi4py_3MPI_CTypeDict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":59
 * 
 * cdef dict CTypeDict = { }
 * __CTypeDict__ = CTypeDict             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "?"  , __C_BOOL__ )
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____CTypeDict__, ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":61
 * __CTypeDict__ = CTypeDict
 * 
 * AddTypeMap(CTypeDict, "?"  , __C_BOOL__ )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "c"  , __CHAR__   )
 * 
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_kp_s_162);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_BOOL__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":62
 * 
 * AddTypeMap(CTypeDict, "?"  , __C_BOOL__ )
 * AddTypeMap(CTypeDict, "c"  , __CHAR__   )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "b" , __SIGNED_CHAR__ )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__c);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":64
 * AddTypeMap(CTypeDict, "c"  , __CHAR__   )
 * 
 * AddTypeMap(CTypeDict, "b" , __SIGNED_CHAR__ )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "h" , __SHORT__       )
 * AddTypeMap(CTypeDict, "i" , __INT__         )
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__b);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":65
 * 
 * AddTypeMap(CTypeDict, "b" , __SIGNED_CHAR__ )
 * AddTypeMap(CTypeDict, "h" , __SHORT__       )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "i" , __INT__         )
 * AddTypeMap(CTypeDict, "l" , __LONG__        )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__h);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":66
 * AddTypeMap(CTypeDict, "b" , __SIGNED_CHAR__ )
 * AddTypeMap(CTypeDict, "h" , __SHORT__       )
 * AddTypeMap(CTypeDict, "i" , __INT__         )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "l" , __LONG__        )
 * AddTypeMap(CTypeDict, "q" , __LONG_LONG__   )
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__i);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":67
 * AddTypeMap(CTypeDict, "h" , __SHORT__       )
 * AddTypeMap(CTypeDict, "i" , __INT__         )
 * AddTypeMap(CTypeDict, "l" , __LONG__        )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "q" , __LONG_LONG__   )
 * 
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__l);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":68
 * AddTypeMap(CTypeDict, "i" , __INT__         )
 * AddTypeMap(CTypeDict, "l" , __LONG__        )
 * AddTypeMap(CTypeDict, "q" , __LONG_LONG__   )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "B" , __UNSIGNED_CHAR__      )
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__q);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":70
 * AddTypeMap(CTypeDict, "q" , __LONG_LONG__   )
 * 
 * AddTypeMap(CTypeDict, "B" , __UNSIGNED_CHAR__      )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "H" , __UNSIGNED_SHORT__     )
 * AddTypeMap(CTypeDict, "I" , __UNSIGNED__           )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__B);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":71
 * 
 * AddTypeMap(CTypeDict, "B" , __UNSIGNED_CHAR__      )
 * AddTypeMap(CTypeDict, "H" , __UNSIGNED_SHORT__     )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "I" , __UNSIGNED__           )
 * AddTypeMap(CTypeDict, "L" , __UNSIGNED_LONG__      )
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__H);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":72
 * AddTypeMap(CTypeDict, "B" , __UNSIGNED_CHAR__      )
 * AddTypeMap(CTypeDict, "H" , __UNSIGNED_SHORT__     )
 * AddTypeMap(CTypeDict, "I" , __UNSIGNED__           )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "L" , __UNSIGNED_LONG__      )
 * AddTypeMap(CTypeDict, "Q" , __UNSIGNED_LONG_LONG__ )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__I);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":73
 * AddTypeMap(CTypeDict, "H" , __UNSIGNED_SHORT__     )
 * AddTypeMap(CTypeDict, "I" , __UNSIGNED__           )
 * AddTypeMap(CTypeDict, "L" , __UNSIGNED_LONG__      )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "Q" , __UNSIGNED_LONG_LONG__ )
 * 
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__L);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":74
 * AddTypeMap(CTypeDict, "I" , __UNSIGNED__           )
 * AddTypeMap(CTypeDict, "L" , __UNSIGNED_LONG__      )
 * AddTypeMap(CTypeDict, "Q" , __UNSIGNED_LONG_LONG__ )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "f" , __FLOAT__       )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__Q);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":76
 * AddTypeMap(CTypeDict, "Q" , __UNSIGNED_LONG_LONG__ )
 * 
 * AddTypeMap(CTypeDict, "f" , __FLOAT__       )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "d" , __DOUBLE__      )
 * AddTypeMap(CTypeDict, "g" , __LONG_DOUBLE__ )
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__f);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":77
 * 
 * AddTypeMap(CTypeDict, "f" , __FLOAT__       )
 * AddTypeMap(CTypeDict, "d" , __DOUBLE__      )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "g" , __LONG_DOUBLE__ )
 * 
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__d);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":78
 * AddTypeMap(CTypeDict, "f" , __FLOAT__       )
 * AddTypeMap(CTypeDict, "d" , __DOUBLE__      )
 * AddTypeMap(CTypeDict, "g" , __LONG_DOUBLE__ )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "F"  , __C_FLOAT_COMPLEX__       )
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__g);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":80
 * AddTypeMap(CTypeDict, "g" , __LONG_DOUBLE__ )
 * 
 * AddTypeMap(CTypeDict, "F"  , __C_FLOAT_COMPLEX__       )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "D"  , __C_DOUBLE_COMPLEX__      )
 * AddTypeMap(CTypeDict, "G"  , __C_LONG_DOUBLE_COMPLEX__ )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__F);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":81
 * 
 * AddTypeMap(CTypeDict, "F"  , __C_FLOAT_COMPLEX__       )
 * AddTypeMap(CTypeDict, "D"  , __C_DOUBLE_COMPLEX__      )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "G"  , __C_LONG_DOUBLE_COMPLEX__ )
 * 
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__D);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":82
 * AddTypeMap(CTypeDict, "F"  , __C_FLOAT_COMPLEX__       )
 * AddTypeMap(CTypeDict, "D"  , __C_DOUBLE_COMPLEX__      )
 * AddTypeMap(CTypeDict, "G"  , __C_LONG_DOUBLE_COMPLEX__ )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "i1" , __INT8_T__   )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__G);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":84
 * AddTypeMap(CTypeDict, "G"  , __C_LONG_DOUBLE_COMPLEX__ )
 * 
 * AddTypeMap(CTypeDict, "i1" , __INT8_T__   )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "i2" , __INT16_T__  )
 * AddTypeMap(CTypeDict, "i4" , __INT32_T__  )
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__i1);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT8_T__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":85
 * 
 * AddTypeMap(CTypeDict, "i1" , __INT8_T__   )
 * AddTypeMap(CTypeDict, "i2" , __INT16_T__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "i4" , __INT32_T__  )
 * AddTypeMap(CTypeDict, "i8" , __INT64_T__  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__i2);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT16_T__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":86
 * AddTypeMap(CTypeDict, "i1" , __INT8_T__   )
 * AddTypeMap(CTypeDict, "i2" , __INT16_T__  )
 * AddTypeMap(CTypeDict, "i4" , __INT32_T__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "i8" , __INT64_T__  )
 * 
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__i4);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT32_T__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":87
 * AddTypeMap(CTypeDict, "i2" , __INT16_T__  )
 * AddTypeMap(CTypeDict, "i4" , __INT32_T__  )
 * AddTypeMap(CTypeDict, "i8" , __INT64_T__  )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "u1" , __UINT8_T__  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__i8);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":89
 * AddTypeMap(CTypeDict, "i8" , __INT64_T__  )
 * 
 * AddTypeMap(CTypeDict, "u1" , __UINT8_T__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "u2" , __UINT16_T__ )
 * AddTypeMap(CTypeDict, "u4" , __UINT32_T__ )
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__u1);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT8_T__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":90
 * 
 * AddTypeMap(CTypeDict, "u1" , __UINT8_T__  )
 * AddTypeMap(CTypeDict, "u2" , __UINT16_T__ )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "u4" , __UINT32_T__ )
 * AddTypeMap(CTypeDict, "u8" , __UINT64_T__ )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__u2);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT16_T__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":91
 * AddTypeMap(CTypeDict, "u1" , __UINT8_T__  )
 * AddTypeMap(CTypeDict, "u2" , __UINT16_T__ )
 * AddTypeMap(CTypeDict, "u4" , __UINT32_T__ )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "u8" , __UINT64_T__ )
 * 
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__u4);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT32_T__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":92
 * AddTypeMap(CTypeDict, "u2" , __UINT16_T__ )
 * AddTypeMap(CTypeDict, "u4" , __UINT32_T__ )
 * AddTypeMap(CTypeDict, "u8" , __UINT64_T__ )             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__u8);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT64_T__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":96
 * # -----------------------------------------------------------------------------
 * 
 * cdef dict FTypeDict = { }             # <<<<<<<<<<<<<<
 * __FTypeDict__ = FTypeDict
 * 
 */
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
  __pyx_v_6mpi4py_3MPI_FTypeDict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":97
 * 
 * cdef dict FTypeDict = { }
 * __FTypeDict__ = FTypeDict             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(FTypeDict, "?"   , __LOGICAL__          )
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____FTypeDict__, ((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":99
 * __FTypeDict__ = FTypeDict
 * 
 * AddTypeMap(FTypeDict, "?"   , __LOGICAL__          )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "c"   , __CHARACTER__        )
 * AddTypeMap(FTypeDict, "i"   , __INTEGER__          )
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_kp_s_162);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":100
 * 
 * AddTypeMap(FTypeDict, "?"   , __LOGICAL__          )
 * AddTypeMap(FTypeDict, "c"   , __CHARACTER__        )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "i"   , __INTEGER__          )
 * AddTypeMap(FTypeDict, "f"   , __REAL__             )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__c);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CHARACTER__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":101
 * AddTypeMap(FTypeDict, "?"   , __LOGICAL__          )
 * AddTypeMap(FTypeDict, "c"   , __CHARACTER__        )
 * AddTypeMap(FTypeDict, "i"   , __INTEGER__          )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "f"   , __REAL__             )
 * AddTypeMap(FTypeDict, "d"   , __DOUBLE_PRECISION__ )
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__i);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":102
 * AddTypeMap(FTypeDict, "c"   , __CHARACTER__        )
 * AddTypeMap(FTypeDict, "i"   , __INTEGER__          )
 * AddTypeMap(FTypeDict, "f"   , __REAL__             )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "d"   , __DOUBLE_PRECISION__ )
 * AddTypeMap(FTypeDict, "F"   , __COMPLEX__          )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__f);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":103
 * AddTypeMap(FTypeDict, "i"   , __INTEGER__          )
 * AddTypeMap(FTypeDict, "f"   , __REAL__             )
 * AddTypeMap(FTypeDict, "d"   , __DOUBLE_PRECISION__ )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "F"   , __COMPLEX__          )
 * AddTypeMap(FTypeDict, "D"   , __DOUBLE_COMPLEX__   )
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__d);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":104
 * AddTypeMap(FTypeDict, "f"   , __REAL__             )
 * AddTypeMap(FTypeDict, "d"   , __DOUBLE_PRECISION__ )
 * AddTypeMap(FTypeDict, "F"   , __COMPLEX__          )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "D"   , __DOUBLE_COMPLEX__   )
 * 
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__F);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":105
 * AddTypeMap(FTypeDict, "d"   , __DOUBLE_PRECISION__ )
 * AddTypeMap(FTypeDict, "F"   , __COMPLEX__          )
 * AddTypeMap(FTypeDict, "D"   , __DOUBLE_COMPLEX__   )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(FTypeDict, "i1"  , __INTEGER1__  )
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__D);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":107
 * AddTypeMap(FTypeDict, "D"   , __DOUBLE_COMPLEX__   )
 * 
 * AddTypeMap(FTypeDict, "i1"  , __INTEGER1__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "i2"  , __INTEGER2__  )
 * AddTypeMap(FTypeDict, "i4"  , __INTEGER4__  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__i1);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER1__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":108
 * 
 * AddTypeMap(FTypeDict, "i1"  , __INTEGER1__  )
 * AddTypeMap(FTypeDict, "i2"  , __INTEGER2__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "i4"  , __INTEGER4__  )
 * AddTypeMap(FTypeDict, "i8"  , __INTEGER8__  )
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__i2);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER2__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":109
 * AddTypeMap(FTypeDict, "i1"  , __INTEGER1__  )
 * AddTypeMap(FTypeDict, "i2"  , __INTEGER2__  )
 * AddTypeMap(FTypeDict, "i4"  , __INTEGER4__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "i8"  , __INTEGER8__  )
 * AddTypeMap(FTypeDict, "i16" , __INTEGER16__ )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__i4);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER4__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":110
 * AddTypeMap(FTypeDict, "i2"  , __INTEGER2__  )
 * AddTypeMap(FTypeDict, "i4"  , __INTEGER4__  )
 * AddTypeMap(FTypeDict, "i8"  , __INTEGER8__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "i16" , __INTEGER16__ )
 * 
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__i8);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER8__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":111
 * AddTypeMap(FTypeDict, "i4"  , __INTEGER4__  )
 * AddTypeMap(FTypeDict, "i8"  , __INTEGER8__  )
 * AddTypeMap(FTypeDict, "i16" , __INTEGER16__ )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(FTypeDict, "f2"  , __REAL2__     )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__i16);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER16__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":113
 * AddTypeMap(FTypeDict, "i16" , __INTEGER16__ )
 * 
 * AddTypeMap(FTypeDict, "f2"  , __REAL2__     )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "f4"  , __REAL4__     )
 * AddTypeMap(FTypeDict, "f8"  , __REAL8__     )
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__f2);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL2__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":114
 * 
 * AddTypeMap(FTypeDict, "f2"  , __REAL2__     )
 * AddTypeMap(FTypeDict, "f4"  , __REAL4__     )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "f8"  , __REAL8__     )
 * AddTypeMap(FTypeDict, "f16" , __REAL16__    )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__f4);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL4__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":115
 * AddTypeMap(FTypeDict, "f2"  , __REAL2__     )
 * AddTypeMap(FTypeDict, "f4"  , __REAL4__     )
 * AddTypeMap(FTypeDict, "f8"  , __REAL8__     )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "f16" , __REAL16__    )
 * 
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__f8);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL8__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":116
 * AddTypeMap(FTypeDict, "f4"  , __REAL4__     )
 * AddTypeMap(FTypeDict, "f8"  , __REAL8__     )
 * AddTypeMap(FTypeDict, "f16" , __REAL16__    )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(FTypeDict, "c4"  , __COMPLEX4__  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__f16);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL16__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":118
 * AddTypeMap(FTypeDict, "f16" , __REAL16__    )
 * 
 * AddTypeMap(FTypeDict, "c4"  , __COMPLEX4__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "c8"  , __COMPLEX8__  )
 * AddTypeMap(FTypeDict, "c16" , __COMPLEX16__ )
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__c4);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX4__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":119
 * 
 * AddTypeMap(FTypeDict, "c4"  , __COMPLEX4__  )
 * AddTypeMap(FTypeDict, "c8"  , __COMPLEX8__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "c16" , __COMPLEX16__ )
 * AddTypeMap(FTypeDict, "c32" , __COMPLEX32__ )
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__c8);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX8__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":120
 * AddTypeMap(FTypeDict, "c4"  , __COMPLEX4__  )
 * AddTypeMap(FTypeDict, "c8"  , __COMPLEX8__  )
 * AddTypeMap(FTypeDict, "c16" , __COMPLEX16__ )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "c32" , __COMPLEX32__ )
 * 
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__c16);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX16__);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_2), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_3)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/typemap.pxi":121
 * AddTypeMap(FTypeDict, "c8"  , __COMPLEX8__  )
 * AddTypeMap(FTypeDict, "c16" , __COMPLEX16__ )
 * AddTypeMap(FTypeDict, "c32" , __COMPLEX32__ )             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = ((PyObject *)__pyx_n_s__c32);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_2 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX32__);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_3), __pyx_t_8, ((struct PyMPIDatatypeObject *)__pyx_t_2)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":817
 * # ---------------------------
 * 
 * DATATYPE_NULL = __DATATYPE_NULL__ #: Null datatype handle             # <<<<<<<<<<<<<<
 * # Deprecated datatypes (since MPI-2)
 * UB = __UB__ #: upper-bound marker
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DATATYPE_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___DATATYPE_NULL__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":819
 * DATATYPE_NULL = __DATATYPE_NULL__ #: Null datatype handle
 * # Deprecated datatypes (since MPI-2)
 * UB = __UB__ #: upper-bound marker             # <<<<<<<<<<<<<<
 * LB = __LB__ #: lower-bound marker
 * # MPI-specific datatypes
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__UB, ((PyObject *)__pyx_v_6mpi4py_3MPI___UB__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":820
 * # Deprecated datatypes (since MPI-2)
 * UB = __UB__ #: upper-bound marker
 * LB = __LB__ #: lower-bound marker             # <<<<<<<<<<<<<<
 * # MPI-specific datatypes
 * PACKED = __PACKED__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LB, ((PyObject *)__pyx_v_6mpi4py_3MPI___LB__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":822
 * LB = __LB__ #: lower-bound marker
 * # MPI-specific datatypes
 * PACKED = __PACKED__             # <<<<<<<<<<<<<<
 * BYTE   = __BYTE__
 * AINT   = __AINT__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__PACKED, ((PyObject *)__pyx_v_6mpi4py_3MPI___PACKED__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":823
 * # MPI-specific datatypes
 * PACKED = __PACKED__
 * BYTE   = __BYTE__             # <<<<<<<<<<<<<<
 * AINT   = __AINT__
 * OFFSET = __OFFSET__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__BYTE, ((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":824
 * PACKED = __PACKED__
 * BYTE   = __BYTE__
 * AINT   = __AINT__             # <<<<<<<<<<<<<<
 * OFFSET = __OFFSET__
 * # Elementary C datatypes
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__AINT, ((PyObject *)__pyx_v_6mpi4py_3MPI___AINT__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":825
 * BYTE   = __BYTE__
 * AINT   = __AINT__
 * OFFSET = __OFFSET__             # <<<<<<<<<<<<<<
 * # Elementary C datatypes
 * CHAR                = __CHAR__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__OFFSET, ((PyObject *)__pyx_v_6mpi4py_3MPI___OFFSET__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":827
 * OFFSET = __OFFSET__
 * # Elementary C datatypes
 * CHAR                = __CHAR__             # <<<<<<<<<<<<<<
 * WCHAR               = __WCHAR__
 * SIGNED_CHAR         = __SIGNED_CHAR__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__CHAR, ((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":828
 * # Elementary C datatypes
 * CHAR                = __CHAR__
 * WCHAR               = __WCHAR__             # <<<<<<<<<<<<<<
 * SIGNED_CHAR         = __SIGNED_CHAR__
 * SHORT               = __SHORT__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__WCHAR, ((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":829
 * CHAR                = __CHAR__
 * WCHAR               = __WCHAR__
 * SIGNED_CHAR         = __SIGNED_CHAR__             # <<<<<<<<<<<<<<
 * SHORT               = __SHORT__
 * INT                 = __INT__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SIGNED_CHAR, ((PyObject *)__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":830
 * WCHAR               = __WCHAR__
 * SIGNED_CHAR         = __SIGNED_CHAR__
 * SHORT               = __SHORT__             # <<<<<<<<<<<<<<
 * INT                 = __INT__
 * LONG                = __LONG__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SHORT, ((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":831
 * SIGNED_CHAR         = __SIGNED_CHAR__
 * SHORT               = __SHORT__
 * INT                 = __INT__             # <<<<<<<<<<<<<<
 * LONG                = __LONG__
 * LONG_LONG           = __LONG_LONG__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":832
 * SHORT               = __SHORT__
 * INT                 = __INT__
 * LONG                = __LONG__             # <<<<<<<<<<<<<<
 * LONG_LONG           = __LONG_LONG__
 * UNSIGNED_CHAR       = __UNSIGNED_CHAR__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":833
 * INT                 = __INT__
 * LONG                = __LONG__
 * LONG_LONG           = __LONG_LONG__             # <<<<<<<<<<<<<<
 * UNSIGNED_CHAR       = __UNSIGNED_CHAR__
 * UNSIGNED_SHORT      = __UNSIGNED_SHORT__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LONG_LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":834
 * LONG                = __LONG__
 * LONG_LONG           = __LONG_LONG__
 * UNSIGNED_CHAR       = __UNSIGNED_CHAR__             # <<<<<<<<<<<<<<
 * UNSIGNED_SHORT      = __UNSIGNED_SHORT__
 * UNSIGNED            = __UNSIGNED__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__UNSIGNED_CHAR, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":835
 * LONG_LONG           = __LONG_LONG__
 * UNSIGNED_CHAR       = __UNSIGNED_CHAR__
 * UNSIGNED_SHORT      = __UNSIGNED_SHORT__             # <<<<<<<<<<<<<<
 * UNSIGNED            = __UNSIGNED__
 * UNSIGNED_LONG       = __UNSIGNED_LONG__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__UNSIGNED_SHORT, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":836
 * UNSIGNED_CHAR       = __UNSIGNED_CHAR__
 * UNSIGNED_SHORT      = __UNSIGNED_SHORT__
 * UNSIGNED            = __UNSIGNED__             # <<<<<<<<<<<<<<
 * UNSIGNED_LONG       = __UNSIGNED_LONG__
 * UNSIGNED_LONG_LONG  = __UNSIGNED_LONG_LONG__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__UNSIGNED, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":837
 * UNSIGNED_SHORT      = __UNSIGNED_SHORT__
 * UNSIGNED            = __UNSIGNED__
 * UNSIGNED_LONG       = __UNSIGNED_LONG__             # <<<<<<<<<<<<<<
 * UNSIGNED_LONG_LONG  = __UNSIGNED_LONG_LONG__
 * FLOAT               = __FLOAT__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__UNSIGNED_LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":838
 * UNSIGNED            = __UNSIGNED__
 * UNSIGNED_LONG       = __UNSIGNED_LONG__
 * UNSIGNED_LONG_LONG  = __UNSIGNED_LONG_LONG__             # <<<<<<<<<<<<<<
 * FLOAT               = __FLOAT__
 * DOUBLE              = __DOUBLE__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__UNSIGNED_LONG_LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":839
 * UNSIGNED_LONG       = __UNSIGNED_LONG__
 * UNSIGNED_LONG_LONG  = __UNSIGNED_LONG_LONG__
 * FLOAT               = __FLOAT__             # <<<<<<<<<<<<<<
 * DOUBLE              = __DOUBLE__
 * LONG_DOUBLE         = __LONG_DOUBLE__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FLOAT, ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":840
 * UNSIGNED_LONG_LONG  = __UNSIGNED_LONG_LONG__
 * FLOAT               = __FLOAT__
 * DOUBLE              = __DOUBLE__             # <<<<<<<<<<<<<<
 * LONG_DOUBLE         = __LONG_DOUBLE__
 * # C99 datatypes
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DOUBLE, ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":841
 * FLOAT               = __FLOAT__
 * DOUBLE              = __DOUBLE__
 * LONG_DOUBLE         = __LONG_DOUBLE__             # <<<<<<<<<<<<<<
 * # C99 datatypes
 * C_BOOL                = __C_BOOL__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LONG_DOUBLE, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":843
 * LONG_DOUBLE         = __LONG_DOUBLE__
 * # C99 datatypes
 * C_BOOL                = __C_BOOL__             # <<<<<<<<<<<<<<
 * INT8_T                = __INT8_T__
 * INT16_T               = __INT16_T__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__C_BOOL, ((PyObject *)__pyx_v_6mpi4py_3MPI___C_BOOL__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":844
 * # C99 datatypes
 * C_BOOL                = __C_BOOL__
 * INT8_T                = __INT8_T__             # <<<<<<<<<<<<<<
 * INT16_T               = __INT16_T__
 * INT32_T               = __INT32_T__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__INT8_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT8_T__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":845
 * C_BOOL                = __C_BOOL__
 * INT8_T                = __INT8_T__
 * INT16_T               = __INT16_T__             # <<<<<<<<<<<<<<
 * INT32_T               = __INT32_T__
 * INT64_T               = __INT64_T__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__INT16_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT16_T__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":846
 * INT8_T                = __INT8_T__
 * INT16_T               = __INT16_T__
 * INT32_T               = __INT32_T__             # <<<<<<<<<<<<<<
 * INT64_T               = __INT64_T__
 * UINT8_T               = __UINT8_T__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__INT32_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT32_T__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":847
 * INT16_T               = __INT16_T__
 * INT32_T               = __INT32_T__
 * INT64_T               = __INT64_T__             # <<<<<<<<<<<<<<
 * UINT8_T               = __UINT8_T__
 * UINT16_T              = __UINT16_T__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__INT64_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":848
 * INT32_T               = __INT32_T__
 * INT64_T               = __INT64_T__
 * UINT8_T               = __UINT8_T__             # <<<<<<<<<<<<<<
 * UINT16_T              = __UINT16_T__
 * UINT32_T              = __UINT32_T__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__UINT8_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT8_T__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":849
 * INT64_T               = __INT64_T__
 * UINT8_T               = __UINT8_T__
 * UINT16_T              = __UINT16_T__             # <<<<<<<<<<<<<<
 * UINT32_T              = __UINT32_T__
 * UINT64_T              = __UINT64_T__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__UINT16_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT16_T__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":850
 * UINT8_T               = __UINT8_T__
 * UINT16_T              = __UINT16_T__
 * UINT32_T              = __UINT32_T__             # <<<<<<<<<<<<<<
 * UINT64_T              = __UINT64_T__
 * C_COMPLEX             = __C_COMPLEX__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__UINT32_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT32_T__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":851
 * UINT16_T              = __UINT16_T__
 * UINT32_T              = __UINT32_T__
 * UINT64_T              = __UINT64_T__             # <<<<<<<<<<<<<<
 * C_COMPLEX             = __C_COMPLEX__
 * C_FLOAT_COMPLEX       = __C_FLOAT_COMPLEX__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__UINT64_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT64_T__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":852
 * UINT32_T              = __UINT32_T__
 * UINT64_T              = __UINT64_T__
 * C_COMPLEX             = __C_COMPLEX__             # <<<<<<<<<<<<<<
 * C_FLOAT_COMPLEX       = __C_FLOAT_COMPLEX__
 * C_DOUBLE_COMPLEX      = __C_DOUBLE_COMPLEX__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__C_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___C_COMPLEX__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":853
 * UINT64_T              = __UINT64_T__
 * C_COMPLEX             = __C_COMPLEX__
 * C_FLOAT_COMPLEX       = __C_FLOAT_COMPLEX__             # <<<<<<<<<<<<<<
 * C_DOUBLE_COMPLEX      = __C_DOUBLE_COMPLEX__
 * C_LONG_DOUBLE_COMPLEX = __C_LONG_DOUBLE_COMPLEX__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__C_FLOAT_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":854
 * C_COMPLEX             = __C_COMPLEX__
 * C_FLOAT_COMPLEX       = __C_FLOAT_COMPLEX__
 * C_DOUBLE_COMPLEX      = __C_DOUBLE_COMPLEX__             # <<<<<<<<<<<<<<
 * C_LONG_DOUBLE_COMPLEX = __C_LONG_DOUBLE_COMPLEX__
 * # C Datatypes for reduction operations
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__C_DOUBLE_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":855
 * C_FLOAT_COMPLEX       = __C_FLOAT_COMPLEX__
 * C_DOUBLE_COMPLEX      = __C_DOUBLE_COMPLEX__
 * C_LONG_DOUBLE_COMPLEX = __C_LONG_DOUBLE_COMPLEX__             # <<<<<<<<<<<<<<
 * # C Datatypes for reduction operations
 * SHORT_INT        = __SHORT_INT__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_163, ((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":857
 * C_LONG_DOUBLE_COMPLEX = __C_LONG_DOUBLE_COMPLEX__
 * # C Datatypes for reduction operations
 * SHORT_INT        = __SHORT_INT__             # <<<<<<<<<<<<<<
 * INT_INT = TWOINT = __TWOINT__
 * LONG_INT         = __LONG_INT__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SHORT_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT_INT__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":858
 * # C Datatypes for reduction operations
 * SHORT_INT        = __SHORT_INT__
 * INT_INT = TWOINT = __TWOINT__             # <<<<<<<<<<<<<<
 * LONG_INT         = __LONG_INT__
 * FLOAT_INT        = __FLOAT_INT__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__INT_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___TWOINT__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__TWOINT, ((PyObject *)__pyx_v_6mpi4py_3MPI___TWOINT__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":859
 * SHORT_INT        = __SHORT_INT__
 * INT_INT = TWOINT = __TWOINT__
 * LONG_INT         = __LONG_INT__             # <<<<<<<<<<<<<<
 * FLOAT_INT        = __FLOAT_INT__
 * DOUBLE_INT       = __DOUBLE_INT__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LONG_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_INT__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":860
 * INT_INT = TWOINT = __TWOINT__
 * LONG_INT         = __LONG_INT__
 * FLOAT_INT        = __FLOAT_INT__             # <<<<<<<<<<<<<<
 * DOUBLE_INT       = __DOUBLE_INT__
 * LONG_DOUBLE_INT  = __LONG_DOUBLE_INT__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FLOAT_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT_INT__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":861
 * LONG_INT         = __LONG_INT__
 * FLOAT_INT        = __FLOAT_INT__
 * DOUBLE_INT       = __DOUBLE_INT__             # <<<<<<<<<<<<<<
 * LONG_DOUBLE_INT  = __LONG_DOUBLE_INT__
 * # Elementary Fortran datatypes
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DOUBLE_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_INT__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":862
 * FLOAT_INT        = __FLOAT_INT__
 * DOUBLE_INT       = __DOUBLE_INT__
 * LONG_DOUBLE_INT  = __LONG_DOUBLE_INT__             # <<<<<<<<<<<<<<
 * # Elementary Fortran datatypes
 * CHARACTER        = __CHARACTER__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LONG_DOUBLE_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE_INT__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":864
 * LONG_DOUBLE_INT  = __LONG_DOUBLE_INT__
 * # Elementary Fortran datatypes
 * CHARACTER        = __CHARACTER__             # <<<<<<<<<<<<<<
 * LOGICAL          = __LOGICAL__
 * INTEGER          = __INTEGER__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__CHARACTER, ((PyObject *)__pyx_v_6mpi4py_3MPI___CHARACTER__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":865
 * # Elementary Fortran datatypes
 * CHARACTER        = __CHARACTER__
 * LOGICAL          = __LOGICAL__             # <<<<<<<<<<<<<<
 * INTEGER          = __INTEGER__
 * REAL             = __REAL__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOGICAL, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":866
 * CHARACTER        = __CHARACTER__
 * LOGICAL          = __LOGICAL__
 * INTEGER          = __INTEGER__             # <<<<<<<<<<<<<<
 * REAL             = __REAL__
 * DOUBLE_PRECISION = __DOUBLE_PRECISION__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__INTEGER, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":867
 * LOGICAL          = __LOGICAL__
 * INTEGER          = __INTEGER__
 * REAL             = __REAL__             # <<<<<<<<<<<<<<
 * DOUBLE_PRECISION = __DOUBLE_PRECISION__
 * COMPLEX          = __COMPLEX__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__REAL, ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":868
 * INTEGER          = __INTEGER__
 * REAL             = __REAL__
 * DOUBLE_PRECISION = __DOUBLE_PRECISION__             # <<<<<<<<<<<<<<
 * COMPLEX          = __COMPLEX__
 * DOUBLE_COMPLEX   = __DOUBLE_COMPLEX__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DOUBLE_PRECISION, ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":869
 * REAL             = __REAL__
 * DOUBLE_PRECISION = __DOUBLE_PRECISION__
 * COMPLEX          = __COMPLEX__             # <<<<<<<<<<<<<<
 * DOUBLE_COMPLEX   = __DOUBLE_COMPLEX__
 * # Size-specific Fortran datatypes
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":870
 * DOUBLE_PRECISION = __DOUBLE_PRECISION__
 * COMPLEX          = __COMPLEX__
 * DOUBLE_COMPLEX   = __DOUBLE_COMPLEX__             # <<<<<<<<<<<<<<
 * # Size-specific Fortran datatypes
 * LOGICAL1  = __LOGICAL1__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DOUBLE_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":872
 * DOUBLE_COMPLEX   = __DOUBLE_COMPLEX__
 * # Size-specific Fortran datatypes
 * LOGICAL1  = __LOGICAL1__             # <<<<<<<<<<<<<<
 * LOGICAL2  = __LOGICAL2__
 * LOGICAL4  = __LOGICAL4__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOGICAL1, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL1__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":873
 * # Size-specific Fortran datatypes
 * LOGICAL1  = __LOGICAL1__
 * LOGICAL2  = __LOGICAL2__             # <<<<<<<<<<<<<<
 * LOGICAL4  = __LOGICAL4__
 * LOGICAL8  = __LOGICAL8__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOGICAL2, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL2__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":874
 * LOGICAL1  = __LOGICAL1__
 * LOGICAL2  = __LOGICAL2__
 * LOGICAL4  = __LOGICAL4__             # <<<<<<<<<<<<<<
 * LOGICAL8  = __LOGICAL8__
 * INTEGER1  = __INTEGER1__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOGICAL4, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL4__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":875
 * LOGICAL2  = __LOGICAL2__
 * LOGICAL4  = __LOGICAL4__
 * LOGICAL8  = __LOGICAL8__             # <<<<<<<<<<<<<<
 * INTEGER1  = __INTEGER1__
 * INTEGER2  = __INTEGER2__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOGICAL8, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL8__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":876
 * LOGICAL4  = __LOGICAL4__
 * LOGICAL8  = __LOGICAL8__
 * INTEGER1  = __INTEGER1__             # <<<<<<<<<<<<<<
 * INTEGER2  = __INTEGER2__
 * INTEGER4  = __INTEGER4__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__INTEGER1, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER1__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":877
 * LOGICAL8  = __LOGICAL8__
 * INTEGER1  = __INTEGER1__
 * INTEGER2  = __INTEGER2__             # <<<<<<<<<<<<<<
 * INTEGER4  = __INTEGER4__
 * INTEGER8  = __INTEGER8__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__INTEGER2, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER2__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":878
 * INTEGER1  = __INTEGER1__
 * INTEGER2  = __INTEGER2__
 * INTEGER4  = __INTEGER4__             # <<<<<<<<<<<<<<
 * INTEGER8  = __INTEGER8__
 * INTEGER16 = __INTEGER16__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__INTEGER4, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER4__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":879
 * INTEGER2  = __INTEGER2__
 * INTEGER4  = __INTEGER4__
 * INTEGER8  = __INTEGER8__             # <<<<<<<<<<<<<<
 * INTEGER16 = __INTEGER16__
 * REAL2     = __REAL2__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__INTEGER8, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER8__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":880
 * INTEGER4  = __INTEGER4__
 * INTEGER8  = __INTEGER8__
 * INTEGER16 = __INTEGER16__             # <<<<<<<<<<<<<<
 * REAL2     = __REAL2__
 * REAL4     = __REAL4__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__INTEGER16, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER16__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 880; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":881
 * INTEGER8  = __INTEGER8__
 * INTEGER16 = __INTEGER16__
 * REAL2     = __REAL2__             # <<<<<<<<<<<<<<
 * REAL4     = __REAL4__
 * REAL8     = __REAL8__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__REAL2, ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL2__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":882
 * INTEGER16 = __INTEGER16__
 * REAL2     = __REAL2__
 * REAL4     = __REAL4__             # <<<<<<<<<<<<<<
 * REAL8     = __REAL8__
 * REAL16    = __REAL16__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__REAL4, ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL4__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":883
 * REAL2     = __REAL2__
 * REAL4     = __REAL4__
 * REAL8     = __REAL8__             # <<<<<<<<<<<<<<
 * REAL16    = __REAL16__
 * COMPLEX4  = __COMPLEX4__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__REAL8, ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL8__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":884
 * REAL4     = __REAL4__
 * REAL8     = __REAL8__
 * REAL16    = __REAL16__             # <<<<<<<<<<<<<<
 * COMPLEX4  = __COMPLEX4__
 * COMPLEX8  = __COMPLEX8__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__REAL16, ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL16__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":885
 * REAL8     = __REAL8__
 * REAL16    = __REAL16__
 * COMPLEX4  = __COMPLEX4__             # <<<<<<<<<<<<<<
 * COMPLEX8  = __COMPLEX8__
 * COMPLEX16 = __COMPLEX16__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMPLEX4, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX4__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":886
 * REAL16    = __REAL16__
 * COMPLEX4  = __COMPLEX4__
 * COMPLEX8  = __COMPLEX8__             # <<<<<<<<<<<<<<
 * COMPLEX16 = __COMPLEX16__
 * COMPLEX32 = __COMPLEX32__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMPLEX8, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX8__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":887
 * COMPLEX4  = __COMPLEX4__
 * COMPLEX8  = __COMPLEX8__
 * COMPLEX16 = __COMPLEX16__             # <<<<<<<<<<<<<<
 * COMPLEX32 = __COMPLEX32__
 * 
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMPLEX16, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX16__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":888
 * COMPLEX8  = __COMPLEX8__
 * COMPLEX16 = __COMPLEX16__
 * COMPLEX32 = __COMPLEX32__             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMPLEX32, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX32__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":892
 * 
 * # Convenience aliases
 * UNSIGNED_INT          = __UNSIGNED__             # <<<<<<<<<<<<<<
 * SIGNED_SHORT          = __SHORT__
 * SIGNED_INT            = __INT__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__UNSIGNED_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":893
 * # Convenience aliases
 * UNSIGNED_INT          = __UNSIGNED__
 * SIGNED_SHORT          = __SHORT__             # <<<<<<<<<<<<<<
 * SIGNED_INT            = __INT__
 * SIGNED_LONG           = __LONG__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SIGNED_SHORT, ((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":894
 * UNSIGNED_INT          = __UNSIGNED__
 * SIGNED_SHORT          = __SHORT__
 * SIGNED_INT            = __INT__             # <<<<<<<<<<<<<<
 * SIGNED_LONG           = __LONG__
 * SIGNED_LONG_LONG      = __LONG_LONG__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SIGNED_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":895
 * SIGNED_SHORT          = __SHORT__
 * SIGNED_INT            = __INT__
 * SIGNED_LONG           = __LONG__             # <<<<<<<<<<<<<<
 * SIGNED_LONG_LONG      = __LONG_LONG__
 * BOOL                  = __C_BOOL__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SIGNED_LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":896
 * SIGNED_INT            = __INT__
 * SIGNED_LONG           = __LONG__
 * SIGNED_LONG_LONG      = __LONG_LONG__             # <<<<<<<<<<<<<<
 * BOOL                  = __C_BOOL__
 * SINT8_T               = __INT8_T__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SIGNED_LONG_LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":897
 * SIGNED_LONG           = __LONG__
 * SIGNED_LONG_LONG      = __LONG_LONG__
 * BOOL                  = __C_BOOL__             # <<<<<<<<<<<<<<
 * SINT8_T               = __INT8_T__
 * SINT16_T              = __INT16_T__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__BOOL, ((PyObject *)__pyx_v_6mpi4py_3MPI___C_BOOL__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":898
 * SIGNED_LONG_LONG      = __LONG_LONG__
 * BOOL                  = __C_BOOL__
 * SINT8_T               = __INT8_T__             # <<<<<<<<<<<<<<
 * SINT16_T              = __INT16_T__
 * SINT32_T              = __INT32_T__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SINT8_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT8_T__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":899
 * BOOL                  = __C_BOOL__
 * SINT8_T               = __INT8_T__
 * SINT16_T              = __INT16_T__             # <<<<<<<<<<<<<<
 * SINT32_T              = __INT32_T__
 * SINT64_T              = __INT64_T__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SINT16_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT16_T__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":900
 * SINT8_T               = __INT8_T__
 * SINT16_T              = __INT16_T__
 * SINT32_T              = __INT32_T__             # <<<<<<<<<<<<<<
 * SINT64_T              = __INT64_T__
 * F_BOOL                = __LOGICAL__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SINT32_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT32_T__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":901
 * SINT16_T              = __INT16_T__
 * SINT32_T              = __INT32_T__
 * SINT64_T              = __INT64_T__             # <<<<<<<<<<<<<<
 * F_BOOL                = __LOGICAL__
 * F_INT                 = __INTEGER__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SINT64_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":902
 * SINT32_T              = __INT32_T__
 * SINT64_T              = __INT64_T__
 * F_BOOL                = __LOGICAL__             # <<<<<<<<<<<<<<
 * F_INT                 = __INTEGER__
 * F_FLOAT               = __REAL__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__F_BOOL, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":903
 * SINT64_T              = __INT64_T__
 * F_BOOL                = __LOGICAL__
 * F_INT                 = __INTEGER__             # <<<<<<<<<<<<<<
 * F_FLOAT               = __REAL__
 * F_DOUBLE              = __DOUBLE_PRECISION__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__F_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":904
 * F_BOOL                = __LOGICAL__
 * F_INT                 = __INTEGER__
 * F_FLOAT               = __REAL__             # <<<<<<<<<<<<<<
 * F_DOUBLE              = __DOUBLE_PRECISION__
 * F_COMPLEX             = __COMPLEX__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__F_FLOAT, ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":905
 * F_INT                 = __INTEGER__
 * F_FLOAT               = __REAL__
 * F_DOUBLE              = __DOUBLE_PRECISION__             # <<<<<<<<<<<<<<
 * F_COMPLEX             = __COMPLEX__
 * F_FLOAT_COMPLEX       = __COMPLEX__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__F_DOUBLE, ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":906
 * F_FLOAT               = __REAL__
 * F_DOUBLE              = __DOUBLE_PRECISION__
 * F_COMPLEX             = __COMPLEX__             # <<<<<<<<<<<<<<
 * F_FLOAT_COMPLEX       = __COMPLEX__
 * F_DOUBLE_COMPLEX      = __DOUBLE_COMPLEX__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__F_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":907
 * F_DOUBLE              = __DOUBLE_PRECISION__
 * F_COMPLEX             = __COMPLEX__
 * F_FLOAT_COMPLEX       = __COMPLEX__             # <<<<<<<<<<<<<<
 * F_DOUBLE_COMPLEX      = __DOUBLE_COMPLEX__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__F_FLOAT_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Datatype.pyx":908
 * F_COMPLEX             = __COMPLEX__
 * F_FLOAT_COMPLEX       = __COMPLEX__
 * F_DOUBLE_COMPLEX      = __DOUBLE_COMPLEX__             # <<<<<<<<<<<<<<
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__F_DOUBLE_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Status.pyx":79
 *             self.Set_error(value)
 * 
 *     def Get_count(self, Datatype datatype not None=BYTE):             # <<<<<<<<<<<<<<
 *         """
 *         Get the number of *top level* elements
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__BYTE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Datatype))))) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_61 = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":73
 * 
 *     @classmethod
 *     def Waitany(cls, requests, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Wait for any previously initiated request to complete
 */
  __pyx_t_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s__Waitany); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request->tp_dict, __pyx_n_s__Waitany, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":91
 * 
 *     @classmethod
 *     def Testany(cls, requests, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Test for completion of any previously initiated request
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s__Testany); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request->tp_dict, __pyx_n_s__Testany, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":111
 * 
 *     @classmethod
 *     def Waitall(cls, requests, statuses=None):             # <<<<<<<<<<<<<<
 *         """
 *         Wait for all previously initiated requests to complete
 */
  __pyx_t_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s__Waitall); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request->tp_dict, __pyx_n_s__Waitall, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":129
 * 
 *     @classmethod
 *     def Testall(cls, requests, statuses=None):             # <<<<<<<<<<<<<<
 *         """
 *         Test for completion of all previously initiated requests
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s__Testall); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request->tp_dict, __pyx_n_s__Testall, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":148
 * 
 *     @classmethod
 *     def Waitsome(cls, requests, statuses=None):             # <<<<<<<<<<<<<<
 *         """
 *         Wait for some previously initiated requests to complete
 */
  __pyx_t_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s__Waitsome); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request->tp_dict, __pyx_n_s__Waitsome, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":173
 * 
 *     @classmethod
 *     def Testsome(cls, requests, statuses=None):             # <<<<<<<<<<<<<<
 *         """
 *         Test for completion of some previously initiated requests
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s__Testsome); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request->tp_dict, __pyx_n_s__Testsome, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":215
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_t_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s__f2py); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request->tp_dict, __pyx_n_s__f2py, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":241
 *     #
 *     @classmethod
 *     def waitany(cls, requests, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Wait for any previously initiated request to complete
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s__waitany); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request->tp_dict, __pyx_n_s__waitany, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":250
 *     #
 *     @classmethod
 *     def testany(cls, requests, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Test for completion of any previously initiated request
 */
  __pyx_t_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s__testany); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request->tp_dict, __pyx_n_s__testany, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":260
 *     #
 *     @classmethod
 *     def waitall(cls, requests, statuses=None):             # <<<<<<<<<<<<<<
 *         """
 *         Wait for all previously initiated requests to complete
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s__waitall); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request->tp_dict, __pyx_n_s__waitall, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":268
 *     #
 *     @classmethod
 *     def testall(cls, requests, statuses=None):             # <<<<<<<<<<<<<<
 *         """
 *         Test for completion of all previously initiated requests
 */
  __pyx_t_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s__testall); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request->tp_dict, __pyx_n_s__testall, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":294
 * 
 *     @classmethod
 *     def Startall(cls, requests):             # <<<<<<<<<<<<<<
 *         """
 *         Start a collection of persistent requests
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Prequest, __pyx_n_s__Startall); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Prequest->tp_dict, __pyx_n_s__Startall, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Prequest);

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":321
 * 
 *     @classmethod
 *     def Start(cls, query_fn, free_fn, cancel_fn,             # <<<<<<<<<<<<<<
 *               args=None, kargs=None):
 *         """
 */
  __pyx_t_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Grequest, __pyx_n_s__Start); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Grequest->tp_dict, __pyx_n_s__Start, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Grequest);

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":350
 * 
 * 
 * cdef Request __REQUEST_NULL__ = new_Request(MPI_REQUEST_NULL)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Request(MPI_REQUEST_NULL)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___REQUEST_NULL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___REQUEST_NULL__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___REQUEST_NULL__ = ((struct PyMPIRequestObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Request.pyx":356
 * # --------------------------
 * 
 * REQUEST_NULL = __REQUEST_NULL__  #: Null request handle             # <<<<<<<<<<<<<<
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__REQUEST_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___REQUEST_NULL__)) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":26
 * 
 *     @classmethod
 *     def Create(cls):             # <<<<<<<<<<<<<<
 *         """
 *         Create a new, empty info object
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s__Create); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info->tp_dict, __pyx_n_s__Create, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":112
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_t_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s__f2py); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info->tp_dict, __pyx_n_s__f2py, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":219
 * 
 * 
 * cdef Info __INFO_NULL__ = new_Info(MPI_INFO_NULL)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Info(MPI_INFO_NULL)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INFO_NULL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INFO_NULL__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___INFO_NULL__ = ((struct PyMPIInfoObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Info.pyx":225
 * # -----------------------
 * 
 * INFO_NULL = __INFO_NULL__  #: Null info handle             # <<<<<<<<<<<<<<
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__INFO_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___INFO_NULL__)) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":33
 * 
 *     @classmethod
 *     def Create(cls, function, bint commute=False):             # <<<<<<<<<<<<<<
 *         """
 *         Create a user-defined operation
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Op, __pyx_n_s__Create); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Op->tp_dict, __pyx_n_s__Create, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Op);

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":95
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_t_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Op, __pyx_n_s__f2py); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Op->tp_dict, __pyx_n_s__f2py, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Op);

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":104
 * 
 * 
 * cdef Op __OP_NULL__ = new_Op( MPI_OP_NULL )             # <<<<<<<<<<<<<<
 * cdef Op __MAX__     = new_Op( MPI_MAX     )
 * cdef Op __MIN__     = new_Op( MPI_MIN     )
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Op(MPI_OP_NULL)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___OP_NULL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___OP_NULL__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___OP_NULL__ = ((struct PyMPIOpObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":105
 * 
 * cdef Op __OP_NULL__ = new_Op( MPI_OP_NULL )
 * cdef Op __MAX__     = new_Op( MPI_MAX     )             # <<<<<<<<<<<<<<
 * cdef Op __MIN__     = new_Op( MPI_MIN     )
 * cdef Op __SUM__     = new_Op( MPI_SUM     )
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Op(MPI_MAX)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___MAX__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___MAX__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___MAX__ = ((struct PyMPIOpObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":106
 * cdef Op __OP_NULL__ = new_Op( MPI_OP_NULL )
 * cdef Op __MAX__     = new_Op( MPI_MAX     )
 * cdef Op __MIN__     = new_Op( MPI_MIN     )             # <<<<<<<<<<<<<<
 * cdef Op __SUM__     = new_Op( MPI_SUM     )
 * cdef Op __PROD__    = new_Op( MPI_PROD    )
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Op(MPI_MIN)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___MIN__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___MIN__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___MIN__ = ((struct PyMPIOpObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":107
 * cdef Op __MAX__     = new_Op( MPI_MAX     )
 * cdef Op __MIN__     = new_Op( MPI_MIN     )
 * cdef Op __SUM__     = new_Op( MPI_SUM     )             # <<<<<<<<<<<<<<
 * cdef Op __PROD__    = new_Op( MPI_PROD    )
 * cdef Op __LAND__    = new_Op( MPI_LAND    )
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Op(MPI_SUM)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___SUM__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___SUM__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___SUM__ = ((struct PyMPIOpObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":108
 * cdef Op __MIN__     = new_Op( MPI_MIN     )
 * cdef Op __SUM__     = new_Op( MPI_SUM     )
 * cdef Op __PROD__    = new_Op( MPI_PROD    )             # <<<<<<<<<<<<<<
 * cdef Op __LAND__    = new_Op( MPI_LAND    )
 * cdef Op __BAND__    = new_Op( MPI_BAND    )
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Op(MPI_PROD)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___PROD__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___PROD__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___PROD__ = ((struct PyMPIOpObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":109
 * cdef Op __SUM__     = new_Op( MPI_SUM     )
 * cdef Op __PROD__    = new_Op( MPI_PROD    )
 * cdef Op __LAND__    = new_Op( MPI_LAND    )             # <<<<<<<<<<<<<<
 * cdef Op __BAND__    = new_Op( MPI_BAND    )
 * cdef Op __LOR__     = new_Op( MPI_LOR     )
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Op(MPI_LAND)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LAND__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LAND__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___LAND__ = ((struct PyMPIOpObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":110
 * cdef Op __PROD__    = new_Op( MPI_PROD    )
 * cdef Op __LAND__    = new_Op( MPI_LAND    )
 * cdef Op __BAND__    = new_Op( MPI_BAND    )             # <<<<<<<<<<<<<<
 * cdef Op __LOR__     = new_Op( MPI_LOR     )
 * cdef Op __BOR__     = new_Op( MPI_BOR     )
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Op(MPI_BAND)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___BAND__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___BAND__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___BAND__ = ((struct PyMPIOpObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":111
 * cdef Op __LAND__    = new_Op( MPI_LAND    )
 * cdef Op __BAND__    = new_Op( MPI_BAND    )
 * cdef Op __LOR__     = new_Op( MPI_LOR     )             # <<<<<<<<<<<<<<
 * cdef Op __BOR__     = new_Op( MPI_BOR     )
 * cdef Op __LXOR__    = new_Op( MPI_LXOR    )
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Op(MPI_LOR)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LOR__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LOR__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___LOR__ = ((struct PyMPIOpObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":112
 * cdef Op __BAND__    = new_Op( MPI_BAND    )
 * cdef Op __LOR__     = new_Op( MPI_LOR     )
 * cdef Op __BOR__     = new_Op( MPI_BOR     )             # <<<<<<<<<<<<<<
 * cdef Op __LXOR__    = new_Op( MPI_LXOR    )
 * cdef Op __BXOR__    = new_Op( MPI_BXOR    )
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Op(MPI_BOR)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___BOR__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___BOR__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___BOR__ = ((struct PyMPIOpObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":113
 * cdef Op __LOR__     = new_Op( MPI_LOR     )
 * cdef Op __BOR__     = new_Op( MPI_BOR     )
 * cdef Op __LXOR__    = new_Op( MPI_LXOR    )             # <<<<<<<<<<<<<<
 * cdef Op __BXOR__    = new_Op( MPI_BXOR    )
 * cdef Op __MAXLOC__  = new_Op( MPI_MAXLOC  )
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Op(MPI_LXOR)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LXOR__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LXOR__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___LXOR__ = ((struct PyMPIOpObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":114
 * cdef Op __BOR__     = new_Op( MPI_BOR     )
 * cdef Op __LXOR__    = new_Op( MPI_LXOR    )
 * cdef Op __BXOR__    = new_Op( MPI_BXOR    )             # <<<<<<<<<<<<<<
 * cdef Op __MAXLOC__  = new_Op( MPI_MAXLOC  )
 * cdef Op __MINLOC__  = new_Op( MPI_MINLOC  )
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Op(MPI_BXOR)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___BXOR__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___BXOR__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___BXOR__ = ((struct PyMPIOpObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":115
 * cdef Op __LXOR__    = new_Op( MPI_LXOR    )
 * cdef Op __BXOR__    = new_Op( MPI_BXOR    )
 * cdef Op __MAXLOC__  = new_Op( MPI_MAXLOC  )             # <<<<<<<<<<<<<<
 * cdef Op __MINLOC__  = new_Op( MPI_MINLOC  )
 * cdef Op __REPLACE__ = new_Op( MPI_REPLACE )
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Op(MPI_MAXLOC)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___MAXLOC__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___MAXLOC__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___MAXLOC__ = ((struct PyMPIOpObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":116
 * cdef Op __BXOR__    = new_Op( MPI_BXOR    )
 * cdef Op __MAXLOC__  = new_Op( MPI_MAXLOC  )
 * cdef Op __MINLOC__  = new_Op( MPI_MINLOC  )             # <<<<<<<<<<<<<<
 * cdef Op __REPLACE__ = new_Op( MPI_REPLACE )
 * 
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Op(MPI_MINLOC)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___MINLOC__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___MINLOC__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___MINLOC__ = ((struct PyMPIOpObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":117
 * cdef Op __MAXLOC__  = new_Op( MPI_MAXLOC  )
 * cdef Op __MINLOC__  = new_Op( MPI_MINLOC  )
 * cdef Op __REPLACE__ = new_Op( MPI_REPLACE )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Op(MPI_REPLACE)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___REPLACE__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___REPLACE__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___REPLACE__ = ((struct PyMPIOpObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":123
 * # ----------------------------
 * 
 * OP_NULL = __OP_NULL__  #: Null             # <<<<<<<<<<<<<<
 * MAX     = __MAX__      #: Maximum
 * MIN     = __MIN__      #: Minimum
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__OP_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___OP_NULL__)) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":124
 * 
 * OP_NULL = __OP_NULL__  #: Null
 * MAX     = __MAX__      #: Maximum             # <<<<<<<<<<<<<<
 * MIN     = __MIN__      #: Minimum
 * SUM     = __SUM__      #: Sum
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MAX, ((PyObject *)__pyx_v_6mpi4py_3MPI___MAX__)) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":125
 * OP_NULL = __OP_NULL__  #: Null
 * MAX     = __MAX__      #: Maximum
 * MIN     = __MIN__      #: Minimum             # <<<<<<<<<<<<<<
 * SUM     = __SUM__      #: Sum
 * PROD    = __PROD__     #: Product
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MIN, ((PyObject *)__pyx_v_6mpi4py_3MPI___MIN__)) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":126
 * MAX     = __MAX__      #: Maximum
 * MIN     = __MIN__      #: Minimum
 * SUM     = __SUM__      #: Sum             # <<<<<<<<<<<<<<
 * PROD    = __PROD__     #: Product
 * LAND    = __LAND__     #: Logical and
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SUM, ((PyObject *)__pyx_v_6mpi4py_3MPI___SUM__)) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":127
 * MIN     = __MIN__      #: Minimum
 * SUM     = __SUM__      #: Sum
 * PROD    = __PROD__     #: Product             # <<<<<<<<<<<<<<
 * LAND    = __LAND__     #: Logical and
 * BAND    = __BAND__     #: Bit-wise and
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__PROD, ((PyObject *)__pyx_v_6mpi4py_3MPI___PROD__)) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":128
 * SUM     = __SUM__      #: Sum
 * PROD    = __PROD__     #: Product
 * LAND    = __LAND__     #: Logical and             # <<<<<<<<<<<<<<
 * BAND    = __BAND__     #: Bit-wise and
 * LOR     = __LOR__      #: Logical or
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LAND, ((PyObject *)__pyx_v_6mpi4py_3MPI___LAND__)) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":129
 * PROD    = __PROD__     #: Product
 * LAND    = __LAND__     #: Logical and
 * BAND    = __BAND__     #: Bit-wise and             # <<<<<<<<<<<<<<
 * LOR     = __LOR__      #: Logical or
 * BOR     = __BOR__      #: Bit-wise or
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__BAND, ((PyObject *)__pyx_v_6mpi4py_3MPI___BAND__)) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":130
 * LAND    = __LAND__     #: Logical and
 * BAND    = __BAND__     #: Bit-wise and
 * LOR     = __LOR__      #: Logical or             # <<<<<<<<<<<<<<
 * BOR     = __BOR__      #: Bit-wise or
 * LXOR    = __LXOR__     #: Logical xor
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOR, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOR__)) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":131
 * BAND    = __BAND__     #: Bit-wise and
 * LOR     = __LOR__      #: Logical or
 * BOR     = __BOR__      #: Bit-wise or             # <<<<<<<<<<<<<<
 * LXOR    = __LXOR__     #: Logical xor
 * BXOR    = __BXOR__     #: Bit-wise xor
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__BOR, ((PyObject *)__pyx_v_6mpi4py_3MPI___BOR__)) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":132
 * LOR     = __LOR__      #: Logical or
 * BOR     = __BOR__      #: Bit-wise or
 * LXOR    = __LXOR__     #: Logical xor             # <<<<<<<<<<<<<<
 * BXOR    = __BXOR__     #: Bit-wise xor
 * MAXLOC  = __MAXLOC__   #: Maximum and location
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LXOR, ((PyObject *)__pyx_v_6mpi4py_3MPI___LXOR__)) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":133
 * BOR     = __BOR__      #: Bit-wise or
 * LXOR    = __LXOR__     #: Logical xor
 * BXOR    = __BXOR__     #: Bit-wise xor             # <<<<<<<<<<<<<<
 * MAXLOC  = __MAXLOC__   #: Maximum and location
 * MINLOC  = __MINLOC__   #: Minimum and location
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__BXOR, ((PyObject *)__pyx_v_6mpi4py_3MPI___BXOR__)) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":134
 * LXOR    = __LXOR__     #: Logical xor
 * BXOR    = __BXOR__     #: Bit-wise xor
 * MAXLOC  = __MAXLOC__   #: Maximum and location             # <<<<<<<<<<<<<<
 * MINLOC  = __MINLOC__   #: Minimum and location
 * REPLACE = __REPLACE__  #: Replace (for RMA)
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MAXLOC, ((PyObject *)__pyx_v_6mpi4py_3MPI___MAXLOC__)) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":135
 * BXOR    = __BXOR__     #: Bit-wise xor
 * MAXLOC  = __MAXLOC__   #: Maximum and location
 * MINLOC  = __MINLOC__   #: Minimum and location             # <<<<<<<<<<<<<<
 * REPLACE = __REPLACE__  #: Replace (for RMA)
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MINLOC, ((PyObject *)__pyx_v_6mpi4py_3MPI___MINLOC__)) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Op.pyx":136
 * MAXLOC  = __MAXLOC__   #: Maximum and location
 * MINLOC  = __MINLOC__   #: Minimum and location
 * REPLACE = __REPLACE__  #: Replace (for RMA)             # <<<<<<<<<<<<<<
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__REPLACE, ((PyObject *)__pyx_v_6mpi4py_3MPI___REPLACE__)) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":55
 * 
 *     @classmethod
 *     def Translate_ranks(cls,             # <<<<<<<<<<<<<<
 *                         Group group1 not None, ranks1,
 *                         Group group2=None):
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s__Translate_ranks); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group->tp_dict, __pyx_n_s__Translate_ranks, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":83
 * 
 *     @classmethod
 *     def Compare(cls,             # <<<<<<<<<<<<<<
 *                 Group group1 not None,
 *                 Group group2 not None):
 */
  __pyx_t_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s__Compare); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group->tp_dict, __pyx_n_s__Compare, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":105
 * 
 *     @classmethod
 *     def Union(cls,             # <<<<<<<<<<<<<<
 *               Group group1 not None,
 *               Group group2 not None):
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s__Union); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group->tp_dict, __pyx_n_s__Union, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":118
 * 
 *     @classmethod
 *     def Intersect(cls,             # <<<<<<<<<<<<<<
 *                   Group group1 not None,
 *                   Group group2 not None):
 */
  __pyx_t_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s__Intersect); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group->tp_dict, __pyx_n_s__Intersect, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":131
 * 
 *     @classmethod
 *     def Difference(cls,             # <<<<<<<<<<<<<<
 *                    Group group1 not None,
 *                    Group group2 not None):
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s__Difference); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group->tp_dict, __pyx_n_s__Difference, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":219
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_t_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s__f2py); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group->tp_dict, __pyx_n_s__f2py, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":228
 * 
 * 
 * cdef Group __GROUP_NULL__  = new_Group ( MPI_GROUP_NULL  )             # <<<<<<<<<<<<<<
 * cdef Group __GROUP_EMPTY__ = new_Group ( MPI_GROUP_EMPTY )
 * 
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Group(MPI_GROUP_NULL)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_NULL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_NULL__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___GROUP_NULL__ = ((struct PyMPIGroupObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":229
 * 
 * cdef Group __GROUP_NULL__  = new_Group ( MPI_GROUP_NULL  )
 * cdef Group __GROUP_EMPTY__ = new_Group ( MPI_GROUP_EMPTY )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Group(MPI_GROUP_EMPTY)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_EMPTY__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_EMPTY__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___GROUP_EMPTY__ = ((struct PyMPIGroupObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":235
 * # ------------------------
 * 
 * GROUP_NULL  = __GROUP_NULL__   #: Null group handle             # <<<<<<<<<<<<<<
 * GROUP_EMPTY = __GROUP_EMPTY__  #: Empty group handle
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__GROUP_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_NULL__)) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Group.pyx":236
 * 
 * GROUP_NULL  = __GROUP_NULL__   #: Null group handle
 * GROUP_EMPTY = __GROUP_EMPTY__  #: Empty group handle             # <<<<<<<<<<<<<<
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__GROUP_EMPTY, ((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_EMPTY__)) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":4
 * # ------------------------
 * 
 * IDENT     = MPI_IDENT     #: Groups are identical, contexts are the same             # <<<<<<<<<<<<<<
 * CONGRUENT = MPI_CONGRUENT #: Groups are identical, contexts are different
 * SIMILAR   = MPI_SIMILAR   #: Groups are similar, rank order differs
 */
  __pyx_t_8 = PyInt_FromLong(MPI_IDENT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__IDENT, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":5
 * 
 * IDENT     = MPI_IDENT     #: Groups are identical, contexts are the same
 * CONGRUENT = MPI_CONGRUENT #: Groups are identical, contexts are different             # <<<<<<<<<<<<<<
 * SIMILAR   = MPI_SIMILAR   #: Groups are similar, rank order differs
 * UNEQUAL   = MPI_UNEQUAL   #: Groups are different
 */
  __pyx_t_8 = PyInt_FromLong(MPI_CONGRUENT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__CONGRUENT, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":6
 * IDENT     = MPI_IDENT     #: Groups are identical, contexts are the same
 * CONGRUENT = MPI_CONGRUENT #: Groups are identical, contexts are different
 * SIMILAR   = MPI_SIMILAR   #: Groups are similar, rank order differs             # <<<<<<<<<<<<<<
 * UNEQUAL   = MPI_UNEQUAL   #: Groups are different
 * 
 */
  __pyx_t_8 = PyInt_FromLong(MPI_SIMILAR); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SIMILAR, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":7
 * CONGRUENT = MPI_CONGRUENT #: Groups are identical, contexts are different
 * SIMILAR   = MPI_SIMILAR   #: Groups are similar, rank order differs
 * UNEQUAL   = MPI_UNEQUAL   #: Groups are different             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_8 = PyInt_FromLong(MPI_UNEQUAL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__UNEQUAL, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":13
 * # -----------------------
 * 
 * CART       = MPI_CART       #: Cartesian topology             # <<<<<<<<<<<<<<
 * GRAPH      = MPI_GRAPH      #: General graph topology
 * DIST_GRAPH = MPI_DIST_GRAPH #: Distributed graph topology
 */
  __pyx_t_8 = PyInt_FromLong(MPI_CART); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__CART, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":14
 * 
 * CART       = MPI_CART       #: Cartesian topology
 * GRAPH      = MPI_GRAPH      #: General graph topology             # <<<<<<<<<<<<<<
 * DIST_GRAPH = MPI_DIST_GRAPH #: Distributed graph topology
 * 
 */
  __pyx_t_8 = PyInt_FromLong(MPI_GRAPH); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__GRAPH, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":15
 * CART       = MPI_CART       #: Cartesian topology
 * GRAPH      = MPI_GRAPH      #: General graph topology
 * DIST_GRAPH = MPI_DIST_GRAPH #: Distributed graph topology             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_8 = PyInt_FromLong(MPI_DIST_GRAPH); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DIST_GRAPH, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":90
 * 
 *     @classmethod
 *     def Compare(cls, Comm comm1 not None, Comm comm2 not None):             # <<<<<<<<<<<<<<
 *         """
 *         Compare two communicators
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s__Compare); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm->tp_dict, __pyx_n_s__Compare, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":529
 *     # ---------------------------
 * 
 *     def Reduce(self, sendbuf, recvbuf, Op op not None=SUM, int root=0):             # <<<<<<<<<<<<<<
 *         """
 *         Reduce
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__SUM); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Op))))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_71 = ((struct PyMPIOpObject *)__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":539
 *             op.ob_mpi, root, self.ob_mpi) )
 * 
 *     def Allreduce(self, sendbuf, recvbuf, Op op not None=SUM):             # <<<<<<<<<<<<<<
 *         """
 *         All Reduce
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__SUM); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Op))))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_72 = ((struct PyMPIOpObject *)__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":550
 * 
 *     def Reduce_scatter_block(self, sendbuf, recvbuf,
 *                              Op op not None=SUM):             # <<<<<<<<<<<<<<
 *         """
 *         Reduce-Scatter Block (regular, non-vector version)
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__SUM); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Op))))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_73 = ((struct PyMPIOpObject *)__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":561
 * 
 *     def Reduce_scatter(self, sendbuf, recvbuf, recvcounts=None,
 *                        Op op not None=SUM):             # <<<<<<<<<<<<<<
 *         """
 *         Reduce-Scatter (vector version)
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__SUM); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Op))))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_74 = ((struct PyMPIOpObject *)__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":617
 * 
 *     @classmethod
 *     def Get_parent(cls):             # <<<<<<<<<<<<<<
 *         """
 *         Return the parent intercommunicator for this process
 */
  __pyx_t_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s__Get_parent); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm->tp_dict, __pyx_n_s__Get_parent, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":636
 * 
 *     @classmethod
 *     def Join(cls, int fd):             # <<<<<<<<<<<<<<
 *         """
 *         Create a intercommunicator by joining
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s__Join); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm->tp_dict, __pyx_n_s__Join, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":697
 * 
 *     @classmethod
 *     def Create_keyval(cls, copy_fn=None, delete_fn=None):             # <<<<<<<<<<<<<<
 *         """
 *         Create a new attribute key for communicators
 */
  __pyx_t_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s__Create_keyval); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm->tp_dict, __pyx_n_s__Create_keyval, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":710
 * 
 *     @classmethod
 *     def Free_keyval(cls, int keyval):             # <<<<<<<<<<<<<<
 *         """
 *         Free and attribute key for communicators
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s__Free_keyval); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm->tp_dict, __pyx_n_s__Free_keyval, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":787
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_t_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s__f2py); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm->tp_dict, __pyx_n_s__f2py, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":886
 *         return PyMPI_alltoall(sendobj, recvobj, comm)
 *     #
 *     def reduce(self, sendobj=None, recvobj=None, op=SUM, int root=0):             # <<<<<<<<<<<<<<
 *         """Reduce"""
 *         if op is None: op = SUM
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__SUM); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_k_75 = __pyx_t_8;
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":892
 *         return PyMPI_reduce(sendobj, recvobj, op, root, comm)
 *     #
 *     def allreduce(self, sendobj=None, recvobj=None, op=SUM):             # <<<<<<<<<<<<<<
 *         """Reduce to All"""
 *         if op is None: op = SUM
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__SUM); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_k_76 = __pyx_t_8;
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":975
 *     def Create_dist_graph_adjacent(self, sources, destinations,
 *                                    sourceweights=None, destweights=None,
 *                                    Info info=INFO_NULL, bint reorder=False):             # <<<<<<<<<<<<<<
 *         """
 *         Create distributed graph communicator
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__INFO_NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_79 = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1004
 * 
 *     def Create_dist_graph(self, sources, degrees, destinations, weights=None,
 *                           Info info=INFO_NULL, bint reorder=False):             # <<<<<<<<<<<<<<
 *         """
 *         Create distributed graph communicator
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__INFO_NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_80 = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1047
 *     # Inclusive Scan
 * 
 *     def Scan(self, sendbuf, recvbuf, Op op not None=SUM):             # <<<<<<<<<<<<<<
 *         """
 *         Inclusive Scan
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__SUM); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Op))))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_81 = ((struct PyMPIOpObject *)__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1059
 *     # Exclusive Scan
 * 
 *     def Exscan(self, sendbuf, recvbuf, Op op not None=SUM):             # <<<<<<<<<<<<<<
 *         """
 *         Exclusive Scan
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__SUM); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Op))))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_82 = ((struct PyMPIOpObject *)__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1071
 *     # Python Communication
 *     #
 *     def scan(self, sendobj=None, recvobj=None, op=SUM):             # <<<<<<<<<<<<<<
 *         """Inclusive Scan"""
 *         if op is None: op = SUM
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__SUM); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_k_83 = __pyx_t_8;
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1077
 *         return PyMPI_scan(sendobj, recvobj, op, comm)
 *     #
 *     def exscan(self, sendobj=None, recvobj=None, op=SUM):             # <<<<<<<<<<<<<<
 *         """Exclusive Scan"""
 *         if op is None: op = SUM
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__SUM); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_k_84 = __pyx_t_8;
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1090
 * 
 *     def Spawn(self, command, args=None, int maxprocs=1,
 *               Info info=INFO_NULL, int root=0, errcodes=None):             # <<<<<<<<<<<<<<
 *         """
 *         Spawn instances of a single MPI application
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__INFO_NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_85 = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1121
 * 
 *     def Spawn_multiple(self, command, args=None, maxprocs=None,
 *                        info=INFO_NULL, int root=0, errcodes=None):             # <<<<<<<<<<<<<<
 *         """
 *         Spawn instances of multiple MPI applications
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__INFO_NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_k_86 = __pyx_t_8;
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1169
 *     # Server Routines
 * 
 *     def Accept(self, port_name, Info info=INFO_NULL, int root=0):             # <<<<<<<<<<<<<<
 *         """
 *         Accept a request to form a new intercommunicator
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__INFO_NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_87 = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1188
 *     # Client Routines
 * 
 *     def Connect(self, port_name, Info info=INFO_NULL, int root=0):             # <<<<<<<<<<<<<<
 *         """
 *         Make a request to form a new intercommunicator
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__INFO_NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_88 = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1362
 * # Cartesian Convenience Function
 * 
 * def Compute_dims(int nnodes, dims):             # <<<<<<<<<<<<<<
 *     """
 *     Return a balanced distribution of
 */
  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_6Compute_dims, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Compute_dims, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1675
 * 
 * 
 * cdef Comm      __COMM_NULL__   = new_Comm      ( MPI_COMM_NULL  )             # <<<<<<<<<<<<<<
 * cdef Intracomm __COMM_SELF__   = new_Intracomm ( MPI_COMM_SELF  )
 * cdef Intracomm __COMM_WORLD__  = new_Intracomm ( MPI_COMM_WORLD )
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Comm(MPI_COMM_NULL)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_NULL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_NULL__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___COMM_NULL__ = ((struct PyMPICommObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1676
 * 
 * cdef Comm      __COMM_NULL__   = new_Comm      ( MPI_COMM_NULL  )
 * cdef Intracomm __COMM_SELF__   = new_Intracomm ( MPI_COMM_SELF  )             # <<<<<<<<<<<<<<
 * cdef Intracomm __COMM_WORLD__  = new_Intracomm ( MPI_COMM_WORLD )
 * cdef Intercomm __COMM_PARENT__ = new_Intercomm ( MPI_COMM_NULL  )
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Intracomm(MPI_COMM_SELF)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1676; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_SELF__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_SELF__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___COMM_SELF__ = ((struct PyMPIIntracommObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1677
 * cdef Comm      __COMM_NULL__   = new_Comm      ( MPI_COMM_NULL  )
 * cdef Intracomm __COMM_SELF__   = new_Intracomm ( MPI_COMM_SELF  )
 * cdef Intracomm __COMM_WORLD__  = new_Intracomm ( MPI_COMM_WORLD )             # <<<<<<<<<<<<<<
 * cdef Intercomm __COMM_PARENT__ = new_Intercomm ( MPI_COMM_NULL  )
 * 
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Intracomm(MPI_COMM_WORLD)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_WORLD__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_WORLD__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___COMM_WORLD__ = ((struct PyMPIIntracommObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1678
 * cdef Intracomm __COMM_SELF__   = new_Intracomm ( MPI_COMM_SELF  )
 * cdef Intracomm __COMM_WORLD__  = new_Intracomm ( MPI_COMM_WORLD )
 * cdef Intercomm __COMM_PARENT__ = new_Intercomm ( MPI_COMM_NULL  )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Intercomm(MPI_COMM_NULL)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_PARENT__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_PARENT__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___COMM_PARENT__ = ((struct PyMPIIntercommObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1684
 * # ------------------------
 * 
 * COMM_NULL =  __COMM_NULL__   #: Null communicator handle             # <<<<<<<<<<<<<<
 * COMM_SELF  = __COMM_SELF__   #: Self communicator handle
 * COMM_WORLD = __COMM_WORLD__  #: World communicator handle
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMM_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_NULL__)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1684; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1685
 * 
 * COMM_NULL =  __COMM_NULL__   #: Null communicator handle
 * COMM_SELF  = __COMM_SELF__   #: Self communicator handle             # <<<<<<<<<<<<<<
 * COMM_WORLD = __COMM_WORLD__  #: World communicator handle
 * 
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMM_SELF, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_SELF__)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1686
 * COMM_NULL =  __COMM_NULL__   #: Null communicator handle
 * COMM_SELF  = __COMM_SELF__   #: Self communicator handle
 * COMM_WORLD = __COMM_WORLD__  #: World communicator handle             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMM_WORLD, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_WORLD__)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1692
 * # ---------------------------
 * 
 * BSEND_OVERHEAD = MPI_BSEND_OVERHEAD             # <<<<<<<<<<<<<<
 * #: Upper bound of memory overhead for sending in buffered mode
 * 
 */
  __pyx_t_8 = PyInt_FromLong(MPI_BSEND_OVERHEAD); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1692; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__BSEND_OVERHEAD, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1692; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1695
 * #: Upper bound of memory overhead for sending in buffered mode
 * 
 * def Attach_buffer(memory):             # <<<<<<<<<<<<<<
 *     """
 *     Attach a user-provided buffer for
 */
  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_7Attach_buffer, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Attach_buffer, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1705
 *     with nogil: CHKERR( MPI_Buffer_attach(base, size) )
 * 
 * def Detach_buffer():             # <<<<<<<<<<<<<<
 *     """
 *     Remove an existing attached buffer
 */
  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_8Detach_buffer, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Detach_buffer, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1722
 * # -----------------------
 * 
 * def Open_port(Info info=INFO_NULL):             # <<<<<<<<<<<<<<
 *     """
 *     Return an address that can be used to establish
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__INFO_NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_97 = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_9Open_port, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Open_port, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1733
 *     return mpistr(cportname)
 * 
 * def Close_port(port_name):             # <<<<<<<<<<<<<<
 *     """
 *     Close a port
 */
  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_10Close_port, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Close_port, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1744
 * # -----------------------
 * 
 * def Publish_name(service_name, Info info, port_name):             # <<<<<<<<<<<<<<
 *     """
 *     Publish a service name
 */
  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_11Publish_name, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Publish_name, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1755
 *     with nogil: CHKERR( MPI_Publish_name(csrvcname, cinfo, cportname) )
 * 
 * def Unpublish_name(service_name, Info info, port_name):             # <<<<<<<<<<<<<<
 *     """
 *     Unpublish a service name
 */
  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_12Unpublish_name, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1755; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Unpublish_name, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1755; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Comm.pyx":1766
 *     with nogil: CHKERR( MPI_Unpublish_name(csrvcname, cinfo, cportname) )
 * 
 * def Lookup_name(service_name, Info info=INFO_NULL):             # <<<<<<<<<<<<<<
 *     """
 *     Lookup a port name given a service name
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__INFO_NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_98 = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_13Lookup_name, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Lookup_name, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 1766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":4
 * # ---------------
 * 
 * MODE_NOCHECK   = MPI_MODE_NOCHECK             # <<<<<<<<<<<<<<
 * MODE_NOSTORE   = MPI_MODE_NOSTORE
 * MODE_NOPUT     = MPI_MODE_NOPUT
 */
  __pyx_t_8 = PyInt_FromLong(MPI_MODE_NOCHECK); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MODE_NOCHECK, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":5
 * 
 * MODE_NOCHECK   = MPI_MODE_NOCHECK
 * MODE_NOSTORE   = MPI_MODE_NOSTORE             # <<<<<<<<<<<<<<
 * MODE_NOPUT     = MPI_MODE_NOPUT
 * MODE_NOPRECEDE = MPI_MODE_NOPRECEDE
 */
  __pyx_t_8 = PyInt_FromLong(MPI_MODE_NOSTORE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MODE_NOSTORE, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":6
 * MODE_NOCHECK   = MPI_MODE_NOCHECK
 * MODE_NOSTORE   = MPI_MODE_NOSTORE
 * MODE_NOPUT     = MPI_MODE_NOPUT             # <<<<<<<<<<<<<<
 * MODE_NOPRECEDE = MPI_MODE_NOPRECEDE
 * MODE_NOSUCCEED = MPI_MODE_NOSUCCEED
 */
  __pyx_t_8 = PyInt_FromLong(MPI_MODE_NOPUT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MODE_NOPUT, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":7
 * MODE_NOSTORE   = MPI_MODE_NOSTORE
 * MODE_NOPUT     = MPI_MODE_NOPUT
 * MODE_NOPRECEDE = MPI_MODE_NOPRECEDE             # <<<<<<<<<<<<<<
 * MODE_NOSUCCEED = MPI_MODE_NOSUCCEED
 * 
 */
  __pyx_t_8 = PyInt_FromLong(MPI_MODE_NOPRECEDE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MODE_NOPRECEDE, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":8
 * MODE_NOPUT     = MPI_MODE_NOPUT
 * MODE_NOPRECEDE = MPI_MODE_NOPRECEDE
 * MODE_NOSUCCEED = MPI_MODE_NOSUCCEED             # <<<<<<<<<<<<<<
 * 
 * # Lock types
 */
  __pyx_t_8 = PyInt_FromLong(MPI_MODE_NOSUCCEED); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MODE_NOSUCCEED, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":13
 * # ----------
 * 
 * LOCK_EXCLUSIVE = MPI_LOCK_EXCLUSIVE             # <<<<<<<<<<<<<<
 * LOCK_SHARED    = MPI_LOCK_SHARED
 * 
 */
  __pyx_t_8 = PyInt_FromLong(MPI_LOCK_EXCLUSIVE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOCK_EXCLUSIVE, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":14
 * 
 * LOCK_EXCLUSIVE = MPI_LOCK_EXCLUSIVE
 * LOCK_SHARED    = MPI_LOCK_SHARED             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_8 = PyInt_FromLong(MPI_LOCK_SHARED); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOCK_SHARED, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":51
 *     @classmethod
 *     def Create(cls, memory, int disp_unit=1,
 *                Info info=INFO_NULL, Intracomm comm not None=COMM_SELF):             # <<<<<<<<<<<<<<
 *         """
 *         Create an window object for one-sided communication
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__INFO_NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_100 = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__COMM_SELF); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Intracomm))))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_101 = ((struct PyMPIIntracommObject *)__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":50
 * 
 *     @classmethod
 *     def Create(cls, memory, int disp_unit=1,             # <<<<<<<<<<<<<<
 *                Info info=INFO_NULL, Intracomm comm not None=COMM_SELF):
 *         """
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s__Create); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win->tp_dict, __pyx_n_s__Create, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":140
 * 
 *     @classmethod
 *     def Create_keyval(cls, copy_fn=None, delete_fn=None):             # <<<<<<<<<<<<<<
 *         """
 *         Create a new attribute key for windows
 */
  __pyx_t_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s__Create_keyval); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win->tp_dict, __pyx_n_s__Create_keyval, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":153
 * 
 *     @classmethod
 *     def Free_keyval(cls, int keyval):             # <<<<<<<<<<<<<<
 *         """
 *         Free and attribute key for windows
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s__Free_keyval); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win->tp_dict, __pyx_n_s__Free_keyval, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":242
 * 
 *     def Accumulate(self, origin, int target_rank,
 *                    target=None, Op op not None=SUM):             # <<<<<<<<<<<<<<
 *         """
 *         Accumulate data into the target process
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__SUM); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Op))))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_102 = ((struct PyMPIOpObject *)__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":380
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_t_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s__f2py); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win->tp_dict, __pyx_n_s__f2py, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":389
 * 
 * 
 * cdef Win __WIN_NULL__ = new_Win(MPI_WIN_NULL)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_Win(MPI_WIN_NULL)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___WIN_NULL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___WIN_NULL__));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_v_6mpi4py_3MPI___WIN_NULL__ = ((struct PyMPIWinObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/Win.pyx":395
 * # -------------------------
 * 
 * WIN_NULL = __WIN_NULL__  #: Null window handle             # <<<<<<<<<<<<<<
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__WIN_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___WIN_NULL__)) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":4
 * # -------------
 * 
 * MODE_RDONLY          = MPI_MODE_RDONLY           #: Read only             # <<<<<<<<<<<<<<
 * MODE_WRONLY          = MPI_MODE_WRONLY           #: Write only
 * MODE_RDWR            = MPI_MODE_RDWR             #: Reading and writing
 */
  __pyx_t_8 = PyInt_FromLong(MPI_MODE_RDONLY); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MODE_RDONLY, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":5
 * 
 * MODE_RDONLY          = MPI_MODE_RDONLY           #: Read only
 * MODE_WRONLY          = MPI_MODE_WRONLY           #: Write only             # <<<<<<<<<<<<<<
 * MODE_RDWR            = MPI_MODE_RDWR             #: Reading and writing
 * MODE_CREATE          = MPI_MODE_CREATE           #: Create the file if it does not exist
 */
  __pyx_t_8 = PyInt_FromLong(MPI_MODE_WRONLY); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MODE_WRONLY, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":6
 * MODE_RDONLY          = MPI_MODE_RDONLY           #: Read only
 * MODE_WRONLY          = MPI_MODE_WRONLY           #: Write only
 * MODE_RDWR            = MPI_MODE_RDWR             #: Reading and writing             # <<<<<<<<<<<<<<
 * MODE_CREATE          = MPI_MODE_CREATE           #: Create the file if it does not exist
 * MODE_EXCL            = MPI_MODE_EXCL             #: Error if creating file that already exists
 */
  __pyx_t_8 = PyInt_FromLong(MPI_MODE_RDWR); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MODE_RDWR, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":7
 * MODE_WRONLY          = MPI_MODE_WRONLY           #: Write only
 * MODE_RDWR            = MPI_MODE_RDWR             #: Reading and writing
 * MODE_CREATE          = MPI_MODE_CREATE           #: Create the file if it does not exist             # <<<<<<<<<<<<<<
 * MODE_EXCL            = MPI_MODE_EXCL             #: Error if creating file that already exists
 * MODE_DELETE_ON_CLOSE = MPI_MODE_DELETE_ON_CLOSE  #: Delete file on close
 */
  __pyx_t_8 = PyInt_FromLong(MPI_MODE_CREATE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MODE_CREATE, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":8
 * MODE_RDWR            = MPI_MODE_RDWR             #: Reading and writing
 * MODE_CREATE          = MPI_MODE_CREATE           #: Create the file if it does not exist
 * MODE_EXCL            = MPI_MODE_EXCL             #: Error if creating file that already exists             # <<<<<<<<<<<<<<
 * MODE_DELETE_ON_CLOSE = MPI_MODE_DELETE_ON_CLOSE  #: Delete file on close
 * MODE_UNIQUE_OPEN     = MPI_MODE_UNIQUE_OPEN      #: File will not be concurrently opened elsewhere
 */
  __pyx_t_8 = PyInt_FromLong(MPI_MODE_EXCL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MODE_EXCL, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":9
 * MODE_CREATE          = MPI_MODE_CREATE           #: Create the file if it does not exist
 * MODE_EXCL            = MPI_MODE_EXCL             #: Error if creating file that already exists
 * MODE_DELETE_ON_CLOSE = MPI_MODE_DELETE_ON_CLOSE  #: Delete file on close             # <<<<<<<<<<<<<<
 * MODE_UNIQUE_OPEN     = MPI_MODE_UNIQUE_OPEN      #: File will not be concurrently opened elsewhere
 * MODE_SEQUENTIAL      = MPI_MODE_SEQUENTIAL       #: File will only be accessed sequentially
 */
  __pyx_t_8 = PyInt_FromLong(MPI_MODE_DELETE_ON_CLOSE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_164, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":10
 * MODE_EXCL            = MPI_MODE_EXCL             #: Error if creating file that already exists
 * MODE_DELETE_ON_CLOSE = MPI_MODE_DELETE_ON_CLOSE  #: Delete file on close
 * MODE_UNIQUE_OPEN     = MPI_MODE_UNIQUE_OPEN      #: File will not be concurrently opened elsewhere             # <<<<<<<<<<<<<<
 * MODE_SEQUENTIAL      = MPI_MODE_SEQUENTIAL       #: File will only be accessed sequentially
 * MODE_APPEND          = MPI_MODE_APPEND           #: Set initial position of all file pointers to end of file
 */
  __pyx_t_8 = PyInt_FromLong(MPI_MODE_UNIQUE_OPEN); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MODE_UNIQUE_OPEN, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":11
 * MODE_DELETE_ON_CLOSE = MPI_MODE_DELETE_ON_CLOSE  #: Delete file on close
 * MODE_UNIQUE_OPEN     = MPI_MODE_UNIQUE_OPEN      #: File will not be concurrently opened elsewhere
 * MODE_SEQUENTIAL      = MPI_MODE_SEQUENTIAL       #: File will only be accessed sequentially             # <<<<<<<<<<<<<<
 * MODE_APPEND          = MPI_MODE_APPEND           #: Set initial position of all file pointers to end of file
 * 
 */
  __pyx_t_8 = PyInt_FromLong(MPI_MODE_SEQUENTIAL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MODE_SEQUENTIAL, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":12
 * MODE_UNIQUE_OPEN     = MPI_MODE_UNIQUE_OPEN      #: File will not be concurrently opened elsewhere
 * MODE_SEQUENTIAL      = MPI_MODE_SEQUENTIAL       #: File will only be accessed sequentially
 * MODE_APPEND          = MPI_MODE_APPEND           #: Set initial position of all file pointers to end of file             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_8 = PyInt_FromLong(MPI_MODE_APPEND); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MODE_APPEND, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":18
 * # -----------
 * 
 * SEEK_SET = MPI_SEEK_SET  #: File pointer is set to offset             # <<<<<<<<<<<<<<
 * SEEK_CUR = MPI_SEEK_CUR  #: File pointer is set to the current position plus offset
 * SEEK_END = MPI_SEEK_END  #: File pointer is set to the end plus offset
 */
  __pyx_t_8 = PyInt_FromLong(MPI_SEEK_SET); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SEEK_SET, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":19
 * 
 * SEEK_SET = MPI_SEEK_SET  #: File pointer is set to offset
 * SEEK_CUR = MPI_SEEK_CUR  #: File pointer is set to the current position plus offset             # <<<<<<<<<<<<<<
 * SEEK_END = MPI_SEEK_END  #: File pointer is set to the end plus offset
 * DISPLACEMENT_CURRENT = MPI_DISPLACEMENT_CURRENT  #: Special displacement value for files opened in sequential mode
 */
  __pyx_t_8 = PyInt_FromLong(MPI_SEEK_CUR); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SEEK_CUR, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":20
 * SEEK_SET = MPI_SEEK_SET  #: File pointer is set to offset
 * SEEK_CUR = MPI_SEEK_CUR  #: File pointer is set to the current position plus offset
 * SEEK_END = MPI_SEEK_END  #: File pointer is set to the end plus offset             # <<<<<<<<<<<<<<
 * DISPLACEMENT_CURRENT = MPI_DISPLACEMENT_CURRENT  #: Special displacement value for files opened in sequential mode
 * DISP_CUR             = MPI_DISPLACEMENT_CURRENT  #: Convenience alias for `DISPLACEMENT_CURRENT`
 */
  __pyx_t_8 = PyInt_FromLong(MPI_SEEK_END); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SEEK_END, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":21
 * SEEK_CUR = MPI_SEEK_CUR  #: File pointer is set to the current position plus offset
 * SEEK_END = MPI_SEEK_END  #: File pointer is set to the end plus offset
 * DISPLACEMENT_CURRENT = MPI_DISPLACEMENT_CURRENT  #: Special displacement value for files opened in sequential mode             # <<<<<<<<<<<<<<
 * DISP_CUR             = MPI_DISPLACEMENT_CURRENT  #: Convenience alias for `DISPLACEMENT_CURRENT`
 * 
 */
  __pyx_t_8 = PyInt_FromLong(MPI_DISPLACEMENT_CURRENT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_165, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":22
 * SEEK_END = MPI_SEEK_END  #: File pointer is set to the end plus offset
 * DISPLACEMENT_CURRENT = MPI_DISPLACEMENT_CURRENT  #: Special displacement value for files opened in sequential mode
 * DISP_CUR             = MPI_DISPLACEMENT_CURRENT  #: Convenience alias for `DISPLACEMENT_CURRENT`             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_8 = PyInt_FromLong(MPI_DISPLACEMENT_CURRENT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DISP_CUR, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":59
 *     @classmethod
 *     def Open(cls, Intracomm comm not None, filename,
 *              int amode=MODE_RDONLY, Info info=INFO_NULL):             # <<<<<<<<<<<<<<
 *         """
 *         Open a file
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__MODE_RDONLY); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_t_8); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_k_105 = __pyx_t_1;
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__INFO_NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_104 = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":58
 * 
 *     @classmethod
 *     def Open(cls, Intracomm comm not None, filename,             # <<<<<<<<<<<<<<
 *              int amode=MODE_RDONLY, Info info=INFO_NULL):
 *         """
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s__Open); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_File->tp_dict, __pyx_n_s__Open, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":84
 * 
 *     @classmethod
 *     def Delete(cls, filename, Info info=INFO_NULL):             # <<<<<<<<<<<<<<
 *         """
 *         Delete a file
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__INFO_NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Info))))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_106 = ((struct PyMPIInfoObject *)__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":83
 *     # -----------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Delete(cls, filename, Info info=INFO_NULL):
 *         """
 */
  __pyx_t_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s__Delete); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_File->tp_dict, __pyx_n_s__Delete, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":187
 *     def Set_view(self, Offset disp=0,
 *                  Datatype etype=None, Datatype filetype=None,
 *                  object datarep=None, Info info=INFO_NULL):             # <<<<<<<<<<<<<<
 *         """
 *         Set the file view
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__INFO_NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_107 = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":341
 *         return request
 * 
 *     def Seek(self, Offset offset, int whence=SEEK_SET):             # <<<<<<<<<<<<<<
 *         """
 *         Update the individual file pointer
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__SEEK_SET); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_t_8); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_k_108 = __pyx_t_1;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":427
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Seek_shared(self, Offset offset, int whence=SEEK_SET):             # <<<<<<<<<<<<<<
 *         """
 *         Update the shared file pointer
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__SEEK_SET); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_t_8); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_k_109 = __pyx_t_1;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":642
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_t_8 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s__f2py); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 641; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_File->tp_dict, __pyx_n_s__f2py, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":651
 * 
 * 
 * cdef File __FILE_NULL__ = new_File(MPI_FILE_NULL)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_new_File(MPI_FILE_NULL)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___FILE_NULL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___FILE_NULL__));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_v_6mpi4py_3MPI___FILE_NULL__ = ((struct PyMPIFileObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/File.pyx":657
 * # -----------------------
 * 
 * FILE_NULL = __FILE_NULL__  #: Null file handle             # <<<<<<<<<<<<<<
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FILE_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___FILE_NULL__)) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":38
 * # ------------------
 * 
 * UNDEFINED = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 * #"""Undefined integer value"""
 * 
 */
  __pyx_t_2 = PyInt_FromLong(MPI_UNDEFINED); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__UNDEFINED, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":41
 * #"""Undefined integer value"""
 * 
 * ANY_SOURCE = MPI_ANY_SOURCE             # <<<<<<<<<<<<<<
 * #"""Wildcard source value for receives"""
 * 
 */
  __pyx_t_2 = PyInt_FromLong(MPI_ANY_SOURCE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ANY_SOURCE, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":44
 * #"""Wildcard source value for receives"""
 * 
 * ANY_TAG = MPI_ANY_TAG             # <<<<<<<<<<<<<<
 * #"""Wildcard tag value for receives"""
 * 
 */
  __pyx_t_2 = PyInt_FromLong(MPI_ANY_TAG); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ANY_TAG, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":47
 * #"""Wildcard tag value for receives"""
 * 
 * PROC_NULL = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 * #"""Special process rank for send/receive"""
 * 
 */
  __pyx_t_2 = PyInt_FromLong(MPI_PROC_NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__PROC_NULL, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":50
 * #"""Special process rank for send/receive"""
 * 
 * ROOT = MPI_ROOT             # <<<<<<<<<<<<<<
 * #"""Root process for collective inter-communications"""
 * 
 */
  __pyx_t_2 = PyInt_FromLong(MPI_ROOT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ROOT, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":53
 * #"""Root process for collective inter-communications"""
 * 
 * BOTTOM = __BOTTOM__             # <<<<<<<<<<<<<<
 * #"""Special address for buffers"""
 * 
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__BOTTOM, __pyx_v_6mpi4py_3MPI___BOTTOM__) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":56
 * #"""Special address for buffers"""
 * 
 * IN_PLACE = __IN_PLACE__             # <<<<<<<<<<<<<<
 * #"""*In-place* option for collective communications"""
 * 
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__IN_PLACE, __pyx_v_6mpi4py_3MPI___IN_PLACE__) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":64
 * # ----------------------------
 * 
 * KEYVAL_INVALID  = MPI_KEYVAL_INVALID             # <<<<<<<<<<<<<<
 * 
 * TAG_UB          = MPI_TAG_UB
 */
  __pyx_t_2 = PyInt_FromLong(MPI_KEYVAL_INVALID); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__KEYVAL_INVALID, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":66
 * KEYVAL_INVALID  = MPI_KEYVAL_INVALID
 * 
 * TAG_UB          = MPI_TAG_UB             # <<<<<<<<<<<<<<
 * HOST            = MPI_HOST
 * IO              = MPI_IO
 */
  __pyx_t_2 = PyInt_FromLong(MPI_TAG_UB); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__TAG_UB, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":67
 * 
 * TAG_UB          = MPI_TAG_UB
 * HOST            = MPI_HOST             # <<<<<<<<<<<<<<
 * IO              = MPI_IO
 * WTIME_IS_GLOBAL = MPI_WTIME_IS_GLOBAL
 */
  __pyx_t_2 = PyInt_FromLong(MPI_HOST); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__HOST, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":68
 * TAG_UB          = MPI_TAG_UB
 * HOST            = MPI_HOST
 * IO              = MPI_IO             # <<<<<<<<<<<<<<
 * WTIME_IS_GLOBAL = MPI_WTIME_IS_GLOBAL
 * 
 */
  __pyx_t_2 = PyInt_FromLong(MPI_IO); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__IO, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":69
 * HOST            = MPI_HOST
 * IO              = MPI_IO
 * WTIME_IS_GLOBAL = MPI_WTIME_IS_GLOBAL             # <<<<<<<<<<<<<<
 * 
 * UNIVERSE_SIZE   = MPI_UNIVERSE_SIZE
 */
  __pyx_t_2 = PyInt_FromLong(MPI_WTIME_IS_GLOBAL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__WTIME_IS_GLOBAL, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":71
 * WTIME_IS_GLOBAL = MPI_WTIME_IS_GLOBAL
 * 
 * UNIVERSE_SIZE   = MPI_UNIVERSE_SIZE             # <<<<<<<<<<<<<<
 * APPNUM          = MPI_APPNUM
 * 
 */
  __pyx_t_2 = PyInt_FromLong(MPI_UNIVERSE_SIZE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__UNIVERSE_SIZE, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":72
 * 
 * UNIVERSE_SIZE   = MPI_UNIVERSE_SIZE
 * APPNUM          = MPI_APPNUM             # <<<<<<<<<<<<<<
 * 
 * LASTUSEDCODE    = MPI_LASTUSEDCODE
 */
  __pyx_t_2 = PyInt_FromLong(MPI_APPNUM); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__APPNUM, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":74
 * APPNUM          = MPI_APPNUM
 * 
 * LASTUSEDCODE    = MPI_LASTUSEDCODE             # <<<<<<<<<<<<<<
 * 
 * WIN_BASE        = MPI_WIN_BASE
 */
  __pyx_t_2 = PyInt_FromLong(MPI_LASTUSEDCODE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LASTUSEDCODE, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":76
 * LASTUSEDCODE    = MPI_LASTUSEDCODE
 * 
 * WIN_BASE        = MPI_WIN_BASE             # <<<<<<<<<<<<<<
 * WIN_SIZE        = MPI_WIN_SIZE
 * WIN_DISP_UNIT   = MPI_WIN_DISP_UNIT
 */
  __pyx_t_2 = PyInt_FromLong(MPI_WIN_BASE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__WIN_BASE, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":77
 * 
 * WIN_BASE        = MPI_WIN_BASE
 * WIN_SIZE        = MPI_WIN_SIZE             # <<<<<<<<<<<<<<
 * WIN_DISP_UNIT   = MPI_WIN_DISP_UNIT
 * 
 */
  __pyx_t_2 = PyInt_FromLong(MPI_WIN_SIZE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__WIN_SIZE, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":78
 * WIN_BASE        = MPI_WIN_BASE
 * WIN_SIZE        = MPI_WIN_SIZE
 * WIN_DISP_UNIT   = MPI_WIN_DISP_UNIT             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = PyInt_FromLong(MPI_WIN_DISP_UNIT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__WIN_DISP_UNIT, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":84
 * # -----------------
 * 
 * def Alloc_mem(Aint size, Info info=INFO_NULL):             # <<<<<<<<<<<<<<
 *     """
 *     Allocate memory for message passing and RMA
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__INFO_NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Info))))) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_110 = ((struct PyMPIInfoObject *)__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_14Alloc_mem, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Alloc_mem, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":93
 *     return tomemory(base, size)
 * 
 * def Free_mem(memory):             # <<<<<<<<<<<<<<
 *     """
 *     Free memory allocated with `Alloc_mem()`
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_15Free_mem, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Free_mem, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":105
 * # -----------------------
 * 
 * def Init():             # <<<<<<<<<<<<<<
 *     """
 *     Initialize the MPI execution environment
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_16Init, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Init, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":112
 *     startup()
 * 
 * def Finalize():             # <<<<<<<<<<<<<<
 *     """
 *     Terminate the MPI execution environment
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_17Finalize, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Finalize, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":122
 * # -------------------------------
 * 
 * THREAD_SINGLE     = MPI_THREAD_SINGLE             # <<<<<<<<<<<<<<
 * # """Only one thread will execute"""
 * 
 */
  __pyx_t_2 = PyInt_FromLong(MPI_THREAD_SINGLE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__THREAD_SINGLE, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":125
 * # """Only one thread will execute"""
 * 
 * THREAD_FUNNELED   = MPI_THREAD_FUNNELED             # <<<<<<<<<<<<<<
 * # """MPI calls are *funneled* to the main thread"""
 * 
 */
  __pyx_t_2 = PyInt_FromLong(MPI_THREAD_FUNNELED); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__THREAD_FUNNELED, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":128
 * # """MPI calls are *funneled* to the main thread"""
 * 
 * THREAD_SERIALIZED = MPI_THREAD_SERIALIZED             # <<<<<<<<<<<<<<
 * # """MPI calls are *serialized*"""
 * 
 */
  __pyx_t_2 = PyInt_FromLong(MPI_THREAD_SERIALIZED); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__THREAD_SERIALIZED, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":131
 * # """MPI calls are *serialized*"""
 * 
 * THREAD_MULTIPLE   = MPI_THREAD_MULTIPLE             # <<<<<<<<<<<<<<
 * # """Multiple threads may call MPI"""
 * 
 */
  __pyx_t_2 = PyInt_FromLong(MPI_THREAD_MULTIPLE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__THREAD_MULTIPLE, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":134
 * # """Multiple threads may call MPI"""
 * 
 * def Init_thread(int required=THREAD_MULTIPLE):             # <<<<<<<<<<<<<<
 *     """
 *     Initialize the MPI execution environment
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__THREAD_MULTIPLE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_t_2); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k_111 = __pyx_t_1;
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_18Init_thread, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Init_thread, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":143
 *     return provided
 * 
 * def Query_thread():             # <<<<<<<<<<<<<<
 *     """
 *     Return the level of thread support
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_19Query_thread, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Query_thread, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":152
 *     return provided
 * 
 * def Is_thread_main():             # <<<<<<<<<<<<<<
 *     """
 *     Indicate whether this thread called
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_20Is_thread_main, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Is_thread_main, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":161
 *     return <bint>flag
 * 
 * def Is_initialized():             # <<<<<<<<<<<<<<
 *     """
 *     Indicates whether ``Init`` has been called
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_21Is_initialized, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Is_initialized, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":169
 *     return <bint>flag
 * 
 * def Is_finalized():             # <<<<<<<<<<<<<<
 *     """
 *     Indicates whether ``Finalize`` has completed
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_22Is_finalized, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Is_finalized, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":183
 * # -----------------
 * 
 * VERSION    = MPI_VERSION             # <<<<<<<<<<<<<<
 * SUBVERSION = MPI_SUBVERSION
 * 
 */
  __pyx_t_2 = PyInt_FromLong(MPI_VERSION); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__VERSION, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":184
 * 
 * VERSION    = MPI_VERSION
 * SUBVERSION = MPI_SUBVERSION             # <<<<<<<<<<<<<<
 * 
 * def Get_version():
 */
  __pyx_t_2 = PyInt_FromLong(MPI_SUBVERSION); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SUBVERSION, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":186
 * SUBVERSION = MPI_SUBVERSION
 * 
 * def Get_version():             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the version number of the MPI standard supported
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_23Get_version, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Get_version, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":199
 * # ----------------------
 * 
 * def Get_processor_name():             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the name of the calling processor
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_24Get_processor_name, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Get_processor_name, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":211
 * # --------------------------
 * 
 * def Wtime():             # <<<<<<<<<<<<<<
 *     """
 *     Return an elapsed time on the calling processor
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_25Wtime, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Wtime, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":217
 *     return MPI_Wtime()
 * 
 * def Wtick():             # <<<<<<<<<<<<<<
 *     """
 *     Return the resolution of ``Wtime``
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_26Wtick, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Wtick, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":226
 * # --------------------
 * 
 * def Pcontrol(int level):             # <<<<<<<<<<<<<<
 *     """
 *     Control profiling
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_27Pcontrol, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Pcontrol, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":238
 * 
 * # MPI-1
 * MAX_PROCESSOR_NAME = MPI_MAX_PROCESSOR_NAME             # <<<<<<<<<<<<<<
 * MAX_ERROR_STRING   = MPI_MAX_ERROR_STRING
 * # MPI-2
 */
  __pyx_t_2 = PyInt_FromLong(MPI_MAX_PROCESSOR_NAME); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MAX_PROCESSOR_NAME, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":239
 * # MPI-1
 * MAX_PROCESSOR_NAME = MPI_MAX_PROCESSOR_NAME
 * MAX_ERROR_STRING   = MPI_MAX_ERROR_STRING             # <<<<<<<<<<<<<<
 * # MPI-2
 * MAX_PORT_NAME      = MPI_MAX_PORT_NAME
 */
  __pyx_t_2 = PyInt_FromLong(MPI_MAX_ERROR_STRING); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MAX_ERROR_STRING, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":241
 * MAX_ERROR_STRING   = MPI_MAX_ERROR_STRING
 * # MPI-2
 * MAX_PORT_NAME      = MPI_MAX_PORT_NAME             # <<<<<<<<<<<<<<
 * MAX_INFO_KEY       = MPI_MAX_INFO_KEY
 * MAX_INFO_VAL       = MPI_MAX_INFO_VAL
 */
  __pyx_t_2 = PyInt_FromLong(MPI_MAX_PORT_NAME); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MAX_PORT_NAME, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":242
 * # MPI-2
 * MAX_PORT_NAME      = MPI_MAX_PORT_NAME
 * MAX_INFO_KEY       = MPI_MAX_INFO_KEY             # <<<<<<<<<<<<<<
 * MAX_INFO_VAL       = MPI_MAX_INFO_VAL
 * MAX_OBJECT_NAME    = MPI_MAX_OBJECT_NAME
 */
  __pyx_t_2 = PyInt_FromLong(MPI_MAX_INFO_KEY); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MAX_INFO_KEY, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":243
 * MAX_PORT_NAME      = MPI_MAX_PORT_NAME
 * MAX_INFO_KEY       = MPI_MAX_INFO_KEY
 * MAX_INFO_VAL       = MPI_MAX_INFO_VAL             # <<<<<<<<<<<<<<
 * MAX_OBJECT_NAME    = MPI_MAX_OBJECT_NAME
 * MAX_DATAREP_STRING = MPI_MAX_DATAREP_STRING
 */
  __pyx_t_2 = PyInt_FromLong(MPI_MAX_INFO_VAL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MAX_INFO_VAL, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":244
 * MAX_INFO_KEY       = MPI_MAX_INFO_KEY
 * MAX_INFO_VAL       = MPI_MAX_INFO_VAL
 * MAX_OBJECT_NAME    = MPI_MAX_OBJECT_NAME             # <<<<<<<<<<<<<<
 * MAX_DATAREP_STRING = MPI_MAX_DATAREP_STRING
 * 
 */
  __pyx_t_2 = PyInt_FromLong(MPI_MAX_OBJECT_NAME); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MAX_OBJECT_NAME, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":245
 * MAX_INFO_VAL       = MPI_MAX_INFO_VAL
 * MAX_OBJECT_NAME    = MPI_MAX_OBJECT_NAME
 * MAX_DATAREP_STRING = MPI_MAX_DATAREP_STRING             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = PyInt_FromLong(MPI_MAX_DATAREP_STRING); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MAX_DATAREP_STRING, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/devel/mpi4py-1.3/src/MPI/MPI.pyx":254
 *     int MPI_Get_vendor(const_char**,int*,int*,int*)
 * 
 * def get_vendor():             # <<<<<<<<<<<<<<
 *     """
 *     Infomation about the underlying MPI implementation
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6mpi4py_3MPI_28get_vendor, NULL, __pyx_n_s_148); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_vendor, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[27]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_RegisterCleanup()) {__pyx_filename = __pyx_f[28]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  if (__pyx_m) {
    __Pyx_AddTraceback("init mpi4py.MPI", __pyx_clineno, __pyx_lineno, __pyx_filename);
    Py_DECREF(__pyx_m); __pyx_m = 0;
  } else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_ImportError, "init mpi4py.MPI");
  }
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  #if PY_MAJOR_VERSION < 3
  return;
  #else
  return __pyx_m;
  #endif
}

static void __Pyx_CleanupGlobals(void) {
  Py_CLEAR(__pyx_k_tuple_6);
  Py_CLEAR(__pyx_k_tuple_7);
  Py_CLEAR(__pyx_k_tuple_9);
  Py_CLEAR(__pyx_k_tuple_12);
  Py_CLEAR(__pyx_k_tuple_14);
  Py_CLEAR(__pyx_k_tuple_16);
  Py_CLEAR(__pyx_k_tuple_18);
  Py_CLEAR(__pyx_k_tuple_20);
  Py_CLEAR(__pyx_k_tuple_24);
  Py_CLEAR(__pyx_k_tuple_26);
  Py_CLEAR(__pyx_k_tuple_32);
  Py_CLEAR(__pyx_k_tuple_33);
  Py_CLEAR(__pyx_k_tuple_34);
  Py_CLEAR(__pyx_k_tuple_37);
  Py_CLEAR(__pyx_k_tuple_38);
  Py_CLEAR(__pyx_k_tuple_40);
  Py_CLEAR(__pyx_k_tuple_44);
  Py_CLEAR(__pyx_k_tuple_45);
  Py_CLEAR(__pyx_k_tuple_47);
  Py_CLEAR(__pyx_k_tuple_49);
  Py_CLEAR(__pyx_k_tuple_51);
  Py_CLEAR(__pyx_k_tuple_52);
  Py_CLEAR(__pyx_k_tuple_56);
  Py_CLEAR(__pyx_k_tuple_57);
  Py_CLEAR(__pyx_k_tuple_60);
  Py_CLEAR(__pyx_k_tuple_62);
  Py_CLEAR(__pyx_k_tuple_63);
  Py_CLEAR(__pyx_k_tuple_64);
  Py_CLEAR(__pyx_k_tuple_65);
  Py_CLEAR(__pyx_k_tuple_68);
  Py_CLEAR(__pyx_k_tuple_69);
  Py_CLEAR(__pyx_k_tuple_70);
  Py_CLEAR(__pyx_k_tuple_78);
  Py_CLEAR(__pyx_k_tuple_90);
  Py_CLEAR(__pyx_k_tuple_92);
  Py_CLEAR(__pyx_k_tuple_94);
  Py_CLEAR(__pyx_k_tuple_96);
  Py_CLEAR(__pyx_k_tuple_99);
  Py_CLEAR(__pyx_k_tuple_103);
}
static PyObject *__pyx_module_cleanup(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED PyObject *unused) {
  /*--- Global cleanup code ---*/
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___FILE_NULL__); __pyx_v_6mpi4py_3MPI___FILE_NULL__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___WIN_NULL__); __pyx_v_6mpi4py_3MPI___WIN_NULL__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_PARENT__); __pyx_v_6mpi4py_3MPI___COMM_PARENT__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_WORLD__); __pyx_v_6mpi4py_3MPI___COMM_WORLD__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_SELF__); __pyx_v_6mpi4py_3MPI___COMM_SELF__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_NULL__); __pyx_v_6mpi4py_3MPI___COMM_NULL__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_EMPTY__); __pyx_v_6mpi4py_3MPI___GROUP_EMPTY__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_NULL__); __pyx_v_6mpi4py_3MPI___GROUP_NULL__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___REPLACE__); __pyx_v_6mpi4py_3MPI___REPLACE__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___MINLOC__); __pyx_v_6mpi4py_3MPI___MINLOC__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___MAXLOC__); __pyx_v_6mpi4py_3MPI___MAXLOC__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___BXOR__); __pyx_v_6mpi4py_3MPI___BXOR__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___LXOR__); __pyx_v_6mpi4py_3MPI___LXOR__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___BOR__); __pyx_v_6mpi4py_3MPI___BOR__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___LOR__); __pyx_v_6mpi4py_3MPI___LOR__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___BAND__); __pyx_v_6mpi4py_3MPI___BAND__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___LAND__); __pyx_v_6mpi4py_3MPI___LAND__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___PROD__); __pyx_v_6mpi4py_3MPI___PROD__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___SUM__); __pyx_v_6mpi4py_3MPI___SUM__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___MIN__); __pyx_v_6mpi4py_3MPI___MIN__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___MAX__); __pyx_v_6mpi4py_3MPI___MAX__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___OP_NULL__); __pyx_v_6mpi4py_3MPI___OP_NULL__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___INFO_NULL__); __pyx_v_6mpi4py_3MPI___INFO_NULL__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___REQUEST_NULL__); __pyx_v_6mpi4py_3MPI___REQUEST_NULL__ = 0;
  Py_DECREF(__pyx_v_6mpi4py_3MPI_FTypeDict); __pyx_v_6mpi4py_3MPI_FTypeDict = 0;
  Py_DECREF(__pyx_v_6mpi4py_3MPI_CTypeDict); __pyx_v_6mpi4py_3MPI_CTypeDict = 0;
  Py_DECREF(__pyx_v_6mpi4py_3MPI_TypeDict); __pyx_v_6mpi4py_3MPI_TypeDict = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX32__); __pyx_v_6mpi4py_3MPI___COMPLEX32__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX16__); __pyx_v_6mpi4py_3MPI___COMPLEX16__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX8__); __pyx_v_6mpi4py_3MPI___COMPLEX8__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX4__); __pyx_v_6mpi4py_3MPI___COMPLEX4__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___REAL16__); __pyx_v_6mpi4py_3MPI___REAL16__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___REAL8__); __pyx_v_6mpi4py_3MPI___REAL8__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___REAL4__); __pyx_v_6mpi4py_3MPI___REAL4__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___REAL2__); __pyx_v_6mpi4py_3MPI___REAL2__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER16__); __pyx_v_6mpi4py_3MPI___INTEGER16__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER8__); __pyx_v_6mpi4py_3MPI___INTEGER8__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER4__); __pyx_v_6mpi4py_3MPI___INTEGER4__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER2__); __pyx_v_6mpi4py_3MPI___INTEGER2__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER1__); __pyx_v_6mpi4py_3MPI___INTEGER1__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL8__); __pyx_v_6mpi4py_3MPI___LOGICAL8__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL4__); __pyx_v_6mpi4py_3MPI___LOGICAL4__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL2__); __pyx_v_6mpi4py_3MPI___LOGICAL2__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL1__); __pyx_v_6mpi4py_3MPI___LOGICAL1__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__); __pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX__); __pyx_v_6mpi4py_3MPI___COMPLEX__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__); __pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___REAL__); __pyx_v_6mpi4py_3MPI___REAL__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER__); __pyx_v_6mpi4py_3MPI___INTEGER__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL__); __pyx_v_6mpi4py_3MPI___LOGICAL__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___CHARACTER__); __pyx_v_6mpi4py_3MPI___CHARACTER__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE_INT__); __pyx_v_6mpi4py_3MPI___LONG_DOUBLE_INT__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_INT__); __pyx_v_6mpi4py_3MPI___DOUBLE_INT__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT_INT__); __pyx_v_6mpi4py_3MPI___FLOAT_INT__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_INT__); __pyx_v_6mpi4py_3MPI___LONG_INT__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___TWOINT__); __pyx_v_6mpi4py_3MPI___TWOINT__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT_INT__); __pyx_v_6mpi4py_3MPI___SHORT_INT__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__); __pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__); __pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__); __pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___C_COMPLEX__); __pyx_v_6mpi4py_3MPI___C_COMPLEX__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___UINT64_T__); __pyx_v_6mpi4py_3MPI___UINT64_T__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___UINT32_T__); __pyx_v_6mpi4py_3MPI___UINT32_T__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___UINT16_T__); __pyx_v_6mpi4py_3MPI___UINT16_T__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___UINT8_T__); __pyx_v_6mpi4py_3MPI___UINT8_T__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__); __pyx_v_6mpi4py_3MPI___INT64_T__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___INT32_T__); __pyx_v_6mpi4py_3MPI___INT32_T__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___INT16_T__); __pyx_v_6mpi4py_3MPI___INT16_T__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___INT8_T__); __pyx_v_6mpi4py_3MPI___INT8_T__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___C_BOOL__); __pyx_v_6mpi4py_3MPI___C_BOOL__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__); __pyx_v_6mpi4py_3MPI___LONG_DOUBLE__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__); __pyx_v_6mpi4py_3MPI___DOUBLE__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__); __pyx_v_6mpi4py_3MPI___FLOAT__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__); __pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__); __pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__); __pyx_v_6mpi4py_3MPI___UNSIGNED__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__); __pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__); __pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__); __pyx_v_6mpi4py_3MPI___LONG_LONG__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__); __pyx_v_6mpi4py_3MPI___LONG__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___INT__); __pyx_v_6mpi4py_3MPI___INT__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__); __pyx_v_6mpi4py_3MPI___SHORT__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__); __pyx_v_6mpi4py_3MPI___SIGNED_CHAR__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__); __pyx_v_6mpi4py_3MPI___WCHAR__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__); __pyx_v_6mpi4py_3MPI___CHAR__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___OFFSET__); __pyx_v_6mpi4py_3MPI___OFFSET__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___AINT__); __pyx_v_6mpi4py_3MPI___AINT__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__); __pyx_v_6mpi4py_3MPI___BYTE__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___PACKED__); __pyx_v_6mpi4py_3MPI___PACKED__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___LB__); __pyx_v_6mpi4py_3MPI___LB__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___UB__); __pyx_v_6mpi4py_3MPI___UB__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___DATATYPE_NULL__); __pyx_v_6mpi4py_3MPI___DATATYPE_NULL__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_ARE_FATAL__); __pyx_v_6mpi4py_3MPI___ERRORS_ARE_FATAL__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_RETURN__); __pyx_v_6mpi4py_3MPI___ERRORS_RETURN__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___ERRHANDLER_NULL__); __pyx_v_6mpi4py_3MPI___ERRHANDLER_NULL__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE); __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE = 0;
  Py_DECREF(__pyx_v_6mpi4py_3MPI_PyPickle_loadf); __pyx_v_6mpi4py_3MPI_PyPickle_loadf = 0;
  Py_DECREF(__pyx_v_6mpi4py_3MPI_PyStringIO_New); __pyx_v_6mpi4py_3MPI_PyStringIO_New = 0;
  Py_DECREF(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL); __pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL = 0;
  Py_DECREF(__pyx_v_6mpi4py_3MPI_PyPickle_loads); __pyx_v_6mpi4py_3MPI_PyPickle_loads = 0;
  Py_DECREF(__pyx_v_6mpi4py_3MPI_PyPickle_dumps); __pyx_v_6mpi4py_3MPI_PyPickle_dumps = 0;
  Py_DECREF(__pyx_v_6mpi4py_3MPI___IN_PLACE__); __pyx_v_6mpi4py_3MPI___IN_PLACE__ = 0;
  Py_DECREF(__pyx_v_6mpi4py_3MPI___BOTTOM__); __pyx_v_6mpi4py_3MPI___BOTTOM__ = 0;
  Py_DECREF(__pyx_v_6mpi4py_3MPI_win_keyval); __pyx_v_6mpi4py_3MPI_win_keyval = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI__buffer); __pyx_v_6mpi4py_3MPI__buffer = 0;
  Py_DECREF(__pyx_v_6mpi4py_3MPI_comm_keyval); __pyx_v_6mpi4py_3MPI_comm_keyval = 0;
  Py_DECREF(__pyx_v_6mpi4py_3MPI_op_user_registry); __pyx_v_6mpi4py_3MPI_op_user_registry = 0;
  Py_DECREF(__pyx_v_6mpi4py_3MPI_type_keyval); __pyx_v_6mpi4py_3MPI_type_keyval = 0;
  Py_DECREF(__pyx_v_6mpi4py_3MPI_arraytype); __pyx_v_6mpi4py_3MPI_arraytype = 0;
  Py_DECREF(__pyx_v_6mpi4py_3MPI_MPIException); __pyx_v_6mpi4py_3MPI_MPIException = 0;
  __Pyx_CleanupGlobals();
  /*--- Type import cleanup code ---*/
  /*--- Builtin cleanup code ---*/
  Py_DECREF(__pyx_builtin_ImportError); __pyx_builtin_ImportError = 0;
  Py_DECREF(__pyx_builtin_RuntimeError); __pyx_builtin_RuntimeError = 0;
  Py_DECREF(__pyx_builtin_property); __pyx_builtin_property = 0;
  Py_DECREF(__pyx_builtin_SystemError); __pyx_builtin_SystemError = 0;
  Py_DECREF(__pyx_builtin_TypeError); __pyx_builtin_TypeError = 0;
  Py_DECREF(__pyx_builtin_AttributeError); __pyx_builtin_AttributeError = 0;
  Py_DECREF(__pyx_builtin_ValueError); __pyx_builtin_ValueError = 0;
  Py_DECREF(__pyx_builtin_KeyError); __pyx_builtin_KeyError = 0;
  Py_DECREF(__pyx_builtin_NotImplemented); __pyx_builtin_NotImplemented = 0;
  Py_DECREF(__pyx_builtin_NotImplementedError); __pyx_builtin_NotImplementedError = 0;
  /*--- Intern cleanup code ---*/
  Py_DECREF(__pyx_empty_tuple); __pyx_empty_tuple = 0;
  Py_INCREF(Py_None); return Py_None;
}

/* Runtime support code */

#if CYTHON_REFNANNY
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
    PyObject *m = NULL, *p = NULL;
    void *r = NULL;
    m = PyImport_ImportModule((char *)modname);
    if (!m) goto end;
    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
    if (!p) goto end;
    r = PyLong_AsVoidPtr(p);
end:
    Py_XDECREF(p);
    Py_XDECREF(m);
    return (__Pyx_RefNannyAPIStruct *)r;
}
#endif /* CYTHON_REFNANNY */

static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
    PyObject *result;
    result = PyObject_GetAttr(dict, name);
    if (!result) {
        if (dict != __pyx_b) {
            PyErr_Clear();
            result = PyObject_GetAttr(__pyx_b, name);
        }
        if (!result) {
            PyErr_SetObject(PyExc_NameError, name);
        }
    }
    return result;
}

static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *local_type, *local_value, *local_tb;
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    PyThreadState *tstate = PyThreadState_GET();
    local_type = tstate->curexc_type;
    local_value = tstate->curexc_value;
    local_tb = tstate->curexc_traceback;
    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
    if (unlikely(tstate->curexc_type))
        goto bad;
    #if PY_MAJOR_VERSION >= 3
    if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
        goto bad;
    #endif
    *type = local_type;
    *value = local_value;
    *tb = local_tb;
    Py_INCREF(local_type);
    Py_INCREF(local_value);
    Py_INCREF(local_tb);
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = local_type;
    tstate->exc_value = local_value;
    tstate->exc_traceback = local_tb;
    /* Make sure tstate is in a consistent state when we XDECREF
       these objects (XDECREF may run arbitrary code). */
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
    return 0;
bad:
    *type = 0;
    *value = 0;
    *tb = 0;
    Py_XDECREF(local_type);
    Py_XDECREF(local_value);
    Py_XDECREF(local_tb);
    return -1;
}


static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    PyThreadState *tstate = PyThreadState_GET();

    tmp_type = tstate->curexc_type;
    tmp_value = tstate->curexc_value;
    tmp_tb = tstate->curexc_traceback;
    tstate->curexc_type = type;
    tstate->curexc_value = value;
    tstate->curexc_traceback = tb;
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
}

static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
    PyThreadState *tstate = PyThreadState_GET();
    *type = tstate->curexc_type;
    *value = tstate->curexc_value;
    *tb = tstate->curexc_traceback;

    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
}


#if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
    /* cause is unused */
    Py_XINCREF(type);
    Py_XINCREF(value);
    Py_XINCREF(tb);
    /* First, check the traceback argument, replacing None with NULL. */
    if (tb == Py_None) {
        Py_DECREF(tb);
        tb = 0;
    }
    else if (tb != NULL && !PyTraceBack_Check(tb)) {
        PyErr_SetString(PyExc_TypeError,
            "raise: arg 3 must be a traceback or None");
        goto raise_error;
    }
    /* Next, replace a missing value with None */
    if (value == NULL) {
        value = Py_None;
        Py_INCREF(value);
    }
    #if PY_VERSION_HEX < 0x02050000
    if (!PyClass_Check(type))
    #else
    if (!PyType_Check(type))
    #endif
    {
        /* Raising an instance.  The value should be a dummy. */
        if (value != Py_None) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto raise_error;
        }
        /* Normalize to raise <class>, <instance> */
        Py_DECREF(value);
        value = type;
        #if PY_VERSION_HEX < 0x02050000
            if (PyInstance_Check(type)) {
                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
                Py_INCREF(type);
            }
            else {
                type = 0;
                PyErr_SetString(PyExc_TypeError,
                    "raise: exception must be an old-style class or instance");
                goto raise_error;
            }
        #else
            type = (PyObject*) Py_TYPE(type);
            Py_INCREF(type);
            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
                PyErr_SetString(PyExc_TypeError,
                    "raise: exception class must be a subclass of BaseException");
                goto raise_error;
            }
        #endif
    }

    __Pyx_ErrRestore(type, value, tb);
    return;
raise_error:
    Py_XDECREF(value);
    Py_XDECREF(type);
    Py_XDECREF(tb);
    return;
}

#else /* Python 3+ */

static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
    if (tb == Py_None) {
        tb = 0;
    } else if (tb && !PyTraceBack_Check(tb)) {
        PyErr_SetString(PyExc_TypeError,
            "raise: arg 3 must be a traceback or None");
        goto bad;
    }
    if (value == Py_None)
        value = 0;

    if (PyExceptionInstance_Check(type)) {
        if (value) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto bad;
        }
        value = type;
        type = (PyObject*) Py_TYPE(value);
    } else if (!PyExceptionClass_Check(type)) {
        PyErr_SetString(PyExc_TypeError,
            "raise: exception class must be a subclass of BaseException");
        goto bad;
    }

    if (cause) {
        PyObject *fixed_cause;
        if (PyExceptionClass_Check(cause)) {
            fixed_cause = PyObject_CallObject(cause, NULL);
            if (fixed_cause == NULL)
                goto bad;
        }
        else if (PyExceptionInstance_Check(cause)) {
            fixed_cause = cause;
            Py_INCREF(fixed_cause);
        }
        else {
            PyErr_SetString(PyExc_TypeError,
                            "exception causes must derive from "
                            "BaseException");
            goto bad;
        }
        if (!value) {
            value = PyObject_CallObject(type, NULL);
        }
        PyException_SetCause(value, fixed_cause);
    }

    PyErr_SetObject(type, value);

    if (tb) {
        PyThreadState *tstate = PyThreadState_GET();
        PyObject* tmp_tb = tstate->curexc_traceback;
        if (tb != tmp_tb) {
            Py_INCREF(tb);
            tstate->curexc_traceback = tb;
            Py_XDECREF(tmp_tb);
        }
    }

bad:
    return;
}
#endif


static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
    if (unlikely(!type)) {
        PyErr_Format(PyExc_SystemError, "Missing type object");
        return 0;
    }
    if (likely(PyObject_TypeCheck(obj, type)))
        return 1;
    PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
                 Py_TYPE(obj)->tp_name, type->tp_name);
    return 0;
}



static void __Pyx_RaiseArgtupleInvalid(
    const char* func_name,
    int exact,
    Py_ssize_t num_min,
    Py_ssize_t num_max,
    Py_ssize_t num_found)
{
    Py_ssize_t num_expected;
    const char *more_or_less;

    if (num_found < num_min) {
        num_expected = num_min;
        more_or_less = "at least";
    } else {
        num_expected = num_max;
        more_or_less = "at most";
    }
    if (exact) {
        more_or_less = "exactly";
    }
    PyErr_Format(PyExc_TypeError,
                 "%s() takes %s %"PY_FORMAT_SIZE_T"d positional argument%s (%"PY_FORMAT_SIZE_T"d given)",
                 func_name, more_or_less, num_expected,
                 (num_expected == 1) ? "" : "s", num_found);
}

static void __Pyx_RaiseDoubleKeywordsError(
    const char* func_name,
    PyObject* kw_name)
{
    PyErr_Format(PyExc_TypeError,
        #if PY_MAJOR_VERSION >= 3
        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
        #else
        "%s() got multiple values for keyword argument '%s'", func_name,
        PyString_AS_STRING(kw_name));
        #endif
}

static int __Pyx_ParseOptionalKeywords(
    PyObject *kwds,
    PyObject **argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    const char* function_name)
{
    PyObject *key = 0, *value = 0;
    Py_ssize_t pos = 0;
    PyObject*** name;
    PyObject*** first_kw_arg = argnames + num_pos_args;

    while (PyDict_Next(kwds, &pos, &key, &value)) {
        name = first_kw_arg;
        while (*name && (**name != key)) name++;
        if (*name) {
            values[name-argnames] = value;
        } else {
            #if PY_MAJOR_VERSION < 3
            if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key))) {
            #else
            if (unlikely(!PyUnicode_CheckExact(key)) && unlikely(!PyUnicode_Check(key))) {
            #endif
                goto invalid_keyword_type;
            } else {
                for (name = first_kw_arg; *name; name++) {
                    #if PY_MAJOR_VERSION >= 3
                    if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) &&
                        PyUnicode_Compare(**name, key) == 0) break;
                    #else
                    if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) &&
                        _PyString_Eq(**name, key)) break;
                    #endif
                }
                if (*name) {
                    values[name-argnames] = value;
                } else {
                    /* unexpected keyword found */
                    for (name=argnames; name != first_kw_arg; name++) {
                        if (**name == key) goto arg_passed_twice;
                        #if PY_MAJOR_VERSION >= 3
                        if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) &&
                            PyUnicode_Compare(**name, key) == 0) goto arg_passed_twice;
                        #else
                        if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) &&
                            _PyString_Eq(**name, key)) goto arg_passed_twice;
                        #endif
                    }
                    if (kwds2) {
                        if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
                    } else {
                        goto invalid_keyword;
                    }
                }
            }
        }
    }
    return 0;
arg_passed_twice:
    __Pyx_RaiseDoubleKeywordsError(function_name, **name);
    goto bad;
invalid_keyword_type:
    PyErr_Format(PyExc_TypeError,
        "%s() keywords must be strings", function_name);
    goto bad;
invalid_keyword:
    PyErr_Format(PyExc_TypeError,
    #if PY_MAJOR_VERSION < 3
        "%s() got an unexpected keyword argument '%s'",
        function_name, PyString_AsString(key));
    #else
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
bad:
    return -1;
}

static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
    PyErr_Format(PyExc_ValueError,
                 "need more than %"PY_FORMAT_SIZE_T"d value%s to unpack",
                 index, (index == 1) ? "" : "s");
}

static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
    PyErr_Format(PyExc_ValueError,
                 "too many values to unpack (expected %"PY_FORMAT_SIZE_T"d)", expected);
}

static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
    if (unlikely(retval)) {
        Py_DECREF(retval);
        __Pyx_RaiseTooManyValuesError(expected);
        return -1;
    } else if (PyErr_Occurred()) {
        if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) {
            PyErr_Clear();
            return 0;
        } else {
            return -1;
        }
    }
    return 0;
}

static CYTHON_INLINE void __Pyx_RaiseNoneIndexingError(void) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is unsubscriptable");
}

static CYTHON_INLINE int __Pyx_CheckKeywordStrings(
    PyObject *kwdict,
    const char* function_name,
    int kw_allowed)
{
    PyObject* key = 0;
    Py_ssize_t pos = 0;
    while (PyDict_Next(kwdict, &pos, &key, 0)) {
        #if PY_MAJOR_VERSION < 3
        if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key)))
        #else
        if (unlikely(!PyUnicode_CheckExact(key)) && unlikely(!PyUnicode_Check(key)))
        #endif
            goto invalid_keyword_type;
    }
    if ((!kw_allowed) && unlikely(key))
        goto invalid_keyword;
    return 1;
invalid_keyword_type:
    PyErr_Format(PyExc_TypeError,
        "%s() keywords must be strings", function_name);
    return 0;
invalid_keyword:
    PyErr_Format(PyExc_TypeError,
    #if PY_MAJOR_VERSION < 3
        "%s() got an unexpected keyword argument '%s'",
        function_name, PyString_AsString(key));
    #else
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
    return 0;
}

static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
    PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
}

static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
    const char *name, int exact)
{
    if (!type) {
        PyErr_Format(PyExc_SystemError, "Missing type object");
        return 0;
    }
    if (none_allowed && obj == Py_None) return 1;
    else if (exact) {
        if (Py_TYPE(obj) == type) return 1;
    }
    else {
        if (PyObject_TypeCheck(obj, type)) return 1;
    }
    PyErr_Format(PyExc_TypeError,
        "Argument '%s' has incorrect type (expected %s, got %s)",
        name, type->tp_name, Py_TYPE(obj)->tp_name);
    return 0;
}

static int __Pyx_RegisterCleanup(void) {
    /* Don't use Py_AtExit because that has a 32-call limit
     * and is called after python finalization.
     */

    PyObject *cleanup_func = 0;
    PyObject *atexit = 0;
    PyObject *reg = 0;
    PyObject *args = 0;
    PyObject *res = 0;
    int ret = -1;

    cleanup_func = PyCFunction_New(&cleanup_def, 0);
    args = PyTuple_New(1);
    if (!cleanup_func || !args)
        goto bad;
    PyTuple_SET_ITEM(args, 0, cleanup_func);
    cleanup_func = 0;

    atexit = __Pyx_ImportModule("atexit");
    if (!atexit)
        goto bad;
    reg = __Pyx_GetAttrString(atexit, "register");
    if (!reg)
        goto bad;
    res = PyObject_CallObject(reg, args);
    if (!res)
        goto bad;
    ret = 0;
bad:
    Py_XDECREF(cleanup_func);
    Py_XDECREF(atexit);
    Py_XDECREF(reg);
    Py_XDECREF(args);
    Py_XDECREF(res);
    return ret;
}

static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
    PyThreadState *tstate = PyThreadState_GET();
    *type = tstate->exc_type;
    *value = tstate->exc_value;
    *tb = tstate->exc_traceback;
    Py_XINCREF(*type);
    Py_XINCREF(*value);
    Py_XINCREF(*tb);
}

static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    PyThreadState *tstate = PyThreadState_GET();
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = type;
    tstate->exc_value = value;
    tstate->exc_traceback = tb;
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
}

static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, long level) {
    PyObject *py_import = 0;
    PyObject *empty_list = 0;
    PyObject *module = 0;
    PyObject *global_dict = 0;
    PyObject *empty_dict = 0;
    PyObject *list;
    py_import = __Pyx_GetAttrString(__pyx_b, "__import__");
    if (!py_import)
        goto bad;
    if (from_list)
        list = from_list;
    else {
        empty_list = PyList_New(0);
        if (!empty_list)
            goto bad;
        list = empty_list;
    }
    global_dict = PyModule_GetDict(__pyx_m);
    if (!global_dict)
        goto bad;
    empty_dict = PyDict_New();
    if (!empty_dict)
        goto bad;
    #if PY_VERSION_HEX >= 0x02050000
    {
        PyObject *py_level = PyInt_FromLong(level);
        if (!py_level)
            goto bad;
        module = PyObject_CallFunctionObjArgs(py_import,
            name, global_dict, empty_dict, list, py_level, NULL);
        Py_DECREF(py_level);
    }
    #else
    if (level>0) {
        PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4.");
        goto bad;
    }
    module = PyObject_CallFunctionObjArgs(py_import,
        name, global_dict, empty_dict, list, NULL);
    #endif
bad:
    Py_XDECREF(empty_list);
    Py_XDECREF(py_import);
    Py_XDECREF(empty_dict);
    return module;
}

static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_MPI_Aint(MPI_Aint val) {
    const MPI_Aint neg_one = (MPI_Aint)-1, const_zero = (MPI_Aint)0;
    const int is_unsigned = const_zero < neg_one;
    if ((sizeof(MPI_Aint) == sizeof(char))  ||
        (sizeof(MPI_Aint) == sizeof(short))) {
        return PyInt_FromLong((long)val);
    } else if ((sizeof(MPI_Aint) == sizeof(int)) ||
               (sizeof(MPI_Aint) == sizeof(long))) {
        if (is_unsigned)
            return PyLong_FromUnsignedLong((unsigned long)val);
        else
            return PyInt_FromLong((long)val);
    } else if (sizeof(MPI_Aint) == sizeof(PY_LONG_LONG)) {
        if (is_unsigned)
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
        else
            return PyLong_FromLongLong((PY_LONG_LONG)val);
    } else {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        return _PyLong_FromByteArray(bytes, sizeof(MPI_Aint),
                                     little, !is_unsigned);
    }
}

static PyObject *__Pyx_FindPy2Metaclass(PyObject *bases) {
    PyObject *metaclass;
    /* Default metaclass */
#if PY_MAJOR_VERSION < 3
    if (PyTuple_Check(bases) && PyTuple_GET_SIZE(bases) > 0) {
        PyObject *base = PyTuple_GET_ITEM(bases, 0);
        metaclass = PyObject_GetAttrString(base, (char *)"__class__");
        if (!metaclass) {
            PyErr_Clear();
            metaclass = (PyObject*) Py_TYPE(base);
        }
    } else {
        metaclass = (PyObject *) &PyClass_Type;
    }
#else
    if (PyTuple_Check(bases) && PyTuple_GET_SIZE(bases) > 0) {
        PyObject *base = PyTuple_GET_ITEM(bases, 0);
        metaclass = (PyObject*) Py_TYPE(base);
    } else {
        metaclass = (PyObject *) &PyType_Type;
    }
#endif
    Py_INCREF(metaclass);
    return metaclass;
}

static PyObject *__Pyx_CreateClass(PyObject *bases, PyObject *dict, PyObject *name,
                                   PyObject *modname) {
    PyObject *result;
    PyObject *metaclass;

    if (PyDict_SetItemString(dict, "__module__", modname) < 0)
        return NULL;

    /* Python2 __metaclass__ */
    metaclass = PyDict_GetItemString(dict, "__metaclass__");
    if (metaclass) {
        Py_INCREF(metaclass);
    } else {
        metaclass = __Pyx_FindPy2Metaclass(bases);
    }
    result = PyObject_CallFunctionObjArgs(metaclass, name, bases, dict, NULL);
    Py_DECREF(metaclass);
    return result;
}


static PyObject *__pyx_binding_PyCFunctionType_NewEx(PyMethodDef *ml, PyObject *self, PyObject *module) {
    __pyx_binding_PyCFunctionType_object *op = PyObject_GC_New(__pyx_binding_PyCFunctionType_object, __pyx_binding_PyCFunctionType);
    if (op == NULL)
        return NULL;
    op->func.m_ml = ml;
    Py_XINCREF(self);
    op->func.m_self = self;
    Py_XINCREF(module);
    op->func.m_module = module;
    PyObject_GC_Track(op);
    return (PyObject *)op;
}

static void __pyx_binding_PyCFunctionType_dealloc(__pyx_binding_PyCFunctionType_object *m) {
    PyObject_GC_UnTrack(m);
    Py_XDECREF(m->func.m_self);
    Py_XDECREF(m->func.m_module);
    PyObject_GC_Del(m);
}

static PyObject *__pyx_binding_PyCFunctionType_descr_get(PyObject *func, PyObject *obj, PyObject *type) {
    if (obj == Py_None)
            obj = NULL;
    return PyMethod_New(func, obj, type);
}

static int __pyx_binding_PyCFunctionType_init(void) {
    __pyx_binding_PyCFunctionType_type = PyCFunction_Type;
    __pyx_binding_PyCFunctionType_type.tp_name = __Pyx_NAMESTR("cython_binding_builtin_function_or_method");
    __pyx_binding_PyCFunctionType_type.tp_dealloc = (destructor)__pyx_binding_PyCFunctionType_dealloc;
    __pyx_binding_PyCFunctionType_type.tp_descr_get = __pyx_binding_PyCFunctionType_descr_get;
    if (PyType_Ready(&__pyx_binding_PyCFunctionType_type) < 0) {
        return -1;
    }
    __pyx_binding_PyCFunctionType = &__pyx_binding_PyCFunctionType_type;
    return 0;

}

static PyObject* __Pyx_Method_ClassMethod(PyObject *method) {
    /* It appears that PyMethodDescr_Type is not anywhere exposed in the Python/C API */
    static PyTypeObject *methoddescr_type = NULL;
    if (methoddescr_type == NULL) {
       PyObject *meth = __Pyx_GetAttrString((PyObject*)&PyList_Type, "append");
       if (!meth) return NULL;
       methoddescr_type = Py_TYPE(meth);
       Py_DECREF(meth);
    }
    if (PyObject_TypeCheck(method, methoddescr_type)) { /* cdef classes */
        PyMethodDescrObject *descr = (PyMethodDescrObject *)method;
        #if PY_VERSION_HEX < 0x03020000
        PyTypeObject *d_type = descr->d_type;
        #else
        PyTypeObject *d_type = descr->d_common.d_type;
        #endif
        return PyDescr_NewClassMethod(d_type, descr->d_method);
    }
    else if (PyMethod_Check(method)) { /* python classes */
        return PyClassMethod_New(PyMethod_GET_FUNCTION(method));
    }
    else if (PyCFunction_Check(method)) {
        return PyClassMethod_New(method);
    }
#ifdef __pyx_binding_PyCFunctionType_USED
    else if (PyObject_TypeCheck(method, __pyx_binding_PyCFunctionType)) { /* binded CFunction */
        return PyClassMethod_New(method);
    }
#endif
    PyErr_Format(PyExc_TypeError,
                 "Class-level classmethod() can only be called on "
                 "a method_descriptor or instance method.");
    return NULL;
}

static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
    if (s1 == s2) {   /* as done by PyObject_RichCompareBool(); also catches the (interned) empty string */
        return (equals == Py_EQ);
    } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
        if (PyBytes_GET_SIZE(s1) != PyBytes_GET_SIZE(s2)) {
            return (equals == Py_NE);
        } else if (PyBytes_GET_SIZE(s1) == 1) {
            if (equals == Py_EQ)
                return (PyBytes_AS_STRING(s1)[0] == PyBytes_AS_STRING(s2)[0]);
            else
                return (PyBytes_AS_STRING(s1)[0] != PyBytes_AS_STRING(s2)[0]);
        } else {
            int result = memcmp(PyBytes_AS_STRING(s1), PyBytes_AS_STRING(s2), (size_t)PyBytes_GET_SIZE(s1));
            return (equals == Py_EQ) ? (result == 0) : (result != 0);
        }
    } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
        return (equals == Py_NE);
    } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
        return (equals == Py_NE);
    } else {
        int result;
        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
        if (!py_result)
            return -1;
        result = __Pyx_PyObject_IsTrue(py_result);
        Py_DECREF(py_result);
        return result;
    }
}

static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
    if (s1 == s2) {   /* as done by PyObject_RichCompareBool(); also catches the (interned) empty string */
        return (equals == Py_EQ);
    } else if (PyUnicode_CheckExact(s1) & PyUnicode_CheckExact(s2)) {
        if (PyUnicode_GET_SIZE(s1) != PyUnicode_GET_SIZE(s2)) {
            return (equals == Py_NE);
        } else if (PyUnicode_GET_SIZE(s1) == 1) {
            if (equals == Py_EQ)
                return (PyUnicode_AS_UNICODE(s1)[0] == PyUnicode_AS_UNICODE(s2)[0]);
            else
                return (PyUnicode_AS_UNICODE(s1)[0] != PyUnicode_AS_UNICODE(s2)[0]);
        } else {
            int result = PyUnicode_Compare(s1, s2);
            if ((result == -1) && unlikely(PyErr_Occurred()))
                return -1;
            return (equals == Py_EQ) ? (result == 0) : (result != 0);
        }
    } else if ((s1 == Py_None) & PyUnicode_CheckExact(s2)) {
        return (equals == Py_NE);
    } else if ((s2 == Py_None) & PyUnicode_CheckExact(s1)) {
        return (equals == Py_NE);
    } else {
        int result;
        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
        if (!py_result)
            return -1;
        result = __Pyx_PyObject_IsTrue(py_result);
        Py_DECREF(py_result);
        return result;
    }
}

static CYTHON_INLINE MPI_Aint __Pyx_PyInt_from_py_MPI_Aint(PyObject* x) {
    const MPI_Aint neg_one = (MPI_Aint)-1, const_zero = (MPI_Aint)0;
    const int is_unsigned = const_zero < neg_one;
    if (sizeof(MPI_Aint) == sizeof(char)) {
        if (is_unsigned)
            return (MPI_Aint)__Pyx_PyInt_AsUnsignedChar(x);
        else
            return (MPI_Aint)__Pyx_PyInt_AsSignedChar(x);
    } else if (sizeof(MPI_Aint) == sizeof(short)) {
        if (is_unsigned)
            return (MPI_Aint)__Pyx_PyInt_AsUnsignedShort(x);
        else
            return (MPI_Aint)__Pyx_PyInt_AsSignedShort(x);
    } else if (sizeof(MPI_Aint) == sizeof(int)) {
        if (is_unsigned)
            return (MPI_Aint)__Pyx_PyInt_AsUnsignedInt(x);
        else
            return (MPI_Aint)__Pyx_PyInt_AsSignedInt(x);
    } else if (sizeof(MPI_Aint) == sizeof(long)) {
        if (is_unsigned)
            return (MPI_Aint)__Pyx_PyInt_AsUnsignedLong(x);
        else
            return (MPI_Aint)__Pyx_PyInt_AsSignedLong(x);
    } else if (sizeof(MPI_Aint) == sizeof(PY_LONG_LONG)) {
        if (is_unsigned)
            return (MPI_Aint)__Pyx_PyInt_AsUnsignedLongLong(x);
        else
            return (MPI_Aint)__Pyx_PyInt_AsSignedLongLong(x);
    }  else {
        MPI_Aint val;
        PyObject *v = __Pyx_PyNumber_Int(x);
        #if PY_VERSION_HEX < 0x03000000
        if (likely(v) && !PyLong_Check(v)) {
            PyObject *tmp = v;
            v = PyNumber_Long(tmp);
            Py_DECREF(tmp);
        }
        #endif
        if (likely(v)) {
            int one = 1; int is_little = (int)*(unsigned char *)&one;
            unsigned char *bytes = (unsigned char *)&val;
            int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                          bytes, sizeof(val),
                                          is_little, !is_unsigned);
            Py_DECREF(v);
            if (likely(!ret))
                return val;
        }
        return (MPI_Aint)-1;
    }
}

static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_MPI_Fint(MPI_Fint val) {
    const MPI_Fint neg_one = (MPI_Fint)-1, const_zero = (MPI_Fint)0;
    const int is_unsigned = const_zero < neg_one;
    if ((sizeof(MPI_Fint) == sizeof(char))  ||
        (sizeof(MPI_Fint) == sizeof(short))) {
        return PyInt_FromLong((long)val);
    } else if ((sizeof(MPI_Fint) == sizeof(int)) ||
               (sizeof(MPI_Fint) == sizeof(long))) {
        if (is_unsigned)
            return PyLong_FromUnsignedLong((unsigned long)val);
        else
            return PyInt_FromLong((long)val);
    } else if (sizeof(MPI_Fint) == sizeof(PY_LONG_LONG)) {
        if (is_unsigned)
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
        else
            return PyLong_FromLongLong((PY_LONG_LONG)val);
    } else {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        return _PyLong_FromByteArray(bytes, sizeof(MPI_Fint),
                                     little, !is_unsigned);
    }
}

static CYTHON_INLINE MPI_Fint __Pyx_PyInt_from_py_MPI_Fint(PyObject* x) {
    const MPI_Fint neg_one = (MPI_Fint)-1, const_zero = (MPI_Fint)0;
    const int is_unsigned = const_zero < neg_one;
    if (sizeof(MPI_Fint) == sizeof(char)) {
        if (is_unsigned)
            return (MPI_Fint)__Pyx_PyInt_AsUnsignedChar(x);
        else
            return (MPI_Fint)__Pyx_PyInt_AsSignedChar(x);
    } else if (sizeof(MPI_Fint) == sizeof(short)) {
        if (is_unsigned)
            return (MPI_Fint)__Pyx_PyInt_AsUnsignedShort(x);
        else
            return (MPI_Fint)__Pyx_PyInt_AsSignedShort(x);
    } else if (sizeof(MPI_Fint) == sizeof(int)) {
        if (is_unsigned)
            return (MPI_Fint)__Pyx_PyInt_AsUnsignedInt(x);
        else
            return (MPI_Fint)__Pyx_PyInt_AsSignedInt(x);
    } else if (sizeof(MPI_Fint) == sizeof(long)) {
        if (is_unsigned)
            return (MPI_Fint)__Pyx_PyInt_AsUnsignedLong(x);
        else
            return (MPI_Fint)__Pyx_PyInt_AsSignedLong(x);
    } else if (sizeof(MPI_Fint) == sizeof(PY_LONG_LONG)) {
        if (is_unsigned)
            return (MPI_Fint)__Pyx_PyInt_AsUnsignedLongLong(x);
        else
            return (MPI_Fint)__Pyx_PyInt_AsSignedLongLong(x);
    }  else {
        MPI_Fint val;
        PyObject *v = __Pyx_PyNumber_Int(x);
        #if PY_VERSION_HEX < 0x03000000
        if (likely(v) && !PyLong_Check(v)) {
            PyObject *tmp = v;
            v = PyNumber_Long(tmp);
            Py_DECREF(tmp);
        }
        #endif
        if (likely(v)) {
            int one = 1; int is_little = (int)*(unsigned char *)&one;
            unsigned char *bytes = (unsigned char *)&val;
            int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                          bytes, sizeof(val),
                                          is_little, !is_unsigned);
            Py_DECREF(v);
            if (likely(!ret))
                return val;
        }
        return (MPI_Fint)-1;
    }
}

static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_MPI_Offset(MPI_Offset val) {
    const MPI_Offset neg_one = (MPI_Offset)-1, const_zero = (MPI_Offset)0;
    const int is_unsigned = const_zero < neg_one;
    if ((sizeof(MPI_Offset) == sizeof(char))  ||
        (sizeof(MPI_Offset) == sizeof(short))) {
        return PyInt_FromLong((long)val);
    } else if ((sizeof(MPI_Offset) == sizeof(int)) ||
               (sizeof(MPI_Offset) == sizeof(long))) {
        if (is_unsigned)
            return PyLong_FromUnsignedLong((unsigned long)val);
        else
            return PyInt_FromLong((long)val);
    } else if (sizeof(MPI_Offset) == sizeof(PY_LONG_LONG)) {
        if (is_unsigned)
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
        else
            return PyLong_FromLongLong((PY_LONG_LONG)val);
    } else {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        return _PyLong_FromByteArray(bytes, sizeof(MPI_Offset),
                                     little, !is_unsigned);
    }
}

static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(unsigned char) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(unsigned char)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to unsigned char" :
                    "value too large to convert to unsigned char");
            }
            return (unsigned char)-1;
        }
        return (unsigned char)val;
    }
    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
}

static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(unsigned short) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(unsigned short)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to unsigned short" :
                    "value too large to convert to unsigned short");
            }
            return (unsigned short)-1;
        }
        return (unsigned short)val;
    }
    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
}

static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(unsigned int) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(unsigned int)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to unsigned int" :
                    "value too large to convert to unsigned int");
            }
            return (unsigned int)-1;
        }
        return (unsigned int)val;
    }
    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
}

static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
    const char neg_one = (char)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(char) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(char)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to char" :
                    "value too large to convert to char");
            }
            return (char)-1;
        }
        return (char)val;
    }
    return (char)__Pyx_PyInt_AsLong(x);
}

static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
    const short neg_one = (short)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(short) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(short)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to short" :
                    "value too large to convert to short");
            }
            return (short)-1;
        }
        return (short)val;
    }
    return (short)__Pyx_PyInt_AsLong(x);
}

static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
    const int neg_one = (int)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(int) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(int)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to int" :
                    "value too large to convert to int");
            }
            return (int)-1;
        }
        return (int)val;
    }
    return (int)__Pyx_PyInt_AsLong(x);
}

static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
    const signed char neg_one = (signed char)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(signed char) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(signed char)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to signed char" :
                    "value too large to convert to signed char");
            }
            return (signed char)-1;
        }
        return (signed char)val;
    }
    return (signed char)__Pyx_PyInt_AsSignedLong(x);
}

static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
    const signed short neg_one = (signed short)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(signed short) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(signed short)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to signed short" :
                    "value too large to convert to signed short");
            }
            return (signed short)-1;
        }
        return (signed short)val;
    }
    return (signed short)__Pyx_PyInt_AsSignedLong(x);
}

static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
    const signed int neg_one = (signed int)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(signed int) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(signed int)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to signed int" :
                    "value too large to convert to signed int");
            }
            return (signed int)-1;
        }
        return (signed int)val;
    }
    return (signed int)__Pyx_PyInt_AsSignedLong(x);
}

static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
    const int neg_one = (int)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(int) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(int)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to int" :
                    "value too large to convert to int");
            }
            return (int)-1;
        }
        return (int)val;
    }
    return (int)__Pyx_PyInt_AsLong(x);
}

static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_VERSION_HEX < 0x03000000
    if (likely(PyInt_Check(x))) {
        long val = PyInt_AS_LONG(x);
        if (is_unsigned && unlikely(val < 0)) {
            PyErr_SetString(PyExc_OverflowError,
                            "can't convert negative value to unsigned long");
            return (unsigned long)-1;
        }
        return (unsigned long)val;
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
            if (unlikely(Py_SIZE(x) < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to unsigned long");
                return (unsigned long)-1;
            }
            return (unsigned long)PyLong_AsUnsignedLong(x);
        } else {
            return (unsigned long)PyLong_AsLong(x);
        }
    } else {
        unsigned long val;
        PyObject *tmp = __Pyx_PyNumber_Int(x);
        if (!tmp) return (unsigned long)-1;
        val = __Pyx_PyInt_AsUnsignedLong(tmp);
        Py_DECREF(tmp);
        return val;
    }
}

static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_VERSION_HEX < 0x03000000
    if (likely(PyInt_Check(x))) {
        long val = PyInt_AS_LONG(x);
        if (is_unsigned && unlikely(val < 0)) {
            PyErr_SetString(PyExc_OverflowError,
                            "can't convert negative value to unsigned PY_LONG_LONG");
            return (unsigned PY_LONG_LONG)-1;
        }
        return (unsigned PY_LONG_LONG)val;
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
            if (unlikely(Py_SIZE(x) < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to unsigned PY_LONG_LONG");
                return (unsigned PY_LONG_LONG)-1;
            }
            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
        } else {
            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
        }
    } else {
        unsigned PY_LONG_LONG val;
        PyObject *tmp = __Pyx_PyNumber_Int(x);
        if (!tmp) return (unsigned PY_LONG_LONG)-1;
        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
        Py_DECREF(tmp);
        return val;
    }
}

static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
    const long neg_one = (long)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_VERSION_HEX < 0x03000000
    if (likely(PyInt_Check(x))) {
        long val = PyInt_AS_LONG(x);
        if (is_unsigned && unlikely(val < 0)) {
            PyErr_SetString(PyExc_OverflowError,
                            "can't convert negative value to long");
            return (long)-1;
        }
        return (long)val;
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
            if (unlikely(Py_SIZE(x) < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to long");
                return (long)-1;
            }
            return (long)PyLong_AsUnsignedLong(x);
        } else {
            return (long)PyLong_AsLong(x);
        }
    } else {
        long val;
        PyObject *tmp = __Pyx_PyNumber_Int(x);
        if (!tmp) return (long)-1;
        val = __Pyx_PyInt_AsLong(tmp);
        Py_DECREF(tmp);
        return val;
    }
}

static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_VERSION_HEX < 0x03000000
    if (likely(PyInt_Check(x))) {
        long val = PyInt_AS_LONG(x);
        if (is_unsigned && unlikely(val < 0)) {
            PyErr_SetString(PyExc_OverflowError,
                            "can't convert negative value to PY_LONG_LONG");
            return (PY_LONG_LONG)-1;
        }
        return (PY_LONG_LONG)val;
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
            if (unlikely(Py_SIZE(x) < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to PY_LONG_LONG");
                return (PY_LONG_LONG)-1;
            }
            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
        } else {
            return (PY_LONG_LONG)PyLong_AsLongLong(x);
        }
    } else {
        PY_LONG_LONG val;
        PyObject *tmp = __Pyx_PyNumber_Int(x);
        if (!tmp) return (PY_LONG_LONG)-1;
        val = __Pyx_PyInt_AsLongLong(tmp);
        Py_DECREF(tmp);
        return val;
    }
}

static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
    const signed long neg_one = (signed long)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_VERSION_HEX < 0x03000000
    if (likely(PyInt_Check(x))) {
        long val = PyInt_AS_LONG(x);
        if (is_unsigned && unlikely(val < 0)) {
            PyErr_SetString(PyExc_OverflowError,
                            "can't convert negative value to signed long");
            return (signed long)-1;
        }
        return (signed long)val;
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
            if (unlikely(Py_SIZE(x) < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to signed long");
                return (signed long)-1;
            }
            return (signed long)PyLong_AsUnsignedLong(x);
        } else {
            return (signed long)PyLong_AsLong(x);
        }
    } else {
        signed long val;
        PyObject *tmp = __Pyx_PyNumber_Int(x);
        if (!tmp) return (signed long)-1;
        val = __Pyx_PyInt_AsSignedLong(tmp);
        Py_DECREF(tmp);
        return val;
    }
}

static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_VERSION_HEX < 0x03000000
    if (likely(PyInt_Check(x))) {
        long val = PyInt_AS_LONG(x);
        if (is_unsigned && unlikely(val < 0)) {
            PyErr_SetString(PyExc_OverflowError,
                            "can't convert negative value to signed PY_LONG_LONG");
            return (signed PY_LONG_LONG)-1;
        }
        return (signed PY_LONG_LONG)val;
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
            if (unlikely(Py_SIZE(x) < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to signed PY_LONG_LONG");
                return (signed PY_LONG_LONG)-1;
            }
            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
        } else {
            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
        }
    } else {
        signed PY_LONG_LONG val;
        PyObject *tmp = __Pyx_PyNumber_Int(x);
        if (!tmp) return (signed PY_LONG_LONG)-1;
        val = __Pyx_PyInt_AsSignedLongLong(tmp);
        Py_DECREF(tmp);
        return val;
    }
}

static void __Pyx_WriteUnraisable(const char *name, int clineno,
                                  int lineno, const char *filename) {
    PyObject *old_exc, *old_val, *old_tb;
    PyObject *ctx;
    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
    #if PY_MAJOR_VERSION < 3
    ctx = PyString_FromString(name);
    #else
    ctx = PyUnicode_FromString(name);
    #endif
    __Pyx_ErrRestore(old_exc, old_val, old_tb);
    if (!ctx) {
        PyErr_WriteUnraisable(Py_None);
    } else {
        PyErr_WriteUnraisable(ctx);
        Py_DECREF(ctx);
    }
}

static CYTHON_INLINE MPI_Offset __Pyx_PyInt_from_py_MPI_Offset(PyObject* x) {
    const MPI_Offset neg_one = (MPI_Offset)-1, const_zero = (MPI_Offset)0;
    const int is_unsigned = const_zero < neg_one;
    if (sizeof(MPI_Offset) == sizeof(char)) {
        if (is_unsigned)
            return (MPI_Offset)__Pyx_PyInt_AsUnsignedChar(x);
        else
            return (MPI_Offset)__Pyx_PyInt_AsSignedChar(x);
    } else if (sizeof(MPI_Offset) == sizeof(short)) {
        if (is_unsigned)
            return (MPI_Offset)__Pyx_PyInt_AsUnsignedShort(x);
        else
            return (MPI_Offset)__Pyx_PyInt_AsSignedShort(x);
    } else if (sizeof(MPI_Offset) == sizeof(int)) {
        if (is_unsigned)
            return (MPI_Offset)__Pyx_PyInt_AsUnsignedInt(x);
        else
            return (MPI_Offset)__Pyx_PyInt_AsSignedInt(x);
    } else if (sizeof(MPI_Offset) == sizeof(long)) {
        if (is_unsigned)
            return (MPI_Offset)__Pyx_PyInt_AsUnsignedLong(x);
        else
            return (MPI_Offset)__Pyx_PyInt_AsSignedLong(x);
    } else if (sizeof(MPI_Offset) == sizeof(PY_LONG_LONG)) {
        if (is_unsigned)
            return (MPI_Offset)__Pyx_PyInt_AsUnsignedLongLong(x);
        else
            return (MPI_Offset)__Pyx_PyInt_AsSignedLongLong(x);
    }  else {
        MPI_Offset val;
        PyObject *v = __Pyx_PyNumber_Int(x);
        #if PY_VERSION_HEX < 0x03000000
        if (likely(v) && !PyLong_Check(v)) {
            PyObject *tmp = v;
            v = PyNumber_Long(tmp);
            Py_DECREF(tmp);
        }
        #endif
        if (likely(v)) {
            int one = 1; int is_little = (int)*(unsigned char *)&one;
            unsigned char *bytes = (unsigned char *)&val;
            int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                          bytes, sizeof(val),
                                          is_little, !is_unsigned);
            Py_DECREF(v);
            if (likely(!ret))
                return val;
        }
        return (MPI_Offset)-1;
    }
}

static int __Pyx_check_binary_version(void) {
    char ctversion[4], rtversion[4];
    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
        char message[200];
        PyOS_snprintf(message, sizeof(message),
                      "compiletime version %s of module '%.100s' "
                      "does not match runtime version %s",
                      ctversion, __Pyx_MODULE_NAME, rtversion);
        #if PY_VERSION_HEX < 0x02050000
        return PyErr_Warn(NULL, message);
        #else
        return PyErr_WarnEx(NULL, message, 1);
        #endif
    }
    return 0;
}

static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) {
    PyObject *d = 0;
    PyObject *cobj = 0;
    union {
        void (*fp)(void);
        void *p;
    } tmp;

    d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__");
    if (!d) {
        PyErr_Clear();
        d = PyDict_New();
        if (!d)
            goto bad;
        Py_INCREF(d);
        if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0)
            goto bad;
    }
    tmp.fp = f;
#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0)
    cobj = PyCapsule_New(tmp.p, sig, 0);
#else
    cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0);
#endif
    if (!cobj)
        goto bad;
    if (PyDict_SetItemString(d, name, cobj) < 0)
        goto bad;
    Py_DECREF(cobj);
    Py_DECREF(d);
    return 0;
bad:
    Py_XDECREF(cobj);
    Py_XDECREF(d);
    return -1;
}

static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0)
    PyObject *ob = PyCapsule_New(vtable, 0, 0);
#else
    PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
#endif
    if (!ob)
        goto bad;
    if (PyDict_SetItemString(dict, "__pyx_vtable__", ob) < 0)
        goto bad;
    Py_DECREF(ob);
    return 0;
bad:
    Py_XDECREF(ob);
    return -1;
}

#ifndef __PYX_HAVE_RT_ImportModule
#define __PYX_HAVE_RT_ImportModule
static PyObject *__Pyx_ImportModule(const char *name) {
    PyObject *py_name = 0;
    PyObject *py_module = 0;

    #if PY_MAJOR_VERSION < 3
    py_name = PyString_FromString(name);
    #else
    py_name = PyUnicode_FromString(name);
    #endif
    if (!py_name)
        goto bad;
    py_module = PyImport_Import(py_name);
    Py_DECREF(py_name);
    return py_module;
bad:
    Py_XDECREF(py_name);
    return 0;
}
#endif

#include "compile.h"
#include "frameobject.h"
#include "traceback.h"

static void __Pyx_AddTraceback(const char *funcname, int __pyx_clineno,
                               int __pyx_lineno, const char *__pyx_filename) {
    PyObject *py_srcfile = 0;
    PyObject *py_funcname = 0;
    PyObject *py_globals = 0;
    PyCodeObject *py_code = 0;
    PyFrameObject *py_frame = 0;

    #if PY_MAJOR_VERSION < 3
    py_srcfile = PyString_FromString(__pyx_filename);
    #else
    py_srcfile = PyUnicode_FromString(__pyx_filename);
    #endif
    if (!py_srcfile) goto bad;
    if (__pyx_clineno) {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno);
        #else
        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno);
        #endif
    }
    else {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromString(funcname);
        #else
        py_funcname = PyUnicode_FromString(funcname);
        #endif
    }
    if (!py_funcname) goto bad;
    py_globals = PyModule_GetDict(__pyx_m);
    if (!py_globals) goto bad;
    py_code = PyCode_New(
        0,            /*int argcount,*/
        #if PY_MAJOR_VERSION >= 3
        0,            /*int kwonlyargcount,*/
        #endif
        0,            /*int nlocals,*/
        0,            /*int stacksize,*/
        0,            /*int flags,*/
        __pyx_empty_bytes, /*PyObject *code,*/
        __pyx_empty_tuple,  /*PyObject *consts,*/
        __pyx_empty_tuple,  /*PyObject *names,*/
        __pyx_empty_tuple,  /*PyObject *varnames,*/
        __pyx_empty_tuple,  /*PyObject *freevars,*/
        __pyx_empty_tuple,  /*PyObject *cellvars,*/
        py_srcfile,   /*PyObject *filename,*/
        py_funcname,  /*PyObject *name,*/
        __pyx_lineno,   /*int firstlineno,*/
        __pyx_empty_bytes  /*PyObject *lnotab*/
    );
    if (!py_code) goto bad;
    py_frame = PyFrame_New(
        PyThreadState_GET(), /*PyThreadState *tstate,*/
        py_code,             /*PyCodeObject *code,*/
        py_globals,          /*PyObject *globals,*/
        0                    /*PyObject *locals*/
    );
    if (!py_frame) goto bad;
    py_frame->f_lineno = __pyx_lineno;
    PyTraceBack_Here(py_frame);
bad:
    Py_XDECREF(py_srcfile);
    Py_XDECREF(py_funcname);
    Py_XDECREF(py_code);
    Py_XDECREF(py_frame);
}

static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
    while (t->p) {
        #if PY_MAJOR_VERSION < 3
        if (t->is_unicode) {
            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
        } else if (t->intern) {
            *t->p = PyString_InternFromString(t->s);
        } else {
            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
        }
        #else  /* Python 3+ has unicode identifiers */
        if (t->is_unicode | t->is_str) {
            if (t->intern) {
                *t->p = PyUnicode_InternFromString(t->s);
            } else if (t->encoding) {
                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
            } else {
                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
            }
        } else {
            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
        }
        #endif
        if (!*t->p)
            return -1;
        ++t;
    }
    return 0;
}

/* Type Conversion Functions */

static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
   int is_true = x == Py_True;
   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
   else return PyObject_IsTrue(x);
}

static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
  PyNumberMethods *m;
  const char *name = NULL;
  PyObject *res = NULL;
#if PY_VERSION_HEX < 0x03000000
  if (PyInt_Check(x) || PyLong_Check(x))
#else
  if (PyLong_Check(x))
#endif
    return Py_INCREF(x), x;
  m = Py_TYPE(x)->tp_as_number;
#if PY_VERSION_HEX < 0x03000000
  if (m && m->nb_int) {
    name = "int";
    res = PyNumber_Int(x);
  }
  else if (m && m->nb_long) {
    name = "long";
    res = PyNumber_Long(x);
  }
#else
  if (m && m->nb_int) {
    name = "int";
    res = PyNumber_Long(x);
  }
#endif
  if (res) {
#if PY_VERSION_HEX < 0x03000000
    if (!PyInt_Check(res) && !PyLong_Check(res)) {
#else
    if (!PyLong_Check(res)) {
#endif
      PyErr_Format(PyExc_TypeError,
                   "__%s__ returned non-%s (type %.200s)",
                   name, name, Py_TYPE(res)->tp_name);
      Py_DECREF(res);
      return NULL;
    }
  }
  else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_TypeError,
                    "an integer is required");
  }
  return res;
}

static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
  Py_ssize_t ival;
  PyObject* x = PyNumber_Index(b);
  if (!x) return -1;
  ival = PyInt_AsSsize_t(x);
  Py_DECREF(x);
  return ival;
}

static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
#if PY_VERSION_HEX < 0x02050000
   if (ival <= LONG_MAX)
       return PyInt_FromLong((long)ival);
   else {
       unsigned char *bytes = (unsigned char *) &ival;
       int one = 1; int little = (int)*(unsigned char*)&one;
       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
   }
#else
   return PyInt_FromSize_t(ival);
#endif
}

static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
       return (size_t)-1;
   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
       PyErr_SetString(PyExc_OverflowError,
                       "value too large to convert to size_t");
       return (size_t)-1;
   }
   return (size_t)val;
}


#endif /* Py_PYTHON_H */
